diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000000..868cd1261c --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,17 @@ +module.exports = { + root: true, + overrides: [ + { + files: ["**/*.{js,jsx,cjs,mjs,ts,tsx,cts,mts}"], + extends: ["plugin:tailwindcss/recommended"], + parser: "@typescript-eslint/parser", + parserOptions: { + sourceType: "module", + ecmaVersion: "latest", + }, + rules: { + "tailwindcss/classnames-order": "off", + }, + }, + ], +} diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000000..13ade362dc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,32 @@ +--- +name: "Bug Report" +about: Notice something off? Tell us about it here. +labels: bug +--- + + + +### Description + + + +### Steps to Reproduce + + + +### Expected Result + + + +### Actual Result + + + +### Additional Context + + diff --git a/.github/ISSUE_TEMPLATE/code-changes.md b/.github/ISSUE_TEMPLATE/code-changes.md new file mode 100644 index 0000000000..a8e5849bd3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/code-changes.md @@ -0,0 +1,23 @@ +--- +name: "Code Changes" +about: Tell us more about how you want to improve graphql.org +labels: enhancement +--- + + + +### Description + + + +### Motivation + + + +### Collaboration + + + +### Additional Context + + diff --git a/.github/ISSUE_TEMPLATE/new-faq-question.md b/.github/ISSUE_TEMPLATE/new-faq-question.md new file mode 100644 index 0000000000..d596fb62c0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new-faq-question.md @@ -0,0 +1,23 @@ +--- +name: "New FAQ Question" +about: Propose a new question to add to our FAQ page +labels: faq +--- + + + +### Question + + + +### Proposed answer + + + +### Collaboration + + + +### Additional Context + + diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000000..d45f50dd58 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,7 @@ +--- +name: "Question" +about: Ask us anything! +labels: question +--- + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..8c623d5fb9 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ + + +Closes # + +## Description + + diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000000..6ecc928455 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,20 @@ +name: CI +on: pull_request + +jobs: + tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: "18.15.0" + + - run: yarn install + + # Verify it compiles + - run: yarn build + + # Doesn't pass ATM + # - run: yarn tsc --noEmit diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml new file mode 100644 index 0000000000..258f4125a7 --- /dev/null +++ b/.github/workflows/prettier.yml @@ -0,0 +1,13 @@ +name: Prettier Check + +on: pull_request + +jobs: + prettier-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install Dependencies + run: yarn + - name: Run Prettier Check + run: yarn format:check diff --git a/.gitignore b/.gitignore index e5827081d7..84c2d8acd5 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,11 @@ yarn-error.log .pnp.js # Yarn Integrity file .yarn-integrity + +# Swap files +*.swp + +# Codegen stuff +src/__generated__/ + +.idea/ diff --git a/.node-version b/.node-version new file mode 100644 index 0000000000..3c79f30eca --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +18.16.0 \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 33d2cfa3f6..7b5dccea1d 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { "arrowParens": "avoid", - "semi": false -} + "semi": false, + "singleQuote": false +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..28da1c5161 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,166 @@ +# Contributing to graphql.org + +> This repository is governed by the [GraphQL Code of Conduct](https://graphql.org/codeofconduct/). By contributing, you agree to abide by its terms. + +Thanks for taking the time to contribute! The GraphQL community is great because of people like you 🎉 + +There are many ways to get involved. Follow this guide and feel free to [reach out if you have questions](#asking-questions). + +## What's in this document + +- [Development guide](#development-guide) + - [Running the site locally](#running-the-site-locally) + - [Branching](#branching) + - [Project structure](#project-structure) + - [Publishing the updated site](#publishing-the-updated-site) +- [Updating content](#updating-content) + - [Fix a typo, code sample bug, or formatting](#fix-a-typo-code-sample-bug-or-formatting) + - [Add a library or tool to the Code page](#add-a-library-or-tool-to-the-code-page) + - [Add a resource to the Community page](#add-a-resource-to-the-community-page) + - [Add a question to the FAQ](#add-a-question-to-the-faq) + - [Write a new section or guide](#write-a-new-section-or-guide) +- [Making changes to the code](#making-changes-to-the-code) + - [Browser support](#browser-support) +- [Contributing something else](#contributing-something-else) +- [Asking questions](#asking-questions) + +## Development guide + +### Running the site locally + +First, clone this repository and move into the directory: + +```bash +git clone https://github.com/graphql/graphql.github.io.git +cd graphql.github.io +``` + +Then, use [Yarn](https://yarnpkg.com/getting-started/install) to install and load all the necessary dependencies: + +```bash +yarn +``` + +> Note: [Yarn is currently the only way to run the site locally](https://github.com/graphql/graphql.github.io/issues/946). + +Run the `start` script to launch the server: + +```bash +yarn start +``` + +Finally, open [http://localhost:8000](http://localhost:8000) to view it in the browser. + +The GraphQL website is built with [Gatsby](https://www.gatsbyjs.com/docs/). This means that a hot-reloading development environment will be accessible by default. + +### Branching + +Active development for graphql.org happens on the `source` branch. Be sure to create any new branches or direct any pull requests back to `source`. + +### Project structure + +- `static`: Files that will be copied directly to `public`. +- `public`: Output files that will be served by a static HTTP server. +- `src`: Markdown and the TypeScript/JavaScript files used to generate the website. + - `assets`: All the [`less`](http://lesscss.org/) files that contain stylesheets. + - `components` and `Containers`: React components used for layouts and pages. + - `content`: Markdown files with the content of pages. + - `templates`: Layout templates. + - `utils`: Helper functions. + +### Publishing the updated site + +Your changes will be merged into the `source` branch. Then, the CI will automatically publish a new version of http://graphql.org via [Netlify](https://docs.netlify.com/). + +## Updating content + +### Fix a typo, code sample bug, or formatting + +If you notice something wrong in the text or code samples, please follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls) with your fix. + +All of the content on graphql.org is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a library, tool, or service to the Code page + +The [Code page](https://graphql.org/code/) is a collection of libraries, tools, and services built for GraphQL. + +#### General guidelines + +**Adding a resource:** + +- With rare exceptions, any pull request that adds a new library, tool, or service to the Code page will be accepted. +- Any library should include a few paragraphs describing the usage and offering people a chance to grok the project priorities. +- If there isn't a section already for your programming language, please add it. + +If it isn't a library, tool, or service - then it could go on the [Community page](#add-a-resource-to-the-community-page). If you aren't sure where your resource would fit, you can [open an issue](https://github.com/graphql/graphql.github.io/issues/new) and ask. + +**Removing a resource:** + +- Services that don't work anymore +- Code repositories that are archived +- Projects declared to be abandoned by their maintainers +- Any link that 404s + +We rely on these concrete signals before removing a resource. Even if a project hasn't been released in a few years, that doesn't mean that it's not working. + +#### Workflow + +To add or remove a resource to this page, follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls). + +The content for this page is located in [various directories under `src/content/code`](./src/). Everything is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a resource to the Community page + +The [Community page](https://graphql.org/community/) highlights resources and groups that help people get more involved with GraphQL. + +To add something to this page, follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls). + +The content for this page is located in a [directory under `src/content/community`](./src/). Everything is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a question to the FAQ + +Our [Frequently Asked Questions (FAQ) page](https://graphql.org/faq/) is designed to help answer questions from the community. This page is still in development, so if you think there's a question missing - please [open an issue](https://github.com/graphql/graphql.github.io/issues/new)! It'd be great if you could include both the question and a proposed answer outline in the issue description. + +Once you have approval from a maintainer, use the [development guide](#development-guide) to add your question and answer. The content for the FAQ is located in [`src/content/faq`](./src/content/faq/). Each section has its own [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/) file. + +> Note: All answers in this section should be vendor-neutral and accessible to GraphQL users of all levels. + +When your answer is ready, [open a pull request](https://github.com/graphql/graphql.github.io/pulls/). + +### Write a new section or guide + +There are still several [Best Practices guides that no one has written](https://github.com/graphql/graphql.github.io/issues/41) yet. If you want to take one of these, comment on [the original issue](https://github.com/graphql/graphql.github.io/issues/41) and mention which topic you'll work on. + +Then, use our [development guide](#development-guide) to determine where your new page best fits. Our documentation is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +Once it's ready for review, please [open a pull request](https://github.com/graphql/graphql.github.io/pulls/). + +## Making changes to the code + +Before diving into any code updates, please [open an issue](https://github.com/graphql/graphql.github.io/issues/new) describing the change(s) you'd like to make. + +If you're working off an [existing issue](https://github.com/graphql/graphql.github.io/issues/), follow our [development guide](#development-guide) to make your changes. Once it's ready for review, please [open a pull request](https://github.com/graphql/graphql.github.io/pulls/) and reference the original issue. + +### Browser support + +We aim to support the latest stable versions of Chrome, Edge, Firefox, Safari, and Safari on mobile. + +## Contributing something else + +Interested in adding something not covered in this guide? Please [open an issue](https://github.com/graphql/graphql.github.io/issues/new) and tell us all about your idea. + +## Asking questions + +If you run into any problems or have questions while contributing, you're always welcome to [open an issue](https://github.com/graphql/graphql.github.io/issues/new). + +# Opening a PR to contribute your code + +You can also ping our team in the [#website channel on the GraphQL Slack](https://graphql.slack.com/messages/website/). [Get your invite here!](https://graphql-slack.herokuapp.com/) + +This repository is managed by EasyCLA. Project participants must sign the free ([GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/). + +To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you. + +You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org). + +If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join). diff --git a/LICENSE b/LICENSE index 4e061975a4..7bbf892a04 100644 --- a/LICENSE +++ b/LICENSE @@ -1,26 +1,21 @@ -LICENSE AGREEMENT For graphql.org software +MIT License -Facebook, Inc. (“Facebook”) owns all right, title and interest, including all -intellectual property and other proprietary rights, in and to the graphql.org -software. Subject to your compliance with these terms, you are hereby granted a -non-exclusive, worldwide, royalty-free copyright license to (1) use and copy the -graphql.org software; and (2) reproduce and distribute the graphql.org software -as part of your own software (“Your Software”). Facebook reserves all rights not -expressly granted to you in this license agreement. +Copyright (c) GraphQL Contributors -THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED. IN NO -EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICES, DIRECTORS OR EMPLOYEES BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -THE USE OF THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +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: -You will include in Your Software (e.g., in the file(s), documentation or other -materials accompanying your software): (1) the disclaimer set forth above; (2) -this sentence; and (3) the following copyright notice: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -Copyright (c) 2015, Facebook, Inc. All rights reserved. +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/README.md b/README.md index bca1cb5b67..f214113d6f 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,31 @@ # Source Repository for graphql.org -This repository contains the source code of https://graphql.org website. -# Contributing +This repository contains the source code for the [GraphQL website](https://graphql.org). -Organization gh-pages deploy the `master` branch, so active development occurs -on this `source` branch. +> You can find more discussions on the [#website channel on the GraphQL Slack](https://graphql.slack.com/messages/website/). [Get your invite here!](https://graphql-slack.herokuapp.com/) -### Making changes +A brief overview: **GraphQL** is a query language for APIs and a runtime for fulfilling those queries with your existing data. It provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need, and enables powerful developer tools. The [specification](https://spec.graphql.org/) is open source and governed by the [GraphQL Foundation](https://foundation.graphql.org/). -The first time, get all the dependencies loaded via +## Documentation -`$ npm install` or `$ yarn install` +- [Site](https://graphql.org/) +- [Reference documentation](https://graphql.org/learn/) +- [Language support, tools, and services](https://graphql.org/code/) +- [Frequently Asked Questions (FAQ)](https://graphql.org/faq/) +- [Community resources](https://graphql.org/community/) -Then, run the server via +## Deployment -`$ npm start` or `$ yarn start` +The site is deployed via Netlify on merges to the source branch, you can see the [builds here](https://app.netlify.com/teams/graphql-org/builds). -Open [http://localhost:8000](http://localhost:8000) to view it in the browser. -Anytime you make some changes, refresh the page to see the updates. +## How to contribute -### Folder structure +Check out our [contributing guide](./CONTRIBUTING.md) for detailed instructions on how to make changes to the GraphQL website 🎉 -- `static` folder contains the files that will be copied directly to `public` folder which will contain the output files to be served by a static HTTP server. +This repository is managed by EasyCLA. Project participants must sign the free ([GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/). -- `src` folder contains markdown and TypeScript/JavaScript files used to generate the website; -- - `assets` folder contains `less` files and those files contain stylesheets -- - `components` and `Containers` folders contains React components that are used in layouts and pages -- - `content` folder contains markdown files for the content of pages -- - `templates` contains the layout templates -- - `utils` contains helper functions +To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you. -### Publish the Website +You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org). -Once pushed to the `source` branch, CI will publish http://graphql.org +If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join). diff --git a/gatsby-config.js b/gatsby-config.ts similarity index 67% rename from gatsby-config.js rename to gatsby-config.ts index b81b012a09..d2ac4a8c5d 100644 --- a/gatsby-config.js +++ b/gatsby-config.ts @@ -1,14 +1,19 @@ -module.exports = { +import type { GatsbyConfig } from "gatsby" + +const config: GatsbyConfig = { siteMetadata: { - title: "A query language for your API", + title: "GraphQL", description: - "GraphQL provides a complete description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.", + "A query language for your API — GraphQL provides a complete description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.", siteUrl: "http://graphql.org/", }, - + graphqlTypegen: { + typesOutputPath: `src/__generated__/gatsby-types.d.ts`, + }, plugins: [ - "gatsby-plugin-react-helmet", - 'gatsby-plugin-anchor-links', + "gatsby-plugin-postcss", + "gatsby-plugin-svgr", + "gatsby-plugin-anchor-links", { resolve: "gatsby-source-filesystem", options: { @@ -16,7 +21,19 @@ module.exports = { path: `${__dirname}/src/content`, }, }, - `gatsby-transformer-remark`, + { + resolve: "gatsby-transformer-remark", + options: { + plugins: [ + { + resolve: "@weknow/gatsby-remark-twitter", + options: { + debug: true, + }, + }, + ], + }, + }, { resolve: `gatsby-plugin-webfonts`, options: { @@ -24,7 +41,7 @@ module.exports = { google: [ { family: `Rubik`, - variants: [`300`], + variants: [`300`, `400`, `500`, `700`], }, { family: `Roboto Mono`, @@ -32,14 +49,13 @@ module.exports = { }, { family: `Roboto`, - variants: [`300`], + variants: [`300`, `500`], }, ], }, }, }, `gatsby-plugin-less`, - `gatsby-plugin-react-helmet`, { resolve: `gatsby-plugin-google-analytics`, options: { @@ -75,11 +91,11 @@ module.exports = { author: byline, }) ), - query: ` + query: /* GraphQL */ ` { allMarkdownRemark( - filter: {frontmatter: {layout: {eq: "blog"}}}, - sort: { order: DESC, fields: [frontmatter___date] } + filter: { frontmatter: { layout: { eq: "blog" } } } + sort: { frontmatter: { date: DESC } } ) { edges { node { @@ -105,3 +121,5 @@ module.exports = { }, ], } + +export default config diff --git a/gatsby-node.js b/gatsby-node.js deleted file mode 100644 index 1f01018018..0000000000 --- a/gatsby-node.js +++ /dev/null @@ -1,197 +0,0 @@ -const path = require("path") - -exports.onCreatePage = async ({ page, actions }) => { - const { createPage, deletePage } = actions - deletePage(page) - createPage({ - ...page, - context: { - ...page.context, - sourcePath: path.relative(__dirname, page.componentPath), - }, - }) -} - -exports.createPages = async ({ graphql, actions }) => { - const { createPage } = actions - - const result = await graphql(/* GraphQL */ ` - query { - allMarkdownRemark { - edges { - node { - fileAbsolutePath - parent { - ... on File { - relativeDirectory - sourceInstanceName - } - } - frontmatter { - title - permalink - next - category - sublinks - sidebarTitle - date - } - id - } - } - } - } - `) - - const docTemplate = path.resolve("./src/templates/doc.tsx") - - if (result.errors) { - // eslint-disable-next-line no-console - console.error(result.errors) - throw result.errors - } - - const { edges } = result.data.allMarkdownRemark - - let sideBardata = {} - let pagesGroupedByFolder = {} - const allPages = [] - - await Promise.all( - edges.map(async ({ node }) => { - const { - frontmatter: { permalink, next, sidebarTitle }, - parent: { relativeDirectory, sourceInstanceName }, - } = node - - if (sourceInstanceName !== "content") { - return - } - - if (!pagesGroupedByFolder[relativeDirectory]) { - pagesGroupedByFolder = { - ...pagesGroupedByFolder, - [relativeDirectory]: [node], - } - } else { - pagesGroupedByFolder = { - ...pagesGroupedByFolder, - [relativeDirectory]: [ - ...pagesGroupedByFolder[relativeDirectory], - node, - ], - } - } - allPages.push({ - permalink, - relativeDirectory, - sidebarTitle, - nextPermalink: next, - sourcePath: path.relative(__dirname, node.fileAbsolutePath), - }) - }) - ) - - await Promise.all( - Object.entries(pagesGroupedByFolder).map(async ([folder, pages]) => { - let pagesByUrl = {} - let previousPagesMap = {} - let pagesByDate = pages.sort((a, b) => { - const aDate = new Date(a.frontmatter.date || Date.now()) - const bDate = new Date(b.frontmatter.date || Date.now()) - if (aDate > bDate) { - return -1 - } else if (aDate < bDate) { - return 1 - } - return 0 - }) - - await Promise.all( - pagesByDate.map(async page => { - const { - frontmatter: { permalink, next }, - } = page - if (next) { - previousPagesMap[next] = permalink - } - pagesByUrl[permalink] = page - }) - ) - - let firstPage = null - - await Promise.all( - pagesByDate.map(async page => { - const { - frontmatter: { permalink }, - } = page - - if (!previousPagesMap[permalink] && !firstPage) { - firstPage = page - return - } - }) - ) - - if (!firstPage) { - throw new Error(`First page not found in ${folder}`) - } - - let categoriesMap = {} - let currentCategory = null - - let page = firstPage - let i = 0 - while (page && i++ < 1000) { - const { frontmatter } = page - const { - category: definedCategory, - next: definedNextPageUrl, - } = frontmatter - let category = definedCategory || folder - if (!currentCategory || category !== currentCategory.name) { - if (currentCategory) { - if (!(currentCategory.name in categoriesMap)) { - categoriesMap[currentCategory.name] = currentCategory - } - } - currentCategory = { - name: category, - links: [], - } - } - currentCategory.links.push(page) - if (definedNextPageUrl) { - page = pagesByUrl[definedNextPageUrl] - } else { - page = pagesByDate[pagesByDate.indexOf(page) + 1] - } - if (currentCategory.links.includes(page)) { - page = null - } - } - - if (!(currentCategory.name in categoriesMap)) { - categoriesMap[currentCategory.name] = currentCategory - } - - sideBardata[folder] = Object.values(categoriesMap); - }) - ) - - await Promise.all( - allPages.map(async page => { - createPage({ - path: `${page.permalink}`, - component: docTemplate, - context: { - permalink: page.permalink, - nextPermalink: page.nextPermalink, - sideBarData: sideBardata[page.relativeDirectory], - sourcePath: page.sourcePath, - }, - }) - }) - ) -} diff --git a/gatsby-node.ts b/gatsby-node.ts new file mode 100644 index 0000000000..d2c6af4b3e --- /dev/null +++ b/gatsby-node.ts @@ -0,0 +1,376 @@ +import { GatsbyNode } from "gatsby" +import * as path from "path" +import { glob } from "glob" +import { updateCodeData } from "./scripts/update-code-data/update-code-data" +import { organizeCodeData } from "./scripts/update-code-data/organize-code-data" +import { sortCodeData } from "./scripts/update-code-data/sort-code-data" + +export const createSchemaCustomization: GatsbyNode["createSchemaCustomization"] = + async ({ actions }) => { + const gql = String.raw + const { createTypes } = actions + + createTypes(gql` + type BlogPost implements Node @childOf(types: ["MarkdownRemark"]) { + postId: String! + title: String! + tags: [String!]! + date: Date! @dateformat(formatString: "YYYY-MM-DD") + authors: [String!]! + guestBio: String + remark: MarkdownRemark! @link # backlink to the parent + } + `) + } + +// Transform nodes, each of logic inside here can be extracted to a separated plugin later. +export const onCreateNode: GatsbyNode["onCreateNode"] = async ({ + reporter, + node, + actions, + createNodeId, + createContentDigest, +}) => { + const { createNode, createParentChildLink } = actions + + // Derive content nodes from remark nodes + if ( + node.internal.type === "MarkdownRemark" && + node.frontmatter.layout === "blog" + ) { + const nodeId = createNodeId(`${node.id} >>> BlogPost`) + + const { permalink } = node.frontmatter + if (!permalink?.startsWith("/blog/")) { + reporter.panicOnBuild(`${permalink} is not valid permalink for blog post`) + return + } + + // It contains a kind of transform logic. However, those logics can be extracted to resolvers into ahead of sourcing (createTypes) + const blogPostContent = { + id: nodeId, + postId: permalink.replace("/blog/", "").replace(/\/$/, ""), + title: node.frontmatter.title, + tags: node.frontmatter.tags ?? [], + date: node.frontmatter.date, + authors: (node.frontmatter.byline ?? "") + .split(",") + .map(name => name.trim()) + .filter(Boolean), + guestBio: node.frontmatter.guestBio ?? null, + } + + createNode({ + ...blogPostContent, + remark: node.id, + parent: node.id, + children: [], + internal: { + type: "BlogPost", + contentDigest: createContentDigest(blogPostContent), + }, + }) + + createParentChildLink({ + parent: node, + child: blogPostContent, + }) + } +} + +export const onCreatePage: GatsbyNode["onCreatePage"] = async ({ + page, + actions, +}) => { + // This way is not "the Gatsby way", we create the pages, delete the pages, and create "code" paths page again. + if (page.path.startsWith("/blog") || page.path.startsWith("/tags")) { + return + } + const { createPage, deletePage } = actions + deletePage(page) + let context = { + ...page.context, + sourcePath: path.relative(__dirname, page.path), + } + if (page.path === "/code" || page.path === "/code/") { + const markdownFilePaths = await glob("src/content/code/**/*.md") + const slugMap = require("./src/content/code/slug-map.json") + const codeData = await updateCodeData(markdownFilePaths, slugMap) + const organizeData = await organizeCodeData(codeData) + const sortedOrganizeData = await sortCodeData(organizeData) + + context = { + sourcePath: path.relative(__dirname, page.path), + ...sortedOrganizeData, + } + } + createPage({ + ...page, + context, + }) +} + +export const createPages: GatsbyNode["createPages"] = async ({ + actions, + graphql, +}) => { + const { createPage } = actions + + const result = await graphql(` + query allMarkdownRemark { + allMarkdownRemark { + edges { + node { + fileAbsolutePath + parent { + ... on File { + relativeDirectory + sourceInstanceName + } + } + frontmatter { + title + permalink + next + category + sublinks + sidebarTitle + date + tags + } + id + } + } + } + allBlogPost { + group(field: { tags: SELECT }) { + fieldValue + } + } + } + `) + + const docTemplate = path.resolve("./src/templates/doc.tsx") + + if (result.errors) { + // eslint-disable-next-line no-console + console.error(result.errors) + throw result.errors + } + + const tags = result.data.allBlogPost.group.map(group => group.fieldValue) + for (const tag of tags) { + createPage({ + path: `/tags/${tag.toLowerCase()}/`, + component: path.resolve("./src/templates/{BlogPost.tags}.tsx"), + context: { + tag, + }, + }) + } + + const markdownPages = result.data.allMarkdownRemark.edges + + // foundation: [ + // { + // fileAbsolutePath: '/graphql/graphql.github.io/src/content/foundation/About.md', + // parent: {}, + // frontmatter: {}, + // id: '1d502d5e-3453-56cf-ad9a-7f6bfb68d9ba' + // }, + // ... + // ] + // } + let pagesGroupedByFolder = {} + + // { + // foundation: [ + // { name: 'foundation', links: [{"fileAbsolutePath":"/graphql/graphql.github.io/src/content/foundation/About.md","parent":{"relativeDirectory":"foundation","sourceInstanceName":"content"},"frontmatter":{"title":"What is the GraphQL Foundation?","permalink":"/foundation/","next":"/foundation/join/","category":"GraphQL Foundation","sublinks":null,"sidebarTitle":"About the Foundation","date":null},"id":"1d502d5e-3453-56cf-ad9a-7f6bfb68d9ba"}] }, + // { name: 'GraphQL Foundation', links: [Array] } + // ], + // Note that this is mutated + let sideBardata = {} + + // Sidebar items to add which don't come from markdown + const additionalSidebarItems = { + foundation: [ + { + name: "GraphQL Foundation", + links: [ + { + frontmatter: { + sidebarTitle: "Foundation Members", + title: "Foundation Members", + permalink: "/foundation/members/", + date: null, + category: "GraphQL Foundation", + }, + }, + { + frontmatter: { + sidebarTitle: "GraphQL Landscape", + title: "GraphQL Landscape", + permalink: "https://landscape.graphql.org/", + date: null, + category: "GraphQL Foundation", + }, + }, + ], + }, + ], + } + + // E.g. + // { + // permalink: '/learn/best-practices/', + // relativeDirectory: 'learn', + // sidebarTitle: 'Introduction', + // nextPermalink: '/learn/thinking-in-graphs/', + // sourcePath: 'src/content/learn/BestPractice-Introduction.md' + // } + const allPages = [] + + // Loop through all *.md files in the repo, setting up both pagesGroupedByFolder + // and allPages. + markdownPages.map(({ node }) => { + const { + frontmatter: { permalink, next, sidebarTitle }, + parent: { relativeDirectory, sourceInstanceName }, + } = node + + if ( + sourceInstanceName !== "content" || + relativeDirectory.includes("code/") + ) { + return + } + + pagesGroupedByFolder = { + ...pagesGroupedByFolder, + [relativeDirectory]: pagesGroupedByFolder[relativeDirectory] + ? [...pagesGroupedByFolder[relativeDirectory], node] + : [node], + } + + allPages.push({ + permalink, + relativeDirectory, + sidebarTitle, + nextPermalink: next, + sourcePath: path.relative(__dirname, node.fileAbsolutePath), + }) + }) + + // Loop through the sections in the sidebar, mutating the + // next and previous objects for different + Object.entries(pagesGroupedByFolder).map(([folder, pages]) => { + let pagesByUrl = {} + let previousPagesMap = {} + let pagesByDate = pages.sort((a, b) => { + const aDate = new Date(a.frontmatter.date || Date.now()) + const bDate = new Date(b.frontmatter.date || Date.now()) + if (aDate > bDate) { + return -1 + } + if (aDate < bDate) { + return 1 + } + return 0 + }) + + pagesByDate.forEach(page => { + const next = page.frontmatter.next + const permalink = page.frontmatter.permalink + + if (next) { + previousPagesMap[next] = permalink + } + pagesByUrl[permalink] = page + }) + + let firstPage = null + pagesByDate.forEach(page => { + const permalink = page.frontmatter.permalink + if (!previousPagesMap[permalink] && !firstPage) { + firstPage = page + } + }) + + if (!firstPage) { + throw new Error(`First page not found in ${folder}`) + } + + let categoriesMap = {} + let currentCategory = null + + let page = firstPage + let i = 0 + while (page && i++ < 1000) { + const { frontmatter } = page + const { category: definedCategory, next: definedNextPageUrl } = + frontmatter + let category = definedCategory || folder + if (!currentCategory || category !== currentCategory.name) { + if (currentCategory) { + if (!(currentCategory.name in categoriesMap)) { + categoriesMap[currentCategory.name] = currentCategory + } + } + currentCategory = { + name: category, + links: [], + } + } + currentCategory.links.push(page) + if (definedNextPageUrl) { + page = pagesByUrl[definedNextPageUrl] + } else { + page = pagesByDate[pagesByDate.indexOf(page) + 1] + } + if (currentCategory.links.includes(page)) { + page = null + } + } + + if (!(currentCategory.name in categoriesMap)) { + categoriesMap[currentCategory.name] = currentCategory + } + + sideBardata[folder] = Object.values(categoriesMap) + }) + + Object.entries(additionalSidebarItems).map(([folder, sections]) => { + sections.forEach(s => { + const originalLinks = sideBardata[folder].find(l => l.name === s.name) + originalLinks.links = [...originalLinks.links, ...s.links] + }) + }) + + // Use all the set up data to now tell Gatsby to create pages + // on the site + for (const page of allPages) { + if (!page.permalink.startsWith("/blog")) { + createPage({ + path: `${page.permalink}`, + component: docTemplate, + context: { + permalink: page.permalink, + nextPermalink: page.nextPermalink, + sideBarData: sideBardata[page.relativeDirectory], + sourcePath: page.sourcePath, + }, + }) + } + } +} + +export const onCreateWebpackConfig: GatsbyNode["onCreateWebpackConfig"] = + async ({ actions }) => { + actions.setWebpackConfig({ + resolve: { + fallback: { + assert: "assert/", + }, + }, + }) + } diff --git a/notes/ContributingToCodePage.md b/notes/ContributingToCodePage.md new file mode 100644 index 0000000000..24dff39f60 --- /dev/null +++ b/notes/ContributingToCodePage.md @@ -0,0 +1,80 @@ +## Contributing to the Code Page + +Hi, thanks for reading the docs! + +Secondly, we want to provide a really strong overview of all the libraries in the GraphQL eco-system. To make this +easy for contributors the code page is automatically generated from a series of markdown files in this repo. + +```sh +$ tree src/content/code +src/content/code +├── language-support +│ ├── c-c +│ │ └── tools +│ │ └── libgraphqlparser.md +│ ├── clojure +│ │ ├── client +│ │ │ └── regraph.md +│ │ └── server +│ │ ├── alumbra.md +│ │ ├── graphql-clj.md +│ │ └── lacinia.md +│ ├── c-net +│ │ ├── client +│ │ │ ├── graphql-client.md +│ │ │ ├── graphql-net-client.md +│ │ │ └── sahb-graphqlclient.md +// etc +``` + +We'd love any new project to include a few paragraphs describing its goals and usage, the goal here is to make it easy for people to decide between options. + +Here's an optimal example of what we're looking for: + +- It uses yaml frontmatter to provide additional information like repo, npm +- It explains itself in the 'description' then fills fleshes out that description with some code samples + +````md +--- +name: Express GraphQL +description: The reference implementation of a GraphQL API server over an Express webserver. You can use this to run GraphQL in conjunction with a regular Express webserver, or as a standalone GraphQL server. +url: /graphql-js/running-an-express-graphql-server/ +github: graphql/express-graphql +npm: "express-graphql" +--- + +To run an `express-graphql` hello world server: + +```bash +npm install express express-graphql graphql +``` + +Then run `node server.js` with this code in `server.js`: + +```js +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") + +var schema = buildSchema(` + type Query { + hello: String + } +`) + +var root = { hello: () => "Hello world!" } + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000, () => console.log("Now browse to localhost:4000/graphql")) +``` +```` + +Any library/tool/service has a maximum height in the site, and then it can be expanded by clicking, so if you need quite a lot of space to explain your project then that's OK. diff --git a/notes/NewSiteArchitecture.md b/notes/NewSiteArchitecture.md index fb5bed0d79..3fd8ea4290 100644 --- a/notes/NewSiteArchitecture.md +++ b/notes/NewSiteArchitecture.md @@ -2,172 +2,173 @@ ## Index -*Goal:* This is the landing page and is our opportunity to quickly capture attention and explain what GraphQL is and why you should care. +_Goal:_ This is the landing page and is our opportunity to quickly capture attention and explain what GraphQL is and why you should care. -*Timeframe:* Launch Mon, Sept 12th +_Timeframe:_ Launch Mon, Sept 12th This page is effectively a marketing page for GraphQL and should be the visual, scrollable version of the "Introducing GraphQL" conference talks and should be rich with visual metaphor and illustration and take advantage of whitespace to make individual salient points. -Above the fold, this page should succinctly explain what GraphQL is and illustrate with a simple (editable) query/response example. Before scrolling you should understand the following: +Above the fold, this page should succinctly explain what GraphQL is and illustrate with a simple (editable) query/response example. Before scrolling, you should understand the following: -* GraphQL solves the same problem as REST. -* GraphQL is an query language for APIs (and not Databases). -* GraphQL is sent by client applications, such as an iOS app. -* GraphQL is evaluated by a web service and often returned as JSON. -* GraphQL services provide a complete description of your data with a type system. -* It's easy to build powerful tools for your data using GraphQL. +- GraphQL solves the same problem as REST. +- GraphQL is a query language for APIs (and not Databases). +- GraphQL is sent by client applications, such as an iOS app. +- GraphQL is evaluated by a web service and often returned as JSON. +- GraphQL services provide a complete description of your data with a type system. +- It's easy to build powerful tools for your data using GraphQL. Below the fold we should introduce concepts one at a time, each with visual metaphor and take-aways: -1) GraphQL clients describe what they need in terms of how client developers think about data. +1. GraphQL clients describe what they need in terms of how client developers think about data. -* If you're familiar with JSON, GraphQL is easy to learn and understand. -* GraphQL only sends what you ask for, nothing more or less, making your app faster and more stable. -* It's easy to anticipate the shape of the result of any query. +- If you're familiar with JSON, GraphQL is easy to learn and understand. +- GraphQL only sends what you ask for, nothing more or less, making your app faster and more stable. +- It's easy to anticipate the shape of the result of any query. -2) GraphQL queries can access many "resources" in a single network request. +2. GraphQL queries can access many "resources" in a single network request. -* A query can access properties of not just one object, but of many related objects. -* A query can access multiple unrelated objects at once. -* Compared to REST, GraphQL collects all the data needed for your app with much less network activity, making your app faster. +- A query can access properties of not just one object, but of many related objects. +- A query can access multiple unrelated objects at once. +- Compared to REST, GraphQL collects all the data needed for your app with much less network activity, making your app faster. -3) GraphQL services describes what's possible with a strong type system. +3. GraphQL services describes what's possible with a strong type system. -* GraphQL services provide a complete description of your data. -* Every `{ }` corresponds to an object of a particular type, and every type describes the fields available. -* GraphQL only runs queries that make sense and provides helpful error messages. -* Tools and IDEs can make editing queries easy via type-aheads. - * GraphiQL is a free tool that you can use. -* Type system defines descriptions, making it easy to keep documentation up to date. -* Every query guarantees the shape and type of its response. +- GraphQL services provide a complete description of your data. +- Every `{ }` corresponds to an object of a particular type, and every type describes the fields available. +- GraphQL only runs queries that make sense and provides helpful error messages. +- Tools and IDEs can make editing queries easy via type-aheads. + - GraphiQL is a free tool that you can use. +- Type system defines descriptions, making it easy to keep documentation up to date. +- Every query guarantees the shape and type of its response. -4) GraphQL is composable via fragments. +4. GraphQL is composable via fragments. -* Fragments describe a portion of some Type to be queried. -* Fragments are often used next to View code where data is used. -* Fragments are composed together to create full queries. +- Fragments describe a portion of some Type to be queried. +- Fragments are often used next to View code where data is used. +- Fragments are composed together to create full queries. -5) GraphQL makes backwards-compatible APIs easy. +5. GraphQL makes backwards-compatible APIs easy. -* Server does not need to worry about concerns of any particular client, only the complete set of capabilities. Clients are responsible for the data they receive. -* Because GraphQL only sends what you ask for, new capabilities can be introduced via new fields on types with no impact on existing queries. -* Old capabilities can be marked "deprecated" with no impact on existing queries. -* No versioning your API when using GraphQL leads to cleaner code on the server. +- Server does not need to worry about concerns of any particular client, only the complete set of capabilities. Clients are responsible for the data they receive. +- Because GraphQL only sends what you ask for, new capabilities can be introduced via new fields on types with no impact on existing queries. +- Old capabilities can be marked "deprecated" with no impact on existing queries. +- No versioning your API when using GraphQL leads to cleaner code on the server. -6) GraphQL queries are answered by simple functions on your server. +6. GraphQL queries are answered by simple functions on your server. -* GraphQL is not backed by any database technology, just like REST. -* Every field on each type is represented by a function for retrieving that data. -* GraphQL will call your functions and execute a query with optimal concurrency. -* It's easy to write a GraphQL API using your existing data model. +- GraphQL is not backed by any database technology, just like REST. +- Every field on each type is represented by a function for retrieving that data. +- GraphQL will call your functions and execute a query with optimal concurrency. +- It's easy to write a GraphQL API using your existing data model. Finally, there will be a set of links for learning more (diving into `Learn`) and for getting started (in `Code`). As well as a wall-o-logo for companies using GraphQL. ## Learn -*Goal:* Introduce GraphQL, one concept at a time, covering both primary concepts and best practices. +_Goal:_ Introduce GraphQL, one concept at a time, covering both primary concepts and best practices. -*Timeframe:* Basic primary concepts by Sept 12th, advanced primary concepts by Sept 30th, best practices as ready over Q3/Q4. +_Timeframe:_ Basic primary concepts by Sept 12th, advanced primary concepts by Sept 30th, best practices as ready over Q3/Q4. Where "GraphQL the Spec" is designed for a specific audience of those building GraphQL servers, this represents "GraphQL the Book" and is designed for the audience of anyone who wishes to use GraphQL. It should cover both GraphQL core concepts in addition to best practices and further topics, and it should range from introductory concepts through advanced concepts. The landing page for this section should begin as a more information-rich introduction to GraphQL, explaining why you might use it, and give a brief overview of the constituent parts. Take-aways from this introduction page: -* GraphQL is a query language. -* GraphQL servers describe a type system, called a "schema". -* Clients can access a GraphQL server's type system to learn about what's possible. -* Clients send queries to servers and typically get back JSON. -* GraphQL servers validate and execute GraphQL queries. +- GraphQL is a query language. +- GraphQL servers describe a type system, called a "schema". +- Clients can access a GraphQL server's type system to learn about what's possible. +- Clients send queries to servers and typically get back JSON. +- GraphQL servers validate and execute GraphQL queries. There is then a TOC through the sections and chapters (this is a straw-man list, open to reordering and addition) -* Introducing GraphQL (this initial page) -* Core Concepts: - * Requests: - * Basics (queries & mutations, fields, arguments, aliases, comments) - * Variables - * Fragments - * Values - * Directives (skip & include) - * Type System: - * Basics (Schema, Objects & Fields) - * Scalars & Enums - * Lists & NonNull (mention error handling) - * Interfaces & Unions - * How GraphQL Works: - * Validation - * Execution & Error Handling - * Introspection -* Best Practices: - * Servers: - * Serving over HTTP - * Authentication & Authorization - * Mutations - * Paginating Lists - * Schema Changes & Versioning - * Query Performance (Batching & Caching) - * Security & Rate Limiting - * Schema Design Guidelines - * Clients: - * Using Variables - * Co-locating Fragments - * Caching Results - * Persisted Queries - * Generating Models - * Migrating from REST +- Introducing GraphQL (this initial page) +- Core Concepts: + - Requests: + - Basics (queries & mutations, fields, arguments, aliases, comments) + - Variables + - Fragments + - Values + - Directives (skip & include) + - Type System: + - Basics (Schema, Objects & Fields) + - Scalars & Enums + - Lists & NonNull (mention error handling) + - Interfaces & Unions + - How GraphQL Works: + - Validation + - Execution & Error Handling + - Introspection +- Best Practices: + - Servers: + - Serving over HTTP + - Authentication & Authorization + - Mutations + - Paginating Lists + - Schema Changes & Versioning + - Query Performance (Batching & Caching) + - Security & Rate Limiting + - Schema Design Guidelines + - Clients: + - Using Variables + - Co-locating Fragments + - Caching Results + - Persisted Queries + - Generating Models + - Migrating from REST ## Code -*Goal:* Introduce open source GraphQL tools along with quick getting started guidelines for each. +_Goal:_ Introduce open source GraphQL tools along with quick getting started guidelines for each. -*Timeframe:* At least 3 servers described by Sept 12th, remainder by Sept 30th. +_Timeframe:_ At least 3 servers described by Sept 12th, remainder by Sept 30th. This page is all about fulfilling the "Ok I'm sold! Now what?" conundrum. It should first very quickly reintroduce the elements of GraphQL you would expect to see software for as well as offer a quick path towards getting something working. -1) Servers +1. Servers Explain the purpose of a GraphQL server, that there are servers written for many different languages and environments, and that graphql-js is the reference implementation operated by Facebook. Each server should contain the following: -* Logo -* Name of Project -* Language/Environment -* Link to website -* Getting started (e.g. npm install + code sample) -2) Clients +- Logo +- Name of Project +- Language/Environment +- Link to website +- Getting started (e.g. npm install + code sample) + +2. Clients Explain the purpose of a GraphQL client, that it's okay to just use curl/XHR/fetch, and that clients can offer more value via smart caches and integration with UI frameworks. Each client should contain similar set of info as servers. -3) Services +3. Services Hosted GraphQL-as-a-service have an opportunity to pitch themselves here. -4) Tools +4. Tools Common tools used by GraphQL community, e.g. GraphiQL. ## Community -*Goal:* Central dispatch for finding help for GraphQL questions, learning about conferences and meetups, and connecting with the community. +_Goal:_ Central dispatch for finding help for GraphQL questions, learning about conferences and meetups, and connecting with the community. -*Timeframe:* Simple version by Sept 12th, evolve over time. +_Timeframe:_ Simple version by Sept 12th, evolve over time. This page should serve as a high-level view of what resources are available and what's going on in the community. It should encourage pull-requests to facilitate being updated by the community over time. -* Links out to: - * Stack Overflow topic - * Slack/Discord channels - * Popular blogs - * Twitter feed -* Calendar of upcoming meetups or conference talks related to GraphQL (encourage edits by community) -* Grid of recorded videos about GraphQL (conf talks, etc). +- Links out to: + - Stack Overflow topic + - Slack/Discord channels + - Popular blogs + - Twitter feed +- Calendar of upcoming meetups or conference talks related to GraphQL (encourage edits by community) +- Grid of recorded videos about GraphQL (conf talks, etc). ## Blog -*Goal:* GraphQL core team's blog, signal-boosting popular articles written elsewhere. +_Goal:_ GraphQL core team's blog, signal-boosting popular articles written elsewhere. While any evergreen content typically belongs as chapters in the "Learn" section, the Blog is an opportunity for GraphQL core team members or occasional invited contributors to discuss experiments, interesting applications, or signal-boost things like new releases of the GraphQL spec, the reference implementation, upcoming events, or links out to interesting articles. diff --git a/package.json b/package.json index 81fe1469a0..f97018b837 100644 --- a/package.json +++ b/package.json @@ -4,38 +4,61 @@ "version": "0.0.0", "scripts": { "build": "gatsby build", - "develop": "GATSBY_GRAPHQL_IDE=playground gatsby develop", + "develop": "gatsby develop", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"", + "format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,md}\"", "start": "npm run develop", "serve": "gatsby serve", "clean": "gatsby clean", + "lint": "eslint --ignore-path .gitignore .", "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1" }, + "resolutions": { + "graphql": "16.6.0" + }, "dependencies": { - "@graphql-tools/schema": "7.0.0", - "codemirror": "5.58.2", - "codemirror-graphql": "0.12.3", - "gatsby": "2.25.0", - "gatsby-plugin-anchor-links": "1.1.1", - "gatsby-plugin-feed": "2.6.0", - "gatsby-plugin-google-analytics": "2.4.0", - "gatsby-plugin-less": "4.0.6", - "gatsby-plugin-react-helmet": "3.3.14", - "gatsby-plugin-webfonts": "1.1.3", - "gatsby-source-filesystem": "2.4.0", - "gatsby-transformer-remark": "2.9.0", - "graphql": "15.4.0", - "marked": "1.2.2", - "prism-react-renderer": "1.1.1", - "prismjs": "1.22.0", - "react": "17.0.1", - "react-dom": "17.0.1", - "react-helmet": "6.1.0" + "@graphql-tools/schema": "10.0.0", + "@radix-ui/react-aspect-ratio": "1.0.2", + "@radix-ui/react-icons": "1.3.0", + "@reach/router": "1.3.4", + "@weknow/gatsby-remark-twitter": "0.2.3", + "assert": "2.0.0", + "clsx": "1.2.1", + "codemirror": "5.65.1", + "codemirror-graphql": "1.3.2", + "gatsby": "5.10.0", + "gatsby-plugin-anchor-links": "1.2.1", + "gatsby-plugin-feed": "5.10.0", + "gatsby-plugin-google-analytics": "5.10.0", + "gatsby-plugin-less": "7.10.0", + "gatsby-plugin-webfonts": "2.3.2", + "gatsby-source-filesystem": "5.10.0", + "gatsby-transformer-remark": "6.10.0", + "glob": "10.2.6", + "graphql": "16.6.0", + "marked": "5.0.2", + "numbro": "2.3.6", + "parser-front-matter": "1.6.4", + "prism-react-renderer": "1.3.5", + "prismjs": "1.29.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "timeago.js": "4.0.2" }, "devDependencies": { - "@types/codemirror": "0.0.98", - "@types/prismjs": "1.16.2", - "@types/react-helmet": "6.1.0", - "prettier": "2.1.2" + "@svgr/webpack": "^8.0.0", + "@tailwindcss/typography": "0.5.9", + "@types/codemirror": "5.60.7", + "@types/prismjs": "1.26.0", + "@typescript-eslint/parser": "5.59.7", + "autoprefixer": "10.4.14", + "eslint": "8.42.0", + "eslint-plugin-tailwindcss": "3.12.0", + "gatsby-plugin-postcss": "6.10.0", + "gatsby-plugin-svgr": "^3.0.0-beta.0", + "postcss": "8.4.23", + "prettier": "2.8.8", + "tailwindcss": "3.3.2", + "typescript": "5.1.3" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000000..33ad091d26 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000000..4f39080e47 --- /dev/null +++ b/renovate.json @@ -0,0 +1,3 @@ +{ + "extends": ["config:base"] +} diff --git a/scripts/sort-libraries/get-gem-stats.ts b/scripts/sort-libraries/get-gem-stats.ts new file mode 100644 index 0000000000..eb52209180 --- /dev/null +++ b/scripts/sort-libraries/get-gem-stats.ts @@ -0,0 +1,52 @@ +type GemStatsFetchRespone = { + name: string + downloads: number + version: string + version_created_at: string + version_downloads: number + platform: string + authors: string + info: string + licenses: Array + metadata: { + homepage_uri: string + changelog_uri: string + bug_tracker_uri: string + source_code_uri: string + mailing_list_uri: string + } + yanked: boolean + sha: string + gem_uri: string + homepage_uri: string + wiki_uri: string + documentation_uri: string + mailing_list_uri: string + source_code_uri: string + bug_tracker_uri: string + changelog_uri: string + funding_uri: string + dependencies: { + development: Array + runtime: Array + } +} + +export async function getGemStats(packageName: string): Promise { + const response = await fetch( + `https://rubygems.org/api/v1/gems/${encodeURIComponent(packageName)}.json` + ) + if (!response.ok) { + console.warn(`Get invalid response from GEM for ${packageName}:`, response) + return 0 + } + const responseJson: GemStatsFetchRespone = await response.json() + if (!responseJson) { + console.warn( + `Get invalid response from GEM for ${packageName}:`, + responseJson + ) + return 0 + } + return responseJson.downloads ?? 0 +} diff --git a/scripts/sort-libraries/get-github-stats.ts b/scripts/sort-libraries/get-github-stats.ts new file mode 100644 index 0000000000..88fc1eef0d --- /dev/null +++ b/scripts/sort-libraries/get-github-stats.ts @@ -0,0 +1,253 @@ +import numbro from "numbro" +import { format as timeago } from "timeago.js" + +type GitHubStatsFetchResponse = + | { + errors: [ + { + extensions: { + value: string + problems: [ + { + path: string + explanation: string + } + ] + } + locations: [ + { + line: number + column: number + } + ] + message: string + } + ] + } + | { + data: { + repositoryOwner: { + repository: { + defaultBranchRef: { + target: { + history: { + edges: [ + { + node: { + author: { + name: string + } + pushedDate: string + } + } + ] + } + } + } + stargazers: { + totalCount: number + } + updatedAt: string + forkCount: number + pullRequests: { + totalCount: number + } + description: string + licenseInfo: { + name: string + } + releases: { + nodes: [ + { + publishedAt: string + } + ] + } + tags: { + nodes: [ + { + name: string + target: { + target: { + pushedDate: string + } + } + } + ] + } + } + } + } + } + +type GitHubInfo = { + hasCommitsInLast3Months: boolean + stars: number + formattedStars: string + license: string + lastRelease: string + formattedLastRelease: string +} + +type Release = { date: string; formattedDate: string } + +export async function getGitHubStats( + githubRepo: string +): Promise { + const [owner, repoName] = githubRepo.split("/") + const accessToken = process.env.GITHUB_ACCESS_TOKEN + if (!accessToken) { + console.warn( + `No GITHUB_ACCESS_TOKEN environment variable found. Skipping GitHub stats for ${githubRepo}` + ) + return undefined + } + const query = /* GraphQL */ ` + fragment defaultBranchRefFragment on Ref { + target { + ... on Commit { + history(since: $since) { + edges { + node { + author { + name + } + pushedDate + } + } + } + } + } + } + query GitHubInfo( + $owner: String! + $repoName: String! + $since: GitTimestamp! + ) { + repositoryOwner(login: $owner) { + repository(name: $repoName) { + defaultBranchRef { + ...defaultBranchRefFragment + } + stargazers { + totalCount + } + updatedAt + forkCount + pullRequests { + totalCount + } + description + licenseInfo { + name + } + releases(first: 1) { + nodes { + publishedAt + } + } + tags: refs( + refPrefix: "refs/tags/" + first: 1 + orderBy: { field: TAG_COMMIT_DATE, direction: DESC } + ) { + nodes { + name + target { + ... on Tag { + target { + ... on Commit { + pushedDate + } + } + } + } + } + } + } + } + } + ` + const lastMonth = new Date() + lastMonth.setMonth(lastMonth.getMonth() - 3) + const response = await fetch("https://api.github.com/graphql", { + method: "POST", + body: JSON.stringify({ + query, + variables: { owner, repoName, since: lastMonth }, + }), + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + }) + if (!response.ok) { + console.warn( + `Get invalid response from GitHub for ${owner}/${repoName}. Status: ${response.status}` + ) + } + const responseJson: GitHubStatsFetchResponse = await response.json() + + if (responseJson && "data" in responseJson) { + const repositoryOwner = responseJson.data.repositoryOwner + if (!repositoryOwner) { + throw `No GitHub user found for ${owner}/${repoName}` + } + const { repository: repo } = repositoryOwner + console.log("repo:", repo.tags) + if (!repo) { + throw `No GitHub repo found ${owner}/${repoName}` + } + const stars = repo.stargazers.totalCount + const commitHistory = repo.defaultBranchRef.target.history.edges + + let hasCommitsInLast3Months = false + commitHistory.forEach(commit => { + if (!commit.node.author.name.match(/bot/i)) { + hasCommitsInLast3Months = true + } + }) + const formattedStars = numbro(stars).format({ + average: true, + }) + const releases: Release[] = [] + if ( + repo.tags && + repo.tags.nodes && + repo.tags.nodes.length && + repo.tags.nodes[0].target.target && + repo.tags.nodes[0].target.target.pushedDate + ) { + releases.push({ + date: repo.tags.nodes[0].target.target.pushedDate, + formattedDate: timeago(repo.tags.nodes[0].target.target.pushedDate), + }) + } + if (repo.releases && repo.releases.nodes && repo.releases.nodes.length) { + releases.push({ + date: repo.releases.nodes[0].publishedAt, + formattedDate: timeago(repo.releases.nodes[0].publishedAt), + }) + } + if (owner.includes("graphql")) { + console.log({ releases, repoName }) + } + console.log("releases", releases) + + const lastRelease = releases.filter(Boolean).sort().reverse()[0] + return { + hasCommitsInLast3Months, + stars, + formattedStars, + license: repo.licenseInfo && repo.licenseInfo.name, + lastRelease: lastRelease ? lastRelease.date : "", + formattedLastRelease: lastRelease ? lastRelease.formattedDate : "", + } + } else { + console.warn( + `Get invalid response from GitHub for ${owner}/${repoName}. Response: ${JSON.stringify( + responseJson + )}` + ) + } +} diff --git a/scripts/sort-libraries/get-http-score.ts b/scripts/sort-libraries/get-http-score.ts new file mode 100644 index 0000000000..375c142834 --- /dev/null +++ b/scripts/sort-libraries/get-http-score.ts @@ -0,0 +1,26 @@ +type HttpScoreFetchResponse = { + total: number + pass: number + errors: number + warnings: number +} + +export async function getHttpScore(packageName: string): Promise { + const response = await fetch( + `https://raw.githubusercontent.com/graphql/graphql-http/main/implementations/${encodeURIComponent( + packageName + )}/report.json` + ) + if (!response.ok) { + console.warn( + `Get invalid response from HTTP score for ${packageName}. Status: ${response.status}` + ) + return 0 + } + const responseJson: HttpScoreFetchResponse = await response.json() + if (!responseJson) { + console.warn(`Get invalid response from HTTP score for ${packageName}`) + return 0 + } + return responseJson.total ?? 0 +} diff --git a/scripts/sort-libraries/get-npm-stats.ts b/scripts/sort-libraries/get-npm-stats.ts new file mode 100644 index 0000000000..93b5529d55 --- /dev/null +++ b/scripts/sort-libraries/get-npm-stats.ts @@ -0,0 +1,25 @@ +type NpmStatsFetchResponse = + | { + downloads?: number + start: string + end: string + package: string + } + | { error: string } + +export async function getNpmStats(packageName: string): Promise { + const response = await fetch( + `https://api.npmjs.org/downloads/point/last-week/${encodeURIComponent( + packageName + )}` + ) + if (response.ok) { + const responseJson: NpmStatsFetchResponse = await response.json() + if (responseJson && "downloads" in responseJson) { + return responseJson.downloads ?? 0 + } else { + console.warn(`Get invalid response from npm for ${packageName}`) + } + } + return 0 +} diff --git a/scripts/sort-libraries/sort-libraries.ts b/scripts/sort-libraries/sort-libraries.ts new file mode 100644 index 0000000000..378c9637da --- /dev/null +++ b/scripts/sort-libraries/sort-libraries.ts @@ -0,0 +1,77 @@ +import { getGemStats } from "./get-gem-stats" +import { getGitHubStats } from "./get-github-stats" +import { getHttpScore } from "./get-http-score" +import { getNpmStats } from "./get-npm-stats" + +export interface Library { + name: string + description: string + howto: string + url: string + github: string | undefined + npm: string | undefined + gem: string | undefined + sourcePath: string +} + +export async function sortLibs( + libraries: Library[] +): Promise<{ sortedLibs: Library[]; totalStars: number }> { + let totalStars = 0 + const libsWithScores = await Promise.all( + libraries.map(async lib => { + const [npmStats, gemStars, githubStats, httpScore] = await Promise.all([ + lib.npm ? getNpmStats(lib.npm) : undefined, + lib.gem ? getGemStats(lib.gem) : undefined, + lib.github ? getGitHubStats(lib.github) : undefined, + lib.name ? getHttpScore(lib.name) : undefined, + ]) + + const result = { + ...lib, + downloadCount: npmStats ?? gemStars ?? 0, + stars: githubStats?.stars ?? 0, + httpScore: httpScore ?? 0, + ...githubStats, + } + totalStars += result.stars + return result + }) + ) + const sortedLibs = libsWithScores.sort((a, b) => { + let aScore = 0, + bScore = 0 + if (a.downloadCount > b.downloadCount) { + aScore += 36 + } else if (b.downloadCount > a.downloadCount) { + bScore += 36 + } + + if (a.httpScore > b.httpScore) { + aScore += 10 + } else if (b.httpScore > a.httpScore) { + bScore += 10 + } + + if ("hasCommitsInLast3Months" in a && a.hasCommitsInLast3Months) { + aScore += 28 + } + if ("hasCommitsInLast3Months" in b && b.hasCommitsInLast3Months) { + bScore += 28 + } + if (a.stars > b.stars) { + aScore += 36 + } else if (a.stars < b.stars) { + bScore += 36 + } + if (bScore > aScore) { + return 1 + } + if (bScore < aScore) { + return -1 + } + return 0 + }) + + return { sortedLibs, totalStars } +} diff --git a/scripts/update-code-data/organize-code-data.ts b/scripts/update-code-data/organize-code-data.ts new file mode 100644 index 0000000000..c5962eeabb --- /dev/null +++ b/scripts/update-code-data/organize-code-data.ts @@ -0,0 +1,57 @@ +import { Library, sortLibs } from "../sort-libraries/sort-libraries" +import { CodeData } from "./update-code-data" + +export type List = { + name: string + totalStars: number + categoryMap: { + [categoryName: string]: Library[] + } +} + +export async function organizeCodeData( + codeData: CodeData +): Promise<{ languageList: List[]; toolList: List[]; serviceList: Library[] }> { + let languageList: List[] = [] + let toolList: List[] = [] + let serviceList: Library[] = [] + await Promise.all([ + ...Object.keys(codeData.Languages).map(async languageName => { + const libraryCategoryMap = codeData.Languages[languageName] + let languageTotalStars = 0 + await Promise.all( + Object.keys(libraryCategoryMap).map(async libraryCategoryName => { + const libraries = libraryCategoryMap[libraryCategoryName] + const { sortedLibs, totalStars } = await sortLibs(libraries) + + libraryCategoryMap[libraryCategoryName] = sortedLibs + languageTotalStars += totalStars || 0 + }) + ) + languageList.push({ + name: languageName, + totalStars: languageTotalStars, + categoryMap: libraryCategoryMap, + }) + }), + ...Object.keys(codeData.Tools).map(async toolName => { + const toolCategoryMap = codeData.Tools[toolName] + let toolTotalStars = 0 + await Promise.all( + Object.keys(toolCategoryMap).map(async toolCategoryName => { + const tools = toolCategoryMap[toolCategoryName] + const { sortedLibs, totalStars } = await sortLibs(tools) + toolCategoryMap[toolCategoryName] = sortedLibs + toolTotalStars += totalStars || 0 + }) + ) + toolList.push({ + name: toolName, + totalStars: toolTotalStars, + categoryMap: toolCategoryMap, + }) + }), + (serviceList = codeData.Services), + ]) + return { languageList, toolList, serviceList } +} diff --git a/scripts/update-code-data/sort-code-data.ts b/scripts/update-code-data/sort-code-data.ts new file mode 100644 index 0000000000..503dff273f --- /dev/null +++ b/scripts/update-code-data/sort-code-data.ts @@ -0,0 +1,35 @@ +import { Library } from "../sort-libraries/sort-libraries" +import { List } from "./organize-code-data" + +type organizeData = { + languageList: List[] + toolList: List[] + serviceList: Library[] +} + +export async function sortCodeData( + organizeData: organizeData +): Promise { + await Promise.all([ + organizeData.languageList.sort((a, b) => { + if (a.totalStars > b.totalStars) { + return -1 + } + if (a.totalStars < b.totalStars) { + return 1 + } + return 0 + }), + organizeData.toolList.sort((a, b) => { + if (a.totalStars > b.totalStars) { + return -1 + } + if (a.totalStars < b.totalStars) { + return 1 + } + return 0 + }), + organizeData.serviceList, + ]) + return organizeData +} diff --git a/scripts/update-code-data/update-code-data.ts b/scripts/update-code-data/update-code-data.ts new file mode 100644 index 0000000000..f1e9aec09b --- /dev/null +++ b/scripts/update-code-data/update-code-data.ts @@ -0,0 +1,109 @@ +import { readFile } from "fs/promises" +import { promisify } from "util" +import * as frontmatterParser from "parser-front-matter" +import { Library } from "../sort-libraries/sort-libraries" + +const parse$ = promisify(frontmatterParser.parse) + +export type CodeData = { + Languages: { + [languageName: string]: { + [categoryName: string]: Library[] + } + } + Tools: { + [toolName: string]: { + [categoryToolsName: string]: Library[] + } + } + Services: Library[] +} + +export async function updateCodeData( + markdownFilePaths: string[], + slugMap: string +): Promise { + let codeData = {} as CodeData + await Promise.all( + markdownFilePaths.map(async markdownFilePath => { + const markdownFileContent = await readFile(markdownFilePath, "utf-8") + let { + data: { name, description, url, github, npm, gem }, + content: howto, + } = await parse$(markdownFileContent) + howto = howto.trim() + const pathArr = markdownFilePath.split("/") + const languageSupport = markdownFilePath.includes("language-support") + const toolsSupport = markdownFilePath.includes("tools") + + switch (true) { + case languageSupport: { + const languageSupportDirIndex = pathArr.indexOf("language-support") + const languageNameSlugIndex = languageSupportDirIndex + 1 + const languageNameSlug = pathArr[languageNameSlugIndex] + const languageName = slugMap[languageNameSlug] + codeData.Languages ||= {} + codeData.Languages[languageName] ||= {} + + const categoryNameSlugIndex = languageSupportDirIndex + 2 + const categoryNameSlug = pathArr[categoryNameSlugIndex] + const categoryName = slugMap[categoryNameSlug] + codeData.Languages[languageName][categoryName] ||= [] + codeData.Languages[languageName][categoryName].push({ + name, + description, + howto, + url, + github, + npm, + gem, + sourcePath: markdownFilePath, + }) + break + } + case toolsSupport: { + const toolSupportDirIndex = pathArr.indexOf("tools") + const toolNameSlugIndex = toolSupportDirIndex + 1 + const toolNameSlug = pathArr[toolNameSlugIndex] + const toolName = slugMap[toolNameSlug] + codeData.Tools ||= {} + codeData.Tools[toolName] ||= {} + const categoryToolsNameSlugIndex = toolSupportDirIndex + 2 + const categoryToolsNameSlug = pathArr[categoryToolsNameSlugIndex] + const categoryToolsName = slugMap[categoryToolsNameSlug] + codeData.Tools[toolName][categoryToolsName] ||= [] + + codeData.Tools[toolName][categoryToolsName].push({ + name, + description, + howto, + url, + github, + npm, + gem, + sourcePath: markdownFilePath, + }) + break + } + default: { + const codeDirIndex = pathArr.indexOf("code") + const categoryNameSlugIndex = codeDirIndex + 1 + const categoryNameSlug = pathArr[categoryNameSlugIndex] + const categoryName = slugMap[categoryNameSlug] + codeData[categoryName] ||= [] + codeData[categoryName].push({ + name, + description, + howto, + url, + github, + npm, + gem, + sourcePath: markdownFilePath, + }) + } + } + }) + ) + return codeData +} diff --git a/src/Containers/Sections/BringYourOwnCode/index.tsx b/src/Containers/Sections/BringYourOwnCode/index.tsx index fc1cc6030f..d3217bf05a 100644 --- a/src/Containers/Sections/BringYourOwnCode/index.tsx +++ b/src/Containers/Sections/BringYourOwnCode/index.tsx @@ -2,7 +2,6 @@ import React, { useEffect } from "react" import Prism from "../../../components/Prism" const Index = (): JSX.Element => { - useEffect(() => { let i = 0 var inView = document.getElementById("leverageCodeView") @@ -15,11 +14,11 @@ const Index = (): JSX.Element => { } step() return () => clearTimeout(timer) - },[]) + }, []) return (
-
+

Bring your own
@@ -38,8 +37,7 @@ const Index = (): JSX.Element => {
{ /> { - return ( -
-
-
-
- -
-
-
-
- GraphQL Logo -

GraphQL

-
+ return ( +
+
+
+
+ + +
+
+
+
+ +

GraphQL

+
-
-

Describe your data

- +

Describe your data

+ -
+ language={"graphql"} + /> +
-
-

Ask for what you want

- +

Ask for what you want

+ -
+ language={"graphql"} + /> +
-
-

Get predictable results

- +

Get predictable results

+ -
-
- -
- - Get Started - - - Learn More - + language={"json"} + />
+

+ +
+ + Get Started + + + Learn More +
- ) -}; + + ) +} -export default Hero; \ No newline at end of file +export default Hero diff --git a/src/Containers/Sections/PowerFulTools/index.tsx b/src/Containers/Sections/PowerFulTools/index.tsx index 048cfddeed..8cd268b518 100644 --- a/src/Containers/Sections/PowerFulTools/index.tsx +++ b/src/Containers/Sections/PowerFulTools/index.tsx @@ -4,7 +4,7 @@ const PowerFulTools = () => { return (
-
+

Move faster with
@@ -28,7 +28,7 @@ const PowerFulTools = () => {

{" "} -
diff --git a/src/Containers/Sections/PredictableResults/index.tsx b/src/Containers/Sections/PredictableResults/index.tsx index 17735430d4..e2da1bea7e 100644 --- a/src/Containers/Sections/PredictableResults/index.tsx +++ b/src/Containers/Sections/PredictableResults/index.tsx @@ -50,7 +50,7 @@ const PredictableResults = () => { }, []) return (
-
+

Ask for what you need,
@@ -84,8 +84,7 @@ const PredictableResults = () => {
{
{
{ - return ( -
-
-
-

- Get many resources -
- in a single request -

- {/*Illustration: a query 2 or 3 levels deep]*/} -

- GraphQL queries access not just the properties of one resource but - also smoothly follow references between them. While typical REST - APIs require loading from multiple URLs, GraphQL APIs get all the - data your app needs in a single request. Apps using GraphQL can be - quick even on slow mobile network connections. -

-
-
- -
- +
+
+

+ Get many resources +
+ in a single request +

+ {/*Illustration: a query 2 or 3 levels deep]*/} +

+ GraphQL queries access not just the properties of one resource but + also smoothly follow references between them. While typical REST + APIs require loading from multiple URLs, GraphQL APIs get all the + data your app needs in a single request. Apps using GraphQL can be + quick even on slow mobile network connections. +

+
+
+ +
+ -
-
- +
+
+ { { "name": "Leia Organa" } ] } -}`} language="json" /> -
-
-
-
- ); -}; + +
+
+
+ ) +} -export default SingleRequest; \ No newline at end of file +export default SingleRequest diff --git a/src/Containers/Sections/TypeSystem/index.tsx b/src/Containers/Sections/TypeSystem/index.tsx index 592bbc9590..7a08e8daa0 100644 --- a/src/Containers/Sections/TypeSystem/index.tsx +++ b/src/Containers/Sections/TypeSystem/index.tsx @@ -21,7 +21,7 @@ const TypeSysyem = () => { }, []) return (
-
+

Describe what’s possible
@@ -42,8 +42,7 @@ const TypeSysyem = () => {
{
{ return (
-
+

Who’s using GraphQL?

Facebook's mobile apps have been powered by GraphQL since 2012. A diff --git a/src/Containers/Sections/WithoutVersion/index.tsx b/src/Containers/Sections/WithoutVersion/index.tsx index 27baee4adf..98661107dd 100644 --- a/src/Containers/Sections/WithoutVersion/index.tsx +++ b/src/Containers/Sections/WithoutVersion/index.tsx @@ -15,7 +15,7 @@ const WithoutVersion = () => { return (

-
+

Evolve your API
@@ -35,8 +35,7 @@ const WithoutVersion = () => {
{
{
{
div { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + } + } + + .img-examples { + display: flex; + flex-wrap: wrap; + gap: 0 3em; + li { + display: flex; + flex: 1; + max-width: initial; + flex-basis: 450px; + span { + flex: 1; + max-width: 34ch; + margin-right: 1em; + } + img { + display: block; + } + & > img, + & > .dont-effect { + user-select: none; + pointer-events: none; + margin: -0.25em 0 0 0.5em; + background: #f3f4f7; + padding: 1.25em; + height: 5em; + box-sizing: border-box; + } + .dont-effect { + width: 5em; + img { + height: 220%; + margin: -2.5%; + transform-origin: top left; + transform: scale(0.5); + } + } + } + } + + .color-combos { + background: #f3f4f7; + padding: 25px; + display: flex; + flex-wrap: wrap; + gap: 25px; + max-width: max-content; + user-select: none; + pointer-events: none; + img { + height: 100px; + padding: 25px; + border-radius: 100px; + display: block; + } + .filter { + height: 200px; + padding: 50px; + transform: scale(0.5); + margin: -50px; + } + } + + .agree-actions { + user-select: none; + label { + display: block; + cursor: pointer; + margin: 0 auto; + max-width: max-content; + } + input { + margin-right: 1em; + } + a { + background-color: white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + color: @rhodamine-color; + cursor: pointer; + display: inline-block; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + margin: 1em; + padding: 0.8em 1.2em; + text-decoration: none; + transition: 0.2s ease-in-out box-shadow, 0.2s ease-in-out color; + white-space: nowrap; + &.disabled { + color: rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + } + &:not(.disabled):hover { + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + } + } + } + + .agree-actions-container { + background: #f3f4f7; + text-align: center; + + &.top { + @media (max-width: 800px) { + display: none; + } + float: right; + max-width: 33%; + padding: 3% 1em; + margin-left: 2em; + } + + &.bottom { + max-width: none; + padding: 6% 1em; + } + } +} + +.conf-style { + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + .zoom-diamond { + transition: transform .2s; /* Animation */ + width: 432px; + height: 221px; + cursor: pointer; + } + .zoom-diamond:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } + .zoom-platinum { + transition: transform .2s; /* Animation */ + width: 300px; + height: 153px; + cursor: pointer; + } + .zoom-platinum:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } + .zoom-gold { + transition: transform .2s; /* Animation */ + width: 250px; + height: 128px; + cursor: pointer; + } + .zoom-gold:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } + .zoom-silver { + transition: transform .2s; /* Animation */ + width: 208px; + height: 106px; + cursor: pointer; + } + .zoom-silver:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } + .zoom-bronze { + transition: transform .2s; /* Animation */ + width: 144px; + height: 103px; + cursor: pointer; + } + + .zoom-bronze:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } + .zoom-partner { + transition: transform .2s; /* Animation */ + width: 158px; + height: 62px; + cursor: pointer; + } + + .zoom-partner:hover { + transform: scale(1.1); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ + } +} \ No newline at end of file diff --git a/src/assets/css/_css/code.less b/src/assets/css/_css/code.less index 139da22628..49aa6f48cd 100644 --- a/src/assets/css/_css/code.less +++ b/src/assets/css/_css/code.less @@ -53,9 +53,244 @@ left: 0; } .intro-note { - margin-top: 20px; + margin-top: 43px; + display: flex; + p { + width: 50%; + margin-top: 0; + margin-right: 5%; + font-size: 18px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 32px; + } + .goto-section { + display: flex; + flex-direction: row; + width: 40%; + p { + min-width: 72px; + width: 20%; + margin: 0; + color: #8c8c8c; + font-weight: bold; + font-size: 24px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + .sections { + display: flex; + width: 80%; + flex-direction: column; + a { + h3 { + margin: 0 0 22px 0; + border-left: 1px solid #b7b7b7; + font-weight: bold; + padding-left: 15px; + line-height: 28px; + font-size: 24px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + } + } + } + } + .sortByContainer{ + display: flex; + flex-flow: row wrap; + gap: 1rem; + align-items: center; + .sortBy{ + font-weight: 500; + } + .inputContainer{ + display: flex; + align-items: center; + gap:0.25rem; + cursor: pointer; + input{ + accent-color: #e10098; + } + label{ + cursor: pointer; + } + } + } + .tools-title { + margin: 0; } .inner-content { max-width: 100%; } + .language-content { + padding-top: 72px; + } + .languages-title { + font-size: 24px; + font-weight: bold; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + .language-boxes { + display: grid; + grid-row-gap: 20px; + grid-column-gap: 30px; + grid-template-columns: auto auto auto; + @media screen and (min-width: 1020px) { + grid-template-columns: auto auto auto auto auto auto; + } + .language-box { + border: 1px solid #979797; + min-width: 142px; + height: 120px; + display: flex; + flex-direction: row; + align-items: flex-end; + color: #000; + .article_title { + text-align: left; + font-size: 22px; + color: #000; + font-weight: bold; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + margin: 0; + } + } + } + .language-header { + display: flex; + flex-direction: row; + @media screen and (max-width: 600px) { + flex-direction: column; + } + justify-content: space-between; + .language-title { + margin: 0 0 10px 0; + font-size: 48px; + font-weight: bold; + } + .language-categories-permalinks { + margin: 0; + font-size: 24px; + font-weight: bold; + color: #a6a6a6; + .language-category-permalink { + color: #a6a6a6; + } + } + } + .library-category-title { + margin: 0; + padding-top: 45px; + font-size: 24px; + color: #a6a6a6; + font-weight: bold; + } + .library-info { + display: flex; + flex-direction: row; + @media screen and (max-width: 600px) { + flex-direction: column; + } + justify-content: space-between; + margin-top: 36px; + margin-bottom: 40px; + .library-details { + width: 30%; + @media screen and (max-width: 600px) { + width: 100%; + } + .library-name { + font-size: 24px; + font-weight: bold; + p { + margin: 0 0 20px 0; + } + } + .library-detail { + margin-top: 7px; + display: flex; + flex-direction: row; + b { + font-size: 14px; + min-width: 90px; + } + a, + span { + font-size: 16px; + color: #e10098; + font-weight: bold; + margin-left: 10px; + } + } + .library-description { + margin-top: 30px; + } + } + .library-howto { + @media screen and (max-width: 600px) { + width: 100%; + } + width: 60%; + position: relative; + .library-howto-content { + overflow: hidden; + pre.prism { + margin: 1em 0; + } + + &.not-expanded { + max-height: 450px; + } + &.expanded img { + display: none; + } + p { + margin: 0; + } + } + } + .library-howto-expand { + cursor: pointer; + + &.not-expanded { + background: -webkit-linear-gradient( + top, + rgba(237, 239, 240, 0), + rgba(237, 239, 240, 0) 380px, + #ffffff 400px + ); + background: linear-gradient( + to bottom, + rgba(237, 239, 240, 0), + rgba(237, 239, 240, 0) 380px, + #ffffff 400px + ); + box-sizing: border-box; + display: block; + height: 450px; + padding-top: 400px; + position: absolute; + top: 0; + right: 0; + left: 0; + text-align: center; + .library-howto-expand-anchor { + background: #ffffff; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 9pt 9pt 0 0; + color: #8c8c8c; + display: inline-block; + max-width: 100%; + overflow: hidden; + padding: 10px; + text-decoration: underline; + text-overflow: ellipsis; + white-space: nowrap; + } + } + &.expanded { + display: none; + } + } + } } diff --git a/src/assets/css/_css/docs.less b/src/assets/css/_css/docs.less index 0ad08aa862..1834297e84 100644 --- a/src/assets/css/_css/docs.less +++ b/src/assets/css/_css/docs.less @@ -1,7 +1,7 @@ @import "variables.less"; .documentationContent { - margin-top:3px; + margin-top: 3px; margin-bottom: 8em; display: flex; width: 100%; @@ -13,58 +13,58 @@ } } -.headerline{ +.headerline { display: flex; // padding-right: 5px; // justify-content: center; } .main-block-blog { - /* background-color: #f0ece2; */ - background-color: #fff; - padding: 10px; - margin: 10px; - margin-bottom: 100px; - justify-content: center; - position: relative; - flex-flow: row; - text-align: center; + /* background-color: #f0ece2; */ + background-color: #fff; + padding: 10px; + margin: 10px; + margin-bottom: 100px; + justify-content: center; + position: relative; + flex-flow: row; + text-align: center; } -.column{ +.column { // padding: 0 10px; box-sizing: border-box; border: 3px rgb(44, 38, 38); justify-content: space-around; - margin-right: 15px; - // width: 800px; - // height: 250px; + margin-right: 15px; + // width: 800px; + // height: 250px; } .container-bl { display: flex; justify-content: center; - /* align-items: center; */ - // padding: 10px; - flex-direction: row; - // max-width: 1000px; - margin-right: 10px; - justify-content: space-around; + /* align-items: center; */ + // padding: 10px; + flex-direction: row; + // max-width: 1000px; + margin-right: 10px; + justify-content: space-around; } .container-bl1 { display: flex; justify-content: center; - /* align-items: center; */ - // padding: 10px; - flex-direction: row; - // max-width: 1000px; - margin-right: 10px; - justify-content: space-around; + /* align-items: center; */ + // padding: 10px; + flex-direction: row; + // max-width: 1000px; + margin-right: 10px; + justify-content: space-around; } -.codetitle{ - font-family: 'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif; +.codetitle { + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 300; color: #202020; font-size: 22px; @@ -72,64 +72,63 @@ } .article { - background: white; - /* background-image: url(../imgs/corona-virus.jpg) ; */ - /* filter: blur(8px); */ - // margin: 0 0 20px; - padding: 5px; - // border-radius: 1.5px; - // border: 0.7px solid black; - // box-shadow: 0 2px 4px #010101; - cursor: pointer; + background: white; + /* background-image: url(../imgs/corona-virus.jpg) ; */ + /* filter: blur(8px); */ + // margin: 0 0 20px; + padding: 5px; + // border-radius: 1.5px; + // border: 0.7px solid black; + // box-shadow: 0 2px 4px #010101; + cursor: pointer; transition: 0.3s ease; width: 140px; height: 160px; } .article:active { - box-shadow: none; - transform-origin: center; - transform: scale(0.98); + box-shadow: none; + transform-origin: center; + transform: scale(0.98); } .article_category { - display: inline-block; - // background: rgb(235, 150, 206); - /* 47bbc5 */ - padding: 5px 8px; - border: black; - // border-radius: 10px; - margin: 0 0 10px; - color: white; - font-size: 0.75rem; - font-weight: 600; - letter-spacing: 0.075rem; + display: inline-block; + // background: rgb(235, 150, 206); + /* 47bbc5 */ + padding: 5px 8px; + border: black; + // border-radius: 10px; + margin: 0 0 10px; + color: white; + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.075rem; text-transform: uppercase; width: 100px; height: 100px; } .article_excerpt { - color: black; - line-height: 1.5rem; - font-size: 0.875rem; + color: black; + line-height: 1.5rem; + font-size: 0.875rem; } .article_title { - margin: 0 0 10px; - color: #E10098; - font-family: "Josefin Sans"; - font-size: 1.25rem; - // font-weight: 600; - line-height: 1.75rem; + margin: 0 0 10px; + color: #e10098; + font-family: "Josefin Sans"; + font-size: 1.25rem; + // font-weight: 600; + line-height: 1.75rem; } - @media only screen and (min-width: 320px) and (max-width: 650px) { - .container-bl1 { - flex-direction: column; - width: 100%; - } + .container-bl1 { + flex-direction: column; + width: 100%; + } } .inner-content { @@ -168,15 +167,13 @@ .prism { position: relative; - box-shadow: - inset 0 1px 0 rgba(0,0,0,0.08), - inset 0 -1px 0 rgba(0,0,0,0.08), - inset -1px 0 0 rgba(0,0,0,0.08), - inset 4px 0 0 rgba(0,0,0,0.08); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.08), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), inset -1px 0 0 rgba(0, 0, 0, 0.08), + inset 4px 0 0 rgba(0, 0, 0, 0.08); border-radius: 3px; .line-highlight { - background-color: lighten(desaturate(@rhodamine-color, 50%), 50%); + background-color: #f8e9f3; left: 0; line-height: inherit; margin-top: 5px; @@ -198,7 +195,8 @@ .not(code) > pre.prism { text-shadow: 0 1px white; - &::-moz-selection, &::selection { + &::-moz-selection, + &::selection { text-shadow: none; } } @@ -220,14 +218,17 @@ } border-radius: 3px; - box-shadow: inset 0 0 0 1px rgba(0,0,0,0.1); + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); padding: 0.7em 1.5em 0.5em 1em; - &:hover, &:focus, &:active { + &:hover, + &:focus, + &:active { background: @rhodamine-color; text-decoration: none; - .read-next-continue, .read-next-title { + .read-next-continue, + .read-next-title { color: white; } } @@ -282,9 +283,36 @@ color: #666; display: block; - &:hover, &:focus, &.active { + &:hover, + &:focus, + &.active { text-decoration: none; color: @rhodamine-color; } } } + +.blog-sidebar { + .recent-posts { + li { + border-bottom: 1px solid #ddd; + line-height: 18px; + padding: 10px 0; + font-weight: bold; + color: @rhodamine-color; + } + a { + font-weight: normal; + color: #666; + } + } +} + +.blog-sidebar { + .categories { + li { + font-weight: bold; + color: @rhodamine-color; + } + } +} diff --git a/src/assets/css/_css/faq.less b/src/assets/css/_css/faq.less new file mode 100644 index 0000000000..d43cba1ff8 --- /dev/null +++ b/src/assets/css/_css/faq.less @@ -0,0 +1,97 @@ +.inner-faq-content { + flex: 1; + @media screen and (max-width: 740px) { + margin-right: 0; + } + + & > h1:first-child { + margin-top: 1em; + } + + h2 { + margin-bottom: 10px; + } + + .faq-button-question { + background: transparent; + display: block; + width: 100%; + text-align: left; + padding: 0; + cursor: pointer; + box-shadow: 0px -1px 0px #aaa; + + &:first-child { + box-shadow: none; + } + } + + h3 { + color: #e10098; + padding: 20px 0 20px 5px; + margin: 0; + user-select: none; + position: relative; + + &.open:after { + transform: rotate(-45deg); + } + + &:after { + content: ""; + height: 33px; + width: 33px; + background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"%3E%3Cpath height="20px" width="20px" style="text-indent:0;text-transform:none;block-progression:tb" d="M50 13a4 4 0 00-4 4v29H17a4 4 0 000 8h29v29a4 4 0 108 0V54h29a4 4 0 100-8H54V17a4 4 0 00-4-4z" overflow="visible" fill="%23aaa"/%3E%3C/svg%3E%0A'); + background-repeat: no-repeat; + position: absolute; + transition: transform 200ms ease; + right: 0; + + @media screen and (max-width: 768px) { + display: none; + } + } + + a { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; + } + } + + ul { + max-height: 0; + opacity: 0; + margin-bottom: 0; + margin-top: 0; + overflow: hidden; + transition: height 0ms 400ms, opacity 400ms 0ms; + + &.show { + opacity: 1; + max-height: 800px; + margin-bottom: 1.0875rem; + overflow: visible; + transition: height 0ms 0ms, opacity 600ms 0ms; + } + } + + p { + max-height: 0; + opacity: 0; + margin: 0; + overflow: hidden; + transition: height 0ms 400ms, opacity 400ms 0ms; + + &.show { + opacity: 1; + max-height: 400px; + margin-bottom: 1.0875rem; + transition: height 0ms 0ms, opacity 600ms 0ms; + } + } +} diff --git a/src/assets/css/_css/foundation.less b/src/assets/css/_css/foundation.less new file mode 100644 index 0000000000..c226c161a9 --- /dev/null +++ b/src/assets/css/_css/foundation.less @@ -0,0 +1,31 @@ +.foundation { + .foundation-hero { + background: url(/img/graphql_foundation-hero.jpg) top left; + + .foundation-hero-inner-content { + padding: 6% 1em; + background-color: rgba(225, 0, 152, 0.75); + + img { + user-select: none; + pointer-events: none; + width: 50%; + min-width: 300px; + display: block; + margin: 6% auto; + } + + div { + max-width: 50ch; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + font-size: ~"clamp(1em, 2.5vw, 1.5em)"; + color: #fff; + display: block; + margin: auto; + text-align: center; + line-height: 1.4; + } + } + } +} diff --git a/src/assets/css/_css/graphql.less b/src/assets/css/_css/graphql.less index 5c6a807f61..79e7e3f5bb 100644 --- a/src/assets/css/_css/graphql.less +++ b/src/assets/css/_css/graphql.less @@ -16,7 +16,8 @@ body { a { color: @rhodamine-color; text-decoration: none; - &:hover, &:focus { + &:hover, + &:focus { text-decoration: underline; } } @@ -29,7 +30,12 @@ em { font-style: italic; } -h1, h2, h3, h4, h5, h6 { +h1, +h2, +h3, +h4, +h5, +h6 { margin: 2em 0 0; text-rendering: optimizelegibility; } @@ -83,16 +89,21 @@ h6:hover > .hash-link { visibility: visible; } -ul, ol { +ul, +ol { margin: 1em 0 1em 2em; padding: 0; } -p + ul, p + ol { +p + ul, +p + ol { margin-top: 1em; } -ul ul, ul ol, ol ol, ol ul { +ul ul, +ul ol, +ol ol, +ol ul { margin-bottom: 0; } @@ -119,7 +130,7 @@ p code { header { .headline-font(@size: 15px); - height: 50px; + min-height: 50px; background: white; box-shadow: inset 0 -1px 0 0px rgba(0, 0, 0, 0.1); z-index: 10; @@ -138,6 +149,7 @@ header { text-decoration: none; img { + display: inline; vertical-align: -9px; margin-right: 6px; width: 30px; @@ -147,14 +159,70 @@ header { } nav { + input { + display: none; + } + @media screen and (min-width: 1020px) { float: left; } - @media screen and (max-width: 1019px) { + + @media screen and (min-width: 720px) and (max-width: 1019px) { text-align: center; margin: 0 -1em; } + @media screen and (max-width: 719px) { + height: 50px; + position: relative; + + input { + display: block; + float: right; + appearance: none; + background: url("/img/menu.svg"); + width: 42px; + height: 42px; + margin: 4px 0; + cursor: pointer; + + .hero & { + background: url("/img/menu-white.svg"); + } + } + + div { + display: none; + } + + input:checked + div { + display: block; + position: absolute; + top: 100%; + right: 0; + left: 0; + a { + display: block; + background: white; + width: 100%; + left: 0; + .hero & { + background: @dark-color; + &:hover, + &:focus { + color: white; + } + } + } + a:not(:first-child) { + border-top: solid 1px #eee; + .hero & { + border-top-color: #666; + } + } + } + } + a { color: #aaa; display: inline-block; @@ -162,7 +230,9 @@ nav { padding: 0 1em; transition: color 0.1s ease-out; - &:hover, &:focus, &.active { + &:hover, + &:focus, + &.active { color: @text-color; text-decoration: none; } @@ -195,13 +265,14 @@ footer { .nav-home { display: table; - margin: -12px 20px 0 0; + margin: -12px 20px 0 -10px; padding: 10px; width: 50px; height: 50px; background: url("/img/logo-gray.svg") no-repeat content-box; - &:hover, &:focus { + &:hover, + &:focus { background-image: url("/img/logo.svg"); } @@ -210,52 +281,49 @@ footer { } } - a { + a, + span { color: white; display: table; - margin: 2px -10px; + margin: 2px 15px 2px -10px; padding: 3px 10px; - &:hover, &:focus { - color: @rhodamine-color; - text-decoration: none; + position: relative; + + svg { + opacity: 0.6; + position: absolute; + height: 0.85em; + width: 0.85em; + right: ~"calc(100% - 4px)"; + top: 50%; + transform: translateY(-50%); + user-select: none; } } - h5, h6 { + h5, + h6 { margin: 0 0 10px; - &, & > a { + &, + & > a, + & > span { color: lighten(@dark-color, 50%); } - & > a { + & > a, + & > span { margin: 0 -10px; } } } - .fbOpenSource { - display: block; - margin: 1em auto; - opacity: 0.4; - transition: opacity 0.15s ease-in-out; - width: 170px; - - &:hover { - opacity: 1.0; - } - } - .copyright { - color: rgba(255,255,255,0.4); + color: rgba(255, 255, 255, 0.4); text-align: center; } } - - - - .guestBio { background: #f9f0f3; border-top: solid 2px #e0c3c8; @@ -269,7 +337,8 @@ footer { padding-top: 20px; } -.blogContent:before, .blogContent:after { +.blogContent:before, +.blogContent:after { content: " "; display: table; } @@ -289,7 +358,20 @@ footer { max-width: 100%; } +.tag-wrapper { + margin-bottom: 5px; +} +.tag { + font-weight: 700; + letter-spacing: 1.5px; + text-transform: uppercase; + background-color: #e9e8f3; + font-size: 14px; + padding: 5px; + border-radius: 4px; + margin-right: 5px; +} div[data-twttr-id] iframe { margin: 10px auto !important; @@ -314,7 +396,7 @@ p + .apiIndex { } .apiIndex li a:hover::before { color: @rhodamine-color; - content: '#'; + content: "#"; font-size: 16px; left: -2em; line-height: 20px; @@ -344,8 +426,7 @@ p + .apiIndex { line-height: 17px; padding: 7px 14px; background: white; - box-shadow: inset 0 0 0 1px #EEE, inset 4px 0 0 #EEE; + box-shadow: inset 0 0 0 1px #eee, inset 4px 0 0 #eee; border-radius: 3px; margin-left: -4px; } - diff --git a/src/assets/css/_css/index.less b/src/assets/css/_css/index.less index 29d3ec2741..e01876c09b 100644 --- a/src/assets/css/_css/index.less +++ b/src/assets/css/_css/index.less @@ -7,6 +7,68 @@ div.index { margin-top: 50px; } + // GraphQLConf 2023 - Remove on Oct 1, 2023 + section.conf-banner { + background-color: #562556; + background: url("/img/conf/graphql-conf-bg.png") repeat center center; + background-size: cover; + color: #fff; + text-align: center; + max-width: none; + + & > a { + color: white; + display: flex; + align-items: center; + justify-content: center; + padding: 30px; + gap: 30px; + margin: 0 auto; + + @media (max-width: 900px) { + flex-direction: column; + gap: 10px; + } + + &:hover { + text-decoration: none; + } + + & > div { + display: flex; + flex-direction: column; + + & > * { + margin: 6px 0; + } + } + } + + img { + height: 80px; + } + + .button { + .headline-font(@size: 17px, @color: white); + border: solid 1px fadeout(white, 60%); + border-radius: 6px; + color: white; + line-height: 1.0; + transition: background 0.1s ease-out, color 0.1s ease-out; + padding: 0.6em 1.6em; + margin: 0 0.8em; + display: inline-block; + text-decoration: none; + + &:hover, &:focus, &:active { + color: @text-color; + background: white; + text-decoration: none; + } + } + } + // End GraphQLConf 2023 + header { display: none; @media screen and (min-width: 1020px) { @@ -18,14 +80,6 @@ div.index { } } - .fixedSearch { - position: fixed; - right: 0; - left: 0; - z-index: 12; - pointer-events: none; - } - .hero { background: @dark-color; @media screen and (min-width: 1020px) { @@ -62,7 +116,7 @@ div.index { height: 13vh; } - nav > a { + nav a { text-shadow: 0 1px 1px @dark-color, 0 0 3px @dark-color; &:hover, &:focus { @@ -236,7 +290,7 @@ div.index { } .darkWash { - background: #3d464f; + background: #2a3746; box-shadow: inset 0 30px 30px -30px rgba(0,0,0,0.35), inset 0 -20px 30px -30px rgba(0,0,0,0.35); @@ -284,7 +338,7 @@ div.index { min-height: 75vh; @media screen and (max-width: 1019px) { min-height: none; - .prose { + .prose2 { text-align: center; } } @@ -296,7 +350,7 @@ div.index { justify-content: space-between; } - .prose { + .prose2 { max-width: 415px; } @@ -345,7 +399,7 @@ div.index { justify-content: space-between; } - .prose { + .prose2 { max-width: 415px; } @@ -436,7 +490,7 @@ div.index { justify-content: space-between; } - .prose { + .prose2 { max-width: 415px; } @@ -481,7 +535,7 @@ div.index { font-family: Palatino, Georgia, serif; } - .prose { + .prose2 { display: flex; flex-direction: column; flex: 1; @@ -489,10 +543,6 @@ div.index { margin: 0 auto; max-width: 575px; text-align: center; - - a { - color: lighten(@rhodamine-color, 30%); - } } .graphiqlVid { @@ -524,7 +574,7 @@ div.index { justify-content: space-between; } - .prose { + .prose2 { max-width: 415px; } @@ -691,7 +741,7 @@ div.index { justify-content: space-between; } - .prose { + .prose2 { max-width: 415px; } @@ -757,7 +807,7 @@ div.index { padding-bottom: 6em; text-align: center; - .prose { + .prose2 { max-width: 545px; text-align: center; margin: 0 auto; diff --git a/src/assets/css/_css/users.less b/src/assets/css/_css/users.less index b92fbab106..a43da5eb87 100644 --- a/src/assets/css/_css/users.less +++ b/src/assets/css/_css/users.less @@ -1,14 +1,7 @@ -section.whos-using-page { +section.whos-using-page, section.foundation-members-page { padding-bottom: 6em; - text-align: center; max-width: 900px; - .prose { - max-width: 560px; - text-align: center; - margin: 0 auto; - } - .logos { align-items: center; display: flex; @@ -38,3 +31,11 @@ section.whos-using-page { } } } + +section.whos-using-page { + .prose2 { + max-width: 560px; + text-align: center; + margin: 0 auto; + } +} diff --git a/src/assets/css/_css/variables.less b/src/assets/css/_css/variables.less index 160161d36c..9bc159f702 100644 --- a/src/assets/css/_css/variables.less +++ b/src/assets/css/_css/variables.less @@ -1,10 +1,20 @@ /* https://www.pantone.com/color-finder/Rhodamine-Red-C */ -@dark-color: #171E26; -@rhodamine-color: #E10098; +:root { + --rhodamine: #e10098; +} + +@supports (color: color(display-p3 1 1 1)) { + :root { + --rhodamine: ~"color(display-p3 0.8824 0 0.5961)"; + } +} + +@dark-color: #171e26; +@rhodamine-color: ~"var(--rhodamine)"; @text-color: #202020; .headline-font(@size: 48px, @color: @text-color) { - font-family: 'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 300; color: @color; font-size: @size; @@ -12,7 +22,7 @@ } .body-font(@size: 18px, @color: @text-color) { - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 300; color: @color; font-size: @size; @@ -20,7 +30,7 @@ } .code-font(@size: 13px, @color: @text-color) { - font-family: 'Roboto Mono', Menlo, Monaco, monospace; + font-family: "Roboto Mono", Menlo, Monaco, monospace; font-weight: 400; color: @color; font-size: @size; diff --git a/src/assets/css/global.css b/src/assets/css/global.css new file mode 100644 index 0000000000..558f64ff3c --- /dev/null +++ b/src/assets/css/global.css @@ -0,0 +1,3 @@ +/*@tailwind base;*/ +@tailwind components; +@tailwind utilities; diff --git a/src/assets/css/style.less b/src/assets/css/style.less index 44741808d3..be1162c85a 100644 --- a/src/assets/css/style.less +++ b/src/assets/css/style.less @@ -6,3 +6,7 @@ @import "_css/codemirror.less"; @import "_css/algolia.less"; @import "_css/code.less"; +@import "_css/faq.less"; +@import "_css/foundation.less"; +@import "_css/brand.less"; + diff --git a/src/components/BackToTop/index.tsx b/src/components/BackToTop/index.tsx new file mode 100644 index 0000000000..2889f06e3b --- /dev/null +++ b/src/components/BackToTop/index.tsx @@ -0,0 +1,64 @@ +import React, { useEffect, useState } from "react" + +interface Props { + scrollThreshold: number +} + +const BackToTop: React.FC = ({ scrollThreshold }) => { + const [isVisible, setIsVisible] = useState(false) + + useEffect(() => { + const handleScroll = () => { + const pageHeight = document.body.scrollHeight + const currentPosition = window.pageYOffset + if (pageHeight < 6000) { + setIsVisible(false) + } else { + if (currentPosition > scrollThreshold) { + setIsVisible(true) + } else { + setIsVisible(false) + } + } + } + window.addEventListener("scroll", handleScroll) + return () => { + window.removeEventListener("scroll", handleScroll) + } + }, [scrollThreshold]) + + const handleBackToTopClick = () => { + window.scrollTo({ + top: 0, + behavior: "smooth", + }) + } + + return ( + <> + {isVisible && ( + + )} + + ) +} + +export default BackToTop diff --git a/src/components/BlogLayout/index.tsx b/src/components/BlogLayout/index.tsx index 7f69784438..2100ba19cd 100644 --- a/src/components/BlogLayout/index.tsx +++ b/src/components/BlogLayout/index.tsx @@ -1,52 +1,27 @@ -import React from "react" +import * as React from "react" +import { graphql } from "gatsby" import BlogSidebar from "../BlogSidebar" import BlogPost from "../BlogPost" +export const fragments = graphql` + fragment BlogLayout_post on BlogPost { + ...BlogPost_post + } +` + interface Props { - title: string - date: string - permalink: string - byline: string - guestBio: string - rawMarkdownBody: string - sideBarData: any + post: Queries.BlogLayout_postFragment } -const index = ({ - title, - date, - permalink, - byline, - guestBio, - rawMarkdownBody, - sideBarData, -}: Props) => { +const BlogLayout: React.FC = ({ post }) => { return (
- - { - const aDate = new Date(a.frontmatter.date); - const bDate = new Date(b.frontmatter.date) - if (aDate > bDate) { - return -1; - } else if (aDate < bDate) { - return 1; - } - return 0; - }))} currentPermalink={permalink} /> + +
) } -export default index - +export default BlogLayout diff --git a/src/components/BlogPost/index.tsx b/src/components/BlogPost/index.tsx index 5c22cda2fc..f487432ab5 100644 --- a/src/components/BlogPost/index.tsx +++ b/src/components/BlogPost/index.tsx @@ -1,36 +1,49 @@ -import React from "react" +import * as React from "react" +import { graphql, Link } from "gatsby" import Marked from "../Marked" +export const fragments = graphql` + fragment BlogPost_post on BlogPost { + title + date + authors + tags + guestBio + remark { + rawMarkdownBody + } + } +` + interface Props { - title: string - date: string - permalink: string - byline: string - guestBio: string - rawMarkdownBody: string - isPermalink: boolean + post: Queries.BlogPost_postFragment } -const BlogPost = ({ - title, - date, - permalink, - byline, - guestBio, - rawMarkdownBody, - isPermalink, -}: Props) => ( -
-

{isPermalink ? title : {title}}

-

- {new Date(date).toLocaleDateString()} by {byline} -

- {guestBio ? null :
} - {guestBio && ( -

{`This guest article contributed by ${byline}, ${guestBio}.`}

- )} - {rawMarkdownBody} -
-) +const BlogPost: React.FC = ({ post }) => { + const byline = post.authors.join(", ") + return ( +
+

{post.title}

+ +

+ {new Date(post.date).toLocaleDateString()} by {byline} +

+ +
+ {post.tags.map(tag => ( + + {tag} + + ))} +
+ + {post.guestBio && ( +

{`This guest article contributed by ${byline}, ${post.guestBio}.`}

+ )} + + {post.remark.rawMarkdownBody} +
+ ) +} export default BlogPost diff --git a/src/components/BlogPostPreview/index.tsx b/src/components/BlogPostPreview/index.tsx new file mode 100644 index 0000000000..085e48c35c --- /dev/null +++ b/src/components/BlogPostPreview/index.tsx @@ -0,0 +1,43 @@ +import * as React from "react" +import { graphql, Link } from "gatsby" + +export const fragments = graphql` + fragment BlogPostPreview_post on BlogPost { + title + date + authors + tags + postPath: gatsbyPath(filePath: "/blog/{BlogPost.postId}") + remark { + excerpt + } + } +` + +interface Props { + post: Queries.BlogPostPreview_postFragment +} + +const BlogPostPreview: React.FC = ({ post }) => ( +
+

+ {post.title} +

+ +

+ {new Date(post.date).toLocaleDateString()} by {post.authors.join(", ")} +

+ +
+ {post.tags.map(tag => ( + + {tag} + + ))} +
+ +

{post.remark.excerpt}

+
+) + +export default BlogPostPreview diff --git a/src/components/BlogSidebar/index.tsx b/src/components/BlogSidebar/index.tsx index f77ffd45aa..5e302b9665 100644 --- a/src/components/BlogSidebar/index.tsx +++ b/src/components/BlogSidebar/index.tsx @@ -1,34 +1,72 @@ -import React from 'react'; -import { Link } from "gatsby" +import React from "react" +import { Link, useStaticQuery, graphql } from "gatsby" +import { useLocation } from "@reach/router" -interface Props { - posts: any[] - currentPermalink?: string -} +const BlogSidebar: React.FC = () => { + const data = useStaticQuery(graphql` + query AllTagsStatic { + allBlogPost { + group(field: { tags: SELECT }) { + fieldValue + } + } + allRecentBlogPost: allBlogPost(limit: 30, sort: { date: DESC }) { + nodes { + title + postId + postPath: gatsbyPath(filePath: "/blog/{BlogPost.postId}") + } + } + } + `) -const BlogSidebar = ({ posts, currentPermalink }: Props) => ( -
-
-

Subscribe

- - RSS - -
-
-

Recent Posts

-
    - {posts.map(({ frontmatter }, i) => ( -
  • - {frontmatter.permalink === currentPermalink ? ( - frontmatter.title - ) : ( - {frontmatter.title} - )} -
  • - ))} -
+ const tags = data.allBlogPost.group.map(group => group.fieldValue!) + const recentPosts = data.allRecentBlogPost.nodes + + const { pathname: currentPath } = useLocation() + + return ( +
+
+

Subscribe

+ + RSS + +
+
+

Categories

+
    + {tags.map(tag => { + const formattedTag = tag[0].toUpperCase() + tag.substring(1) + const pathname = `/tags/${tag}/` + return ( +
  • + {pathname === currentPath ? ( + formattedTag + ) : ( + {formattedTag} + )} +
  • + ) + })} +
+
+
+

Recent Posts

+
    + {recentPosts.map(post => ( +
  • + {post.postPath === currentPath ? ( + post.title + ) : ( + {post.title} + )} +
  • + ))} +
+
-
-) + ) +} -export default BlogSidebar; \ No newline at end of file +export default BlogSidebar diff --git a/src/components/CodeLayout/index.tsx b/src/components/CodeLayout/index.tsx index 3364e24bcc..cb029db624 100644 --- a/src/components/CodeLayout/index.tsx +++ b/src/components/CodeLayout/index.tsx @@ -1,13 +1,13 @@ -import React from 'react' -import Marked from "../Marked"; +import React from "react" +import Marked from "../Marked" -export default ({ title, rawMarkdownBody }: any) => ( +export default ({ title, rawMarkdownBody, pageContext }: any) => (

{title}

- {rawMarkdownBody} + {rawMarkdownBody}
-) \ No newline at end of file +) diff --git a/src/components/Conf/About/index.tsx b/src/components/Conf/About/index.tsx new file mode 100644 index 0000000000..b182cd91f4 --- /dev/null +++ b/src/components/Conf/About/index.tsx @@ -0,0 +1,211 @@ +import { CheckCircledIcon } from "@radix-ui/react-icons" +import React from "react" + +const list = [ + { title: "Cloud Engineering" }, + { title: "Software Development" }, + { title: "Platform Engineering" }, + { title: "Data Engineering" }, + { title: "Technology Architecture" }, + { title: "Data Architecture" }, + { title: "Product Management" }, +] + +const whyAttend = [ + { + title: ( + + Learn about the latest developments + in GraphQL and related technologies, including GraphQL Core and beyond. + + ), + }, + { + title: ( + + Discover best practices and + real-world use cases through engaging presentations and panel + discussions. + + ), + }, + { + title: ( + + Connect with leading companies that + are using GraphQL to transform their businesses and industries. + + ), + }, + { + title: ( + + Build your skills and deepen your + understanding of GraphQL through workshops, tutorials, and code labs. + + ), + }, + { + title: ( + + Network with a diverse and vibrant + community of professionals who are passionate about GraphQL and its + potential. + + ), + }, +] + +const AboutSection = () => { + return ( +
+
+

+ About +

+

+ GRAPHQLCONF | SEP 19 – 21 +

+
+
+

+ GraphQLConf – is the official conference produced by the GraphQL + Foundation that brings together the global community of GraphQL + developers, leaders and innovators to further the education, + adoption and advancement of GraphQL implementations in the + industry. +

+

+ In the 8 years of GraphQL being around, we have seen adoption + across some of the largest organizations globally with homegrown + implementations, open source tooling and several vendor solutions + that have enabled the ease of adoption, implementation and + management of GraphQL. +

+

+ In the 3 days of workshops, keynotes and talks from the + ecosystems, GraphQLConf aims to be the forum where we bring the + community together to share and learn about what’s working and + where we need to innovate & collaborate to help business succeed + with GraphQL. +

+
+
+

+ GraphQLConf is particularly relevant for engineers, architects, + and managers involved in: +

+
    + {list.map((item, index) => ( +
  • + + {item.title} +
  • + ))} +
+

+ It is also a great place for GraphQL contributors, service + providers, and those exploring GraphQL to learn about the + technology, build connections within the community, and increase + their knowledge about GraphQL powered application development. +

+
+
+

+ Why Attend? +

+
+

+ GraphQLConf is particularly relevant for engineers, architects, and + managers involved in: +

+
    + {whyAttend.map((item, index) => ( +
  • + + {item.title} +
  • + ))} +
+
+
+
+ //
+ //
+ //
+ //
+ //
+ //

+ // About + //

+ //

+ // GRAPHQLCONF | SEP 19 – 21 + //

+ + //
+ //
+ //
+ //
+ // logo-color + //
+ //
+ //
+ //
+ //

+ // GraphQLConf is particularly relevant for engineers, architects, + // and managers involved in: + //

+ //
    + // {list.map((item, index) => ( + //
  • + // + // + // + // + // + // + // {item.title} + // + // + //
  • + // ))} + //
+ //

+ // It is also a great place for GraphQL contributors, service + // providers, and those exploring GraphQL to learn about the + // technology, build connections within the community, and increase + // their knowledge about GraphQL powered application development. + //

+ //

+ // WHY ATTEND? + //

+ + //
+ //
+ //
+ //
+ //
+ ) +} + +export default AboutSection diff --git a/src/components/Conf/Button/index.tsx b/src/components/Conf/Button/index.tsx new file mode 100644 index 0000000000..e235a9cfc3 --- /dev/null +++ b/src/components/Conf/Button/index.tsx @@ -0,0 +1,29 @@ +import React, { ReactElement, ReactNode } from "react" +import { clsx } from "clsx" + +interface ButtonProps { + children: ReactNode + className?: string + href?: string +} + +function ButtonConf({ href, className, children }: ButtonProps): ReactElement { + return ( + + {children} + + ) +} + +export default ButtonConf diff --git a/src/components/Conf/Footer/index.tsx b/src/components/Conf/Footer/index.tsx new file mode 100644 index 0000000000..fb27e09a33 --- /dev/null +++ b/src/components/Conf/Footer/index.tsx @@ -0,0 +1,86 @@ +import React from "react" +import SocialIcons from "../SocialIcons" +import SponsorsConf from "../Sponsors" +import PartnersConf from "../Partners" + +const links = [ + [ + { text: "Attend", href: "/conf/#attend" }, + { text: "Speakers", href: "/conf/#speakers" }, + { text: "Partner", href: "/conf/partner/" }, + { text: "Schedule", href: "/conf/#schedule" }, + { text: "Location", href: "/conf/#location" }, + ], + [ + { text: "Speak", href: "/conf/speak/" }, + { text: "Sponsor", href: "/conf/sponsor/" }, + { text: "FAQ", href: "/conf/faq/" }, + { text: "Contact Us", href: "/conf/faq/#contact" }, + ], + [ + { text: "GraphQL", href: "/" }, + { text: "GraphQL Foundation", href: "/foundation/" }, + { text: "Code of Conduct", href: "/conf/faq/#codeofconduct" }, + { text: "Diversity & Inclusion", href: "/conf/faq/#dni" }, + ], +] + +const FooterConf = () => { + return ( + <> + + +
+
+
+ + + +
+
+ {links.map((link, i) => ( +
+
+ {link.map((link, i) => ( +
  • + + {link.text} + +
  • + ))} +
    +
    + ))} +
    +
    +
    +

    + Copyright © {`${new Date().getFullYear()}`} The GraphQL Foundation. + All rights reserved. +
    + For web site terms of use, trademark policy and general project + policies please see  + + https://lfprojects.org + + . +

    + + + +
    +
    + + ) +} + +export default FooterConf diff --git a/src/components/Conf/Header/index.tsx b/src/components/Conf/Header/index.tsx new file mode 100644 index 0000000000..8f81604bb8 --- /dev/null +++ b/src/components/Conf/Header/index.tsx @@ -0,0 +1,48 @@ +import React from "react" +import ButtonConf from "../Button" + +interface LinkItem { + text: string + href: string + noMobile?: boolean +} + +const links: LinkItem[] = [ + { text: "Attend", href: "/conf/#attend" }, + { text: "Speak", href: "/conf/speak/" }, + { text: "Sponsor", href: "/conf/sponsor/" }, + { text: "Partner", href: "/conf/partner/" }, + { text: "FAQ", href: "/conf/faq/" }, +] + +const HeaderConf = () => { + return ( +
    +
    + + + + {links.map(link => ( + + {link.text} + + ))} + + Buy a Ticket! + +
    +
    + ) +} + +export default HeaderConf diff --git a/src/components/Conf/Layout/index.tsx b/src/components/Conf/Layout/index.tsx new file mode 100644 index 0000000000..d4de9fcc8a --- /dev/null +++ b/src/components/Conf/Layout/index.tsx @@ -0,0 +1,15 @@ +import React from "react" + +import "../../../assets/css/style.less" +import "../../../assets/css/global.css" + +interface Props { + children: React.ReactNode +} +const LayoutConf = ({ children }: Props): JSX.Element => ( + <> +
    {children}
    + +) + +export default LayoutConf diff --git a/src/components/Conf/Partners/index.tsx b/src/components/Conf/Partners/index.tsx new file mode 100644 index 0000000000..c7c9a2213b --- /dev/null +++ b/src/components/Conf/Partners/index.tsx @@ -0,0 +1,88 @@ +/* eslint-disable tailwindcss/no-custom-classname */ +import React from "react" +import { ReactComponent as GraphQLWeekly } from "../../../../static/img/conf/Partners/GraphQLWeekly.svg" +import { ReactComponent as GraphQLWTF } from "../../../../static/img/conf/Partners/GraphQLwtf.svg" +import { ReactComponent as EscapeTechnologies } from "../../../../static/img/conf/Partners/EscapeTechnologies.svg" + +interface Image { + iconPath: string + name: string + link: string +} + +function alphabetSort(a: Image, b: Image) { + if (a.name < b.name) { + return -1 + } + if (a.name > b.name) { + return 1 + } + return 0 +} + +const mediaPartners: Image[] = [ + { + iconPath: GraphQLWeekly, + name: "GraphQLWeekly", + link: "https://www.graphqlweekly.com/", + }, + { + iconPath: GraphQLWTF, + name: "GraphQLWTF", + link: "https://graphql.wtf/", + }, +] + +const communityPartners: Image[] = [ + { + iconPath: EscapeTechnologies, + name: "EscapeTechnologies", + link: "https://escape.tech/", + }, +] + +const PartnersConf = () => { + return ( +
    +

    + Partners +

    +

    + MEDIA PARTNERS +

    +
    + {mediaPartners + .sort((a, b) => alphabetSort(a, b)) + .map((partner, i) => ( + + + + ))} +
    +

    + COMMUNITY PARTNERS +

    +
    + {communityPartners + .sort((a, b) => alphabetSort(a, b)) + .map((partner, i) => ( + + + + ))} +
    +
    + ) +} + +export default PartnersConf diff --git a/src/components/Conf/Pricing/index.tsx b/src/components/Conf/Pricing/index.tsx new file mode 100644 index 0000000000..130da086ef --- /dev/null +++ b/src/components/Conf/Pricing/index.tsx @@ -0,0 +1,156 @@ +import React from "react" +import { CheckCircledIcon } from "@radix-ui/react-icons" +import ButtonConf from "../Button" + +interface Pricing { + title: string + date: string + price: string + dateIsExpired: Date +} + +const pricing: Pricing[] = [ + { + title: "Early Bird", + date: "Through May 31, 2023", + price: "$599", + dateIsExpired: new Date("2023-06-01"), + }, + { + title: "Standard", + date: "Jun 1 - Sep 4, 2023", + price: "$799", + dateIsExpired: new Date("2023-09-05"), + }, + { + title: "Late/Onsite", + date: "Sep 5 Through Event", + price: "$899", + dateIsExpired: new Date("2023-10-01"), + }, +] + +const includes: { title: string }[] = [ + { + title: "All conference content", + }, + { + title: "Full-day GraphQL workshop", + }, + { + title: "Lunch and all-day beverages", + }, + { + title: "Entry to Sponsor Showcase", + }, + { + title: "GraphQLConf event t-shirt", + }, + { + title: "Access to watch all sessions", + }, +] + +const PricingConf: React.FC = () => { + const today = new Date() + + const isExpired = (expiredDate: Date): boolean => expiredDate < today + + const renderPriceCard = (pricing: Pricing, index: number) => { + const expired = isExpired(pricing.dateIsExpired) + + const cardStyles = `block mx-auto w-64 p-6 overflow-hidden bg-[#2E343C] shadow-xl rounded-2xl focus:outline-none hover:drop-shadow-lg hover:scale-[102%] hover:no-underline focus:no-underline transition ease-in-out` + const expiredCardStyles = `block mx-auto w-64 p-6 overflow-hidden bg-[#474c52] shadow-xl rounded-2xl focus:outline-none hover:drop-shadow-lg hover:scale-[102%] hover:no-underline focus:no-underline transition ease-in-out cursor-not-allowed` + + return ( + + {expired && ( +
    +
    + Expired +
    +
    + )} +
    + {pricing.title} +
    +
    {pricing.date}
    +
    + {pricing.price} +
    +
    + ) + } + + return ( +
    +
    +
    +

    Attend

    +
    +
    +
    + {pricing.map(renderPriceCard)} +
    +
    + + Buy a Ticket! + +
    + +
    +
    +

    + What's included? +

    +
    + {includes.map((include, i) => ( +
    + +

    + {include.title} +

    +
    + ))} +
    +

    + Need assistance? +

    +

    + Apply for a Visa or{" "} + Scholarship or find more + help in our FAQ. +

    +
    +
    +
    +
    +
    + ) +} + +export default PricingConf diff --git a/src/components/Conf/SF/index.tsx b/src/components/Conf/SF/index.tsx new file mode 100644 index 0000000000..76200e97dd --- /dev/null +++ b/src/components/Conf/SF/index.tsx @@ -0,0 +1,58 @@ +import React from "react" +import { AspectRatio } from "../../aspect-ratio" + +interface Image { + src: string + name: string + description: string + link: string +} + +const images: Image[] = [ + { + src: "https://events.linuxfoundation.org/wp-content/uploads/2022/12/San-Francisco-Golden-Gate-Bridge-unsplash.jpg", + name: "Golden Gate Bridge", + description: + "Each year the Golden Gate Bridge attracts more than 10 million visitors to take in its tremendous 746-foot tall towers, sweeping main cables, signature International Orange color and Art Deco styling. It is a sensory experience featuring color, light and sound.", + link: "https://www.goldengate.org/", + }, + { + src: "https://events.linuxfoundation.org/wp-content/uploads/2022/12/San-Francisco-North-Beach-unsplash.jpg", + name: "North Beach San Francisco", + description: + "North Beach, a buzzy neighborhood steeped in Italian heritage, draws locals and tourists to its checked-tablecloth trattorias, coffee shops and retro-flavored bars.", + link: "https://www.sftravel.com/neighborhoods/north-beach", + }, + { + src: "https://events.linuxfoundation.org/wp-content/uploads/2022/12/San-Francisco-Alcatraz-unsplash.jpg", + name: "Alcatraz", + description: + "Alcatraz reveals stories of American incarceration, justice, and our common humanity. This small island was once a fort, a military prison, and a maximum security federal penitentiary.", + link: "https://www.nps.gov/alca/index.htm", + }, + { + src: "https://events.linuxfoundation.org/wp-content/uploads/2022/12/San-Francisco-Fishermans-Wharf-unsplash.jpg", + name: "Fisherman’s Wharf", + description: + "Fisherman’s Wharf, on the northern waterfront, is one of the city’s busiest tourist areas. Souvenir shops and stalls selling crab and clam chowder in sourdough bread bowls appear at every turn, as do postcard views of the bay, Golden Gate and Alcatraz. There’s also a colony of sea lions to see and historic ships to tour. At Ghirardelli Square, boutiques and eateries reside in the famed former chocolate factory.", + link: "https://www.fishermanswharf.org/", + }, +] +const SFConf = () => { + return ( +
    +

    + About San Francisco Bay Area +

    +
    + {images.map(image => ( +
    + +
    + ))} +
    +
    + ) +} + +export default SFConf diff --git a/src/components/Conf/Schedule/index.tsx b/src/components/Conf/Schedule/index.tsx new file mode 100644 index 0000000000..67ad2af7bb --- /dev/null +++ b/src/components/Conf/Schedule/index.tsx @@ -0,0 +1,56 @@ +import React from "react" + +interface Day { + date: string + list: string[] +} +const Days: Day[] = [ + { + date: "September 19", + list: ["Workshops", "Sponsor Showcase"], + }, + { + date: "September 20", + list: ["Keynotes", "Breakouts", "Sponsor Showcase"], + }, + { + date: "September 21", + list: ["Keynotes", "Breakouts", "Sponsor Showcase"], + }, +] +const ScheduleGlanceConf = () => { + return ( + // Invisible padding so anchor links align to the header menu +
    +
    +
    +

    Schedule

    +
    +
    +
    + {Days.map((day, i) => ( +
    +
    +
    +

    + {day.date} +

    +
      + {day.list.map((item, i) => ( +
    • + {item} +
    • + ))} +
    +
    +
    +
    + ))} +
    +
    +
    +
    + ) +} + +export default ScheduleGlanceConf diff --git a/src/components/Conf/Section/index.tsx b/src/components/Conf/Section/index.tsx new file mode 100644 index 0000000000..e1df75589f --- /dev/null +++ b/src/components/Conf/Section/index.tsx @@ -0,0 +1,22 @@ +import React from "react" + +interface Props { + id: string + title: string + children: React.ReactNode + className?: string +} + +const SectionConf = ({ id, title, children }: Props): JSX.Element => ( + // Padding down so hash-links to this id display below the header menu +
    +

    + + {title} + +

    + {children} +
    +) + +export default SectionConf diff --git a/src/components/Conf/Seo/index.tsx b/src/components/Conf/Seo/index.tsx new file mode 100644 index 0000000000..bce0aa805f --- /dev/null +++ b/src/components/Conf/Seo/index.tsx @@ -0,0 +1,42 @@ +import React from "react" + +export const defaults = { + title: "GraphQLConf 2023 — Sept 19-21 • SF Bay Area", + twitterTitle: "#GraphQLConf 2023 — Sept 19-21 • SF Bay Area", + description: + "The official GraphQL conference hosted by the GraphQL Foundation.", + url: "https://graphql.org/conf/", + image: "http://graphql.org/img/conf/social-pk.jpg", +} + +export default function SeoConf(props: { + title?: string + twitterTitle?: string + description?: string +}) { + const title = props.title ?? defaults.title + const twitterTitle = + props.twitterTitle ?? props.title ?? defaults.twitterTitle + const description = props.description ?? defaults.description + const image = defaults.image + + return ( + <> + {title} + + + + + + + + + + + + + ) +} diff --git a/src/components/Conf/SocialIcons/index.tsx b/src/components/Conf/SocialIcons/index.tsx new file mode 100644 index 0000000000..cc4c67a473 --- /dev/null +++ b/src/components/Conf/SocialIcons/index.tsx @@ -0,0 +1,93 @@ +import React from "react" +import { ReactComponent as GitHubIcon } from "../../../../static/img/logos/github.svg" +import { ReactComponent as DiscordIcon } from "../../../../static/img/logos/discord.svg" +import { ReactComponent as TwitterIcon } from "../../../../static/img/logos/twitter.svg" + +const SocialIcons = () => { + return ( + <> + + + + + + + + + + + {/* LinkedIn */} + + + + + + + {/* YouTube */} + + + + + + {/* Facebook */} + + + + + + ) +} + +export default SocialIcons diff --git a/src/components/Conf/Speakers/index.tsx b/src/components/Conf/Speakers/index.tsx new file mode 100644 index 0000000000..ac583edf54 --- /dev/null +++ b/src/components/Conf/Speakers/index.tsx @@ -0,0 +1,111 @@ +import React from "react" +import ButtonConf from "../Button" +import { TwitterLogoIcon } from "@radix-ui/react-icons" + +interface Speaker { + name: string + title: string + twitter: string + image: string +} + +const speakers: Speaker[] = [ + { + name: "Lee Byron", + title: "Co-creator of GraphQL, Director of the GraphQL Foundation", + twitter: "https://twitter.com/leeb", + image: "/img/conf/speakers/leebyron.jpg", + }, + { + name: "Idit Levine", + title: "Founder of Solo.io", + twitter: "https://twitter.com/idit_levine", + image: + "https://pbs.twimg.com/profile_images/922586508871139330/60rIRufM_400x400.jpg", + }, + { + name: "Matteo Collina", + title: "Creator of Fastify, Platformatic CTO, Node TSC", + twitter: "https://twitter.com/matteocollina", + image: + "https://pbs.twimg.com/profile_images/1541698320443314179/4Cp5IrGB_400x400.jpg", + }, + { + name: "Marc-André Giroux", + title: "Author of Production Ready GraphQL, GraphQL TSC", + twitter: "https://twitter.com/__xuorig__", + image: "/img/conf/speakers/marcandre.jpg", + }, + { + name: "Uri Goldshtein", + title: "Founder of The Guild, GraphQL TSC", + twitter: "https://twitter.com/UriGoldshtein", + image: + "https://pbs.twimg.com/profile_images/842775577761386497/sjLkh27C_400x400.jpg", + }, +] + +const SpeakersConf = () => { + const today = new Date() + const expiredDate = new Date("2023-06-10") + const isExpired = expiredDate > today + + return ( + // Invisible padding so anchor links align to the header menu +
    +
    +
    +

    Speakers

    +
    +
    + {speakers.map((speaker, i) => ( +
    +
    +
    + {speaker.name} +
    + + + +
    +
    +
    + {speaker.name} +
    +
    + {speaker.title} +
    +
    +
    + ))} +
    +
    +

    + GraphQLConf brings together the creators of some of the most + important technologies behind GraphQL. These speakers will share + their experience, insights and knowledge as they discuss the + challenges facing the growing GraphQL ecosystem. If you have + something worth sharing, submit an application to speak! +

    + {isExpired && ( +
    + + Submit to Speak + +
    + )} +
    +
    +
    + ) +} + +export default SpeakersConf diff --git a/src/components/Conf/Sponsors/index.tsx b/src/components/Conf/Sponsors/index.tsx new file mode 100644 index 0000000000..b969a46cb0 --- /dev/null +++ b/src/components/Conf/Sponsors/index.tsx @@ -0,0 +1,170 @@ +/* eslint-disable tailwindcss/no-custom-classname */ +import React from "react" +import { ReactComponent as Stellate } from "../../../../static/img/conf/Sponsors/Stellate.svg" +import { ReactComponent as Postman } from "../../../../static/img/conf/Sponsors/Postman.svg" +import { ReactComponent as Solo } from "../../../../static/img/conf/Sponsors/Solo.svg" +import { ReactComponent as Hasura } from "../../../../static/img/conf/Sponsors/Hasura.svg" +import { ReactComponent as TheGraph } from "../../../../static/img/conf/Sponsors/TheGraph.svg" +import { ReactComponent as TheGuild } from "../../../../static/img/conf/Sponsors/TheGuild.svg" + +interface Image { + iconPath: string + name: string + link: string +} + +function alphabetSort(a: Image, b: Image) { + if (a.name < b.name) { + return -1 + } + if (a.name > b.name) { + return 1 + } + return 0 +} + +const sponsorDiamond: Image[] = [ + { + iconPath: TheGuild, + name: "The Guild", + link: "https://the-guild.dev/", + }, + { + iconPath: Postman, + name: "Postman", + link: "https://www.postman.com/", + }, + { + iconPath: Hasura, + name: "Hasura", + link: "https://hasura.io/", + }, +] + +const sponsorPlatinum: Image[] = [ + { + iconPath: Solo, + name: "Solo.io", + link: "https://www.solo.io/", + }, +] + +const sponsorGold: Image[] = [ + { + iconPath: TheGraph, + name: "The Graph", + link: "https://thegraph.com/", + }, +] + +const sponsorSilver: Image[] = [ + { + iconPath: Stellate, + name: "Stellate", + link: "https://stellate.co/", + }, +] + +const workshopDaySponsors: Image[] = [ + { + iconPath: TheGuild, + name: "The Guild", + link: "https://the-guild.dev/", + workshopSponsor: true, + }, +] + +const SponsersConf = () => { + return ( +
    +

    + Sponsors +

    +

    + DIAMOND +

    +
    + {sponsorDiamond.map((sponsor, i) => ( + + + + ))} +
    +

    + PLATINUM +

    +
    + {sponsorPlatinum + .sort((a, b) => alphabetSort(a, b)) + .map((sponsor, i) => ( + + + + ))} +
    + +

    + GOLD +

    +
    + {sponsorGold + .sort((a, b) => alphabetSort(a, b)) + .map((sponsor, i) => ( + + + + ))} +
    + +

    + SILVER +

    +
    + {sponsorSilver + .sort((a, b) => alphabetSort(a, b)) + .map((sponsor, i) => ( + + + + ))} +
    +

    + Workshop Day Sponsor +

    +
    + {workshopDaySponsors.map((sponsor, i) => ( + + + + ))} +
    +
    + ) +} + +export default SponsersConf diff --git a/src/components/Conf/Venue/index.tsx b/src/components/Conf/Venue/index.tsx new file mode 100644 index 0000000000..e1b1ad1154 --- /dev/null +++ b/src/components/Conf/Venue/index.tsx @@ -0,0 +1,251 @@ +import React from "react" +import { ReactComponent as TrainIcon } from "../../../../static/img/conf/train.svg" +import { ReactComponent as AroundIcon } from "../../../../static/img/conf/around.svg" +import { ReactComponent as ParkingIcon } from "../../../../static/img/conf/parking.svg" +import { ReactComponent as BusIcon } from "../../../../static/img/conf/bus.svg" + +const VenueConf = () => { + return ( + // Invisible padding so anchor links align to the header menu +
    +

    + Location & Venue +

    +
    +

    + GraphQLConf 2023 is hosted in the San Francisco Bay Area, where + GraphQL was first created. It's hosted at the{" "} + + Hyatt Regency SFO + + hotel in Burlingame, CA. +

    + +
    +
    +
    +
    +

    + Venue & Lodging +

    +

    + + Hyatt Regency SFO + +

    +

    + + 1333 Old Bayshore Hwy Burlingame, CA 94010 + +

    +
    + Dates with Availability: September 18, 19, 20, 21, 2023 +
    + Room Rates Start From: $179.00 +
    + Room Block Closes: September 4, 2023 +
    + + (Please note, the rate is valid until the cut-off date or the + room block is full) + +
    + Please note, rooms will most likely sell out in advance of the{" "} + + room block + + close dates. We encourage you to book early to secure a room at + the conference rate. +
    +
    + +
    +

    + Alternate lodging options +

    + + Holiday Inn Express San Francisco Airport South, and IHG Hotel + +

    + Important: The Linux Foundation + will never reach out to attendees by phone to make hotel + reservations for our conferences. Please be advised that the most + secure way to book in our discounted room block is by using the + direct booking link provided below or by calling the hotel + directly. If you receive a phone call or email from someone + claiming to be with The Linux Foundation or the hotel and they + attempt to sell you a hotel room, please email us at{" "} + + housing@linuxfoundation.org + + . +

    +

    + Welcome to all +

    +

    + GraphQLConf is welcome to all. Please read our{" "} + + diversity & inclusion + {" "} + guide and{" "} + + code of conduct + + . Your health and safety is our top priority. We have considered a + range of both{" "} + + onsite resources + {" "} + and{" "} + + emergency resources + {" "} + as well as a{" "} + + health & safety + {" "} + policy. +

    +
    +
    +
    +
    + {[ + { + title: "Public Transportation", + icon: TrainIcon, + content: ( +
    + + SamTrans + +

    + Service from Burlingame to San Francisco is available for $5 + (adults) or $2.50 youth and seniors.{" "} + + Learn More + +

    + + Bay Area Rapid Transit (BART): + +

    + Take the Hyatt Shuttle Bus to/from SFO International Terminal + to connect with BART. Approximate cost from the station to + downtown San Francisco is $8.65 one-way. +

    +
    + ), + }, + { + title: "Airport Information", + icon: AroundIcon, + content: ( +
    + + San Francisco International Airport (SFO) + +

    + Drive time from venue: 7 mins. +
    + Distance from venue: 3.1 miles. +

    + + Driving Directions from SFO to Venue + +
    + ), + }, + { + title: "Parking", + icon: ParkingIcon, + content: ( +
    + + The Hyatt Regency SFO offers self-parking. + +

    Self-Parking:

    +

    + 0-1 hour: $12 +
    + 1-6 hours: $22/hour +
    + 6+ hours or overnight: $40/night +

    +
    + ), + }, + { + title: "Complimentary Shuttle Service", + icon: BusIcon, + content: ( +
    + + Hyatt Regency SFO + +

    + The Hyatt Regency SFO offers a 24-hour complimentary + San Francisco International Airport (SFO) shuttle which runs + every 15 minutes from 4:00AM until 1:00AM and + every 30 minutes from 1:00AM until 4:00AM. At + SFO, go to the area marked "Hotel Shuttle." The bus is marked + "Hyatt Regency and Marriott.” +

    +
    + ), + }, + ].map(o => ( +
    +
    + +

    + {o.title} +

    + {o.content} +
    +
    + ))} +
    +
    + ) +} + +export default VenueConf diff --git a/src/components/ConfLayout/index.tsx b/src/components/ConfLayout/index.tsx new file mode 100644 index 0000000000..26ad18fa4e --- /dev/null +++ b/src/components/ConfLayout/index.tsx @@ -0,0 +1,55 @@ +import React from "react" +import { Link } from "gatsby" +import DocsSidebar from "../DocsSidebar" +import Marked from "../Marked" + +interface Props { + title: string + heroText: string + nextDoc: any + permalink: string + sideBarData: any + rawMarkdownBody: string + pageContext: any +} + +const Index = ({ + title, + heroText, + nextDoc, + sideBarData, + rawMarkdownBody, + pageContext, +}: Props) => { + return ( +
    +
    +
    +
    + GraphQLConf logo +
    {heroText}
    +
    +
    +
    +
    +

    {title}

    + {rawMarkdownBody} + {nextDoc?.frontmatter?.permalink && ( + + + Continue Reading → + + + {nextDoc.frontmatter.title} + + + )} +
    + +
    +
    +
    + ) +} + +export default Index diff --git a/src/components/DocsLayout/index.tsx b/src/components/DocsLayout/index.tsx index bc057a8a1b..d364cb8f1c 100644 --- a/src/components/DocsLayout/index.tsx +++ b/src/components/DocsLayout/index.tsx @@ -1,7 +1,7 @@ import React from "react" import { Link } from "gatsby" import DocsSidebar from "../DocsSidebar" -import Marked from '../Marked' +import Marked from "../Marked" interface Props { title: string @@ -9,15 +9,22 @@ interface Props { permalink: string sideBarData: any rawMarkdownBody: string + pageContext: any } -const index = ({ title, nextDoc, sideBarData, rawMarkdownBody }: Props) => { +const index = ({ + title, + nextDoc, + sideBarData, + rawMarkdownBody, + pageContext, +}: Props) => { return (

    {title}

    - {rawMarkdownBody} + {rawMarkdownBody} {nextDoc?.frontmatter?.permalink && ( diff --git a/src/components/DocsSidebar/index.tsx b/src/components/DocsSidebar/index.tsx index 24920f80f9..12c374ef50 100644 --- a/src/components/DocsSidebar/index.tsx +++ b/src/components/DocsSidebar/index.tsx @@ -16,16 +16,18 @@ const SidebarForCategory = ({ category }: any) => { {page.frontmatter.sublinks && (
      - {page.frontmatter.sublinks.split(",").map((sublink: any, i: number) => ( -
    • - - {sublink} - -
    • - ))} + {page.frontmatter.sublinks + .split(",") + .map((sublink: any, i: number) => ( +
    • + + {sublink} + +
    • + ))}
    )} diff --git a/src/components/FAQLayout/index.tsx b/src/components/FAQLayout/index.tsx new file mode 100644 index 0000000000..0c87814937 --- /dev/null +++ b/src/components/FAQLayout/index.tsx @@ -0,0 +1,24 @@ +import React from "react" +import FAQSection from "../FAQSection" + +interface Props { + title: string + rawMarkdownBody: string + pageContext: any +} + +const index = ({ title, rawMarkdownBody, pageContext }: Props) => { + return ( +
    +
    + +
    +
    + ) +} + +export default index diff --git a/src/components/FAQSection/index.tsx b/src/components/FAQSection/index.tsx new file mode 100644 index 0000000000..5c506ab7ba --- /dev/null +++ b/src/components/FAQSection/index.tsx @@ -0,0 +1,17 @@ +import React from "react" +import Marked from "../Marked" + +interface Props { + title: string + rawMarkdownBody: string + pageContext: any +} + +const FAQSection = ({ title, rawMarkdownBody, pageContext }: Props) => ( +
    +

    {title}

    + {rawMarkdownBody} +
    +) + +export default FAQSection diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index a7bc73be6c..a20a7d4edb 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,77 +1,93 @@ import React from "react" import Link from "../Link" +import { ReactComponent as GitHubIcon } from "../../../static/img/logos/github.svg" +import { ReactComponent as TwitterIcon } from "../../../static/img/logos/twitter.svg" +import { ReactComponent as DiscordIcon } from "../../../static/img/logos/discord.svg" +import { ReactComponent as StackOverflowIcon } from "../../../static/img/logos/stackoverflow.svg" +import { ReactComponent as EditIcon } from "../../../static/img/edit.svg" interface LinkItem { - text:string, - href:string + text: string + href: string + icon?: string } interface FooterLinks { - text:string, - href?:string, + text: string + href?: string subsections: LinkItem[] } -const getLinks = (sourcePath: string): FooterLinks[] => [ +const getLinks = (sourcePath?: string): FooterLinks[] => [ { text: "Learn", href: "/learn/", subsections: [ - { text: "Introduction", href: "/learn/" }, - { text: "Query Language", href: "/learn/queries/" }, - { text: "Type System", href: "/learn/schema/" }, - { text: "Execution", href: "/learn/execution/" }, + { text: "Introduction to GraphQL", href: "/learn/" }, { text: "Best Practices", href: "/learn/best-practices/" }, + { text: "Frequently Asked Questions", href: "/faq/" }, + { text: "Training Courses", href: "/community/users/#training-courses" }, ], }, { text: "Code", href: "/code", subsections: [ - { text: "Servers", href: "/code/#server-libraries" }, - { text: "Clients", href: "/code/#graphql-clients" }, - { text: "Tools", href: "/code/#tools" }, + { + text: "GitHub", + href: "https://github.com/graphql", + icon: GitHubIcon, + }, + { text: "GraphQL Specification", href: "https://spec.graphql.org" }, + { text: "Libraries & Tools", href: "/code/" }, + { text: "Services & Vendors", href: "/code/#services" }, ], }, { text: "Community", href: "/community", subsections: [ - { text: "Upcoming Events", href: "/community/upcoming-events/" }, { - text: "Stack Overflow", - href: "http://stackoverflow.com/questions/tagged/graphql", + text: "@graphql", + href: "https://twitter.com/graphql", + icon: TwitterIcon, }, { - text: "Facebook Group", - href: "https://www.facebook.com/groups/graphql.community/", + text: "Discord", + href: "https://discord.graphql.org/", + icon: DiscordIcon, + }, + { + text: "Stack Overflow", + href: "http://stackoverflow.com/questions/tagged/graphql", + icon: StackOverflowIcon, }, - { text: "Twitter", href: "https://twitter.com/GraphQL" }, + { text: "Resources", href: "/community/users/" }, + { text: "Events", href: "/community/upcoming-events/" }, + { text: "Landscape", href: "https://landscape.graphql.org" }, ], }, { - text: "More", + text: "& More", subsections: [ - { - text: "GraphQL Specification", - href: "/https://graphql.github.io/graphql-spec/", - }, - { text: "GraphQL Foundation", href: "https://foundation.graphql.org/" }, - { - text: "GraphQL GitHub", - href: "https://github.com/graphql", - }, - { - text: "Edit this page ✎", + { text: "News Blog", href: "/blog/" }, + { text: "GraphQL Foundation", href: "/foundation/" }, + { text: "GraphQL Community Grant", href: "/foundation/community-grant/" }, + { text: "Logo and Brand Guidelines", href: "/brand" }, + { text: "Code of Conduct", href: "/codeofconduct/" }, + { text: "Contact Us", href: "/foundation/contact/" }, + sourcePath && { + text: "Edit this page", href: "https://github.com/graphql/graphql.github.io/edit/source/" + sourcePath, + icon: EditIcon, }, - ], + ].filter(Boolean) as LinkItem[], }, ] -const Footer = ({sourcePath}: { sourcePath: string }) => { +const Footer = ({ sourcePath }: { sourcePath?: string }) => { return (
    @@ -83,11 +99,16 @@ const Footer = ({sourcePath}: { sourcePath: string }) => { {section.href ? ( {section.text} ) : ( - section.text + {section.text} )}

    - {section.subsections.map((subsection: any, i) => ( - + {section.subsections.map((subsection, i) => ( + + {subsection.icon && } {subsection.text} ))} @@ -96,18 +117,16 @@ const Footer = ({sourcePath}: { sourcePath: string }) => {
    Copyright © {`${new Date().getFullYear()}`} The GraphQL Foundation. - All rights reserved. The Linux Foundation has registered trademarks - and uses trademarks. For a list of trademarks of The Linux Foundation, - please see our{" "} - - Trademark Usage - {" "} - page. Linux is a registered trademark of Linus Torvalds.{" "} - Privacy Policy{" "} - and Terms of Use. + All rights reserved. +
    + For web site terms of use, trademark policy and general project + policies please see  + + https://lfprojects.org + + .
    -
    ) } diff --git a/src/components/FoundationLayout/index.tsx b/src/components/FoundationLayout/index.tsx new file mode 100644 index 0000000000..4a58e7e6ce --- /dev/null +++ b/src/components/FoundationLayout/index.tsx @@ -0,0 +1,58 @@ +import React from "react" +import { Link } from "gatsby" +import DocsSidebar from "../DocsSidebar" +import Marked from "../Marked" + +interface Props { + title: string + heroText: string + nextDoc: any + permalink: string + sideBarData: any + rawMarkdownBody: string + pageContext: any +} + +const Index = ({ + title, + heroText, + nextDoc, + sideBarData, + rawMarkdownBody, + pageContext, +}: Props) => { + return ( +
    +
    +
    +
    + GraphQL Foundation logo +
    {heroText}
    +
    +
    +
    +
    +

    {title}

    + {rawMarkdownBody} + {nextDoc?.frontmatter?.permalink && ( + + + Continue Reading → + + + {nextDoc.frontmatter.title} + + + )} +
    + +
    +
    +
    + ) +} + +export default Index diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index fba9ca0023..dc61e491f3 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -1,6 +1,7 @@ import React from "react" import { Link } from "gatsby" import HeaderLinks from "../HeaderLinks" +import Logo from "../Logo" import Search from "../Search" const Header = () => { @@ -8,16 +9,10 @@ const Header = () => {
    - GraphQL Logo + GraphQL - +
    diff --git a/src/components/HeaderLinks/index.tsx b/src/components/HeaderLinks/index.tsx index d939ce6a95..0d393f3425 100644 --- a/src/components/HeaderLinks/index.tsx +++ b/src/components/HeaderLinks/index.tsx @@ -8,33 +8,52 @@ interface LinkItem { } const links: LinkItem[] = [ - { section: "learn", text: "Learn", href: "/learn/" }, - { section: "code", text: "Code", href: "/code/" }, - { section: "community", text: "Community", href: "/community/" }, { - section: "spec", - text: "Spec", - href: "https://graphql.github.io/graphql-spec/", + section: "learn", + text: "Learn", + href: "/learn/", + }, + { + section: "code", + text: "Code", + href: "/code/", + }, + { + section: "community", + text: "Community", + href: "/community/", }, { - section: "codeofconduct", - text: "Code of Conduct", - href: "/codeofconduct/", + section: "faq", + text: "FAQ", + href: "/faq/", + }, + { + section: "spec", + text: "Spec", + href: "https://spec.graphql.org/", }, { section: "foundation", text: "Foundation", - href: "https://foundation.graphql.org/", + href: "/foundation/", + }, + { + section: "news", + text: "News", + href: "/blog/", }, - { section: "landscape", text: "Landscape", href: "https://l.graphql.org/" }, ] export default () => ( ) diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index fbeed2009f..ee46647be0 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -1,35 +1,27 @@ import React from "react" import Footer from "../Footer" import Header from "../Header" -import Seo from "../Seo" import "../../assets/css/style.less" - -interface PageContext { - sourcePath: string -} - +import "../../assets/css/global.css" +import BackToTop from "../BackToTop" interface Props { children: React.ReactNode - title?: string - description?: string className?: string - pageContext: PageContext + pageContext?: { sourcePath?: string } } const IndexLayout = ({ - title, - description, children, className, - pageContext: { sourcePath }, + pageContext: { sourcePath } = {}, }: Props): JSX.Element => ( <> -
    {children}
    + ) diff --git a/src/components/Link/index.tsx b/src/components/Link/index.tsx index 58aef00f64..ceacf22c58 100644 --- a/src/components/Link/index.tsx +++ b/src/components/Link/index.tsx @@ -3,15 +3,22 @@ import { Link } from "gatsby" interface Props { children?: React.ReactNode - href: string, - className?:string + href: string + className?: string } -const LinkWrapped = ({ href, children,className,...props }: Props) => { +const LinkWrapped = ({ href, children, className, ...props }: Props) => { const isExternalUrl = href.slice(0, 4) === "http" return isExternalUrl ? ( - + {children} ) : ( diff --git a/src/components/Logo/index.tsx b/src/components/Logo/index.tsx new file mode 100644 index 0000000000..dba627d725 --- /dev/null +++ b/src/components/Logo/index.tsx @@ -0,0 +1,16 @@ +import React from "react" + +export default function Logo({ className }: { className?: string }) { + return ( + GraphQL Logo { + event.preventDefault() + document.location.assign("/brand") + }} + /> + ) +} diff --git a/src/components/Marked/Header.tsx b/src/components/Marked/Header.tsx index 3ef9da7c9c..81783d8f88 100644 --- a/src/components/Marked/Header.tsx +++ b/src/components/Marked/Header.tsx @@ -1,24 +1,24 @@ -import React from 'react'; -import {toSlug} from '../../utils/slug'; +import React from "react" +import { toSlug } from "../../utils/slug" -export default (props) => { - var usedSlugs = props.usedSlugs || {}; - var append = ''; - var loopCount = 0; - do { - - var slug = toSlug((props.toSlug || props.children) + append); - append = '-' + (++loopCount); - } while (usedSlugs[slug]); - usedSlugs[slug] = slug; - var Heading = 'h' + props.level; - var url = props.url || ''; - - //id is required for gatsby's anchor tags to work - return React.createElement(Heading, null, [ - , - props.children, - # - ]); - } - \ No newline at end of file +export default props => { + var usedSlugs = props.usedSlugs || {} + var append = "" + var loopCount = 0 + do { + var slug = toSlug((props.toSlug || props.children) + append) + append = "-" + ++loopCount + } while (usedSlugs[slug]) + usedSlugs[slug] = slug + var Heading = "h" + props.level + var url = props.url || "" + + //id is required for gatsby's anchor tags to work + return React.createElement(Heading, null, [ + , + props.children, + + # + , + ]) +} diff --git a/src/components/Marked/MiniGraphiQL.tsx b/src/components/Marked/MiniGraphiQL.tsx index 53fb1e3138..d50aa98a6f 100644 --- a/src/components/Marked/MiniGraphiQL.tsx +++ b/src/components/Marked/MiniGraphiQL.tsx @@ -8,7 +8,7 @@ */ import React from "react" -import marked from "marked" +import { marked } from "marked" import { graphql, formatError, parse, typeFromAST } from "graphql" diff --git a/src/components/Marked/index.tsx b/src/components/Marked/index.tsx index 7c43477620..a4f6db273b 100644 --- a/src/components/Marked/index.tsx +++ b/src/components/Marked/index.tsx @@ -1,21 +1,20 @@ // @ts-nocheck /** - * marked - a markdown parser + * marked - a Markdown parser * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed) * https://github.com/chjj/marked */ import React from "react" -import users from "../../pages/users" import Prism from "../Prism/index" import Header from "./Header" import MiniGraphiQL from "./MiniGraphiQL" import { StarWarsSchema } from "./swapiSchema" -import { UsersSchema } from './usersSchema'; +import { UsersSchema } from "./usersSchema" -export default function Marked(props) { - return
    {marked(props.children, props)}
    +export default function Marked(props: { children: string }) { + return
    {props.children && marked(props.children, props)}
    } /** @@ -79,7 +78,8 @@ block.normal = merge({}, block) block.gfm = merge({}, block.normal, { //fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/, - fences: /^ *(`{3,}|~{3,}) *([^\s{]+)?(?: *\{ *((?:\d+(?: *- *\d+)?(?: *, *\d+(?: *- *\d+)?)*) *)?\})? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/, + fences: + /^ *(`{3,}|~{3,}) *([^\s{]+)?(?: *\{ *((?:\d+(?: *- *\d+)?(?: *, *\d+(?: *- *\d+)?)*) *)?\})? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/, paragraph: /^/, }) @@ -570,7 +570,13 @@ InlineLexer.prototype.output = function (src) { href = text } - out.push(React.createElement("a", { href: this.sanitizeUrl(href), key:href }, text)) + out.push( + React.createElement( + "a", + { href: this.sanitizeUrl(href), key: href }, + text + ) + ) continue } @@ -579,7 +585,13 @@ InlineLexer.prototype.output = function (src) { src = src.substring(cap[0].length) text = cap[1] href = text - out.push(React.createElement("a", { href: this.sanitizeUrl(href), key:href }, text)) + out.push( + React.createElement( + "a", + { href: this.sanitizeUrl(href), key: href }, + text + ) + ) continue } @@ -862,7 +874,7 @@ Parser.prototype.tok = function () { StarWars: StarWarsSchema, Users: UsersSchema, } - const schema = schemaMap[metaData.schema || 'StarWars']; + const schema = schemaMap[metaData.schema || "StarWars"] return ( { - humanData[ship.id] = ship; -}); +const humanData = {} +humans.forEach(ship => { + humanData[ship.id] = ship +}) const droids = [ { - id: '2000', - name: 'C-3PO', - friends: [ '1000', '1002', '1003', '2001' ], - appearsIn: [ 'NEWHOPE', 'EMPIRE', 'JEDI' ], - primaryFunction: 'Protocol', + id: "2000", + name: "C-3PO", + friends: ["1000", "1002", "1003", "2001"], + appearsIn: ["NEWHOPE", "EMPIRE", "JEDI"], + primaryFunction: "Protocol", }, { - id: '2001', - name: 'R2-D2', - friends: [ '1000', '1002', '1003' ], - appearsIn: [ 'NEWHOPE', 'EMPIRE', 'JEDI' ], - primaryFunction: 'Astromech', + id: "2001", + name: "R2-D2", + friends: ["1000", "1002", "1003"], + appearsIn: ["NEWHOPE", "EMPIRE", "JEDI"], + primaryFunction: "Astromech", }, -]; +] -const droidData = {}; -droids.forEach((ship) => { - droidData[ship.id] = ship; -}); +const droidData = {} +droids.forEach(ship => { + droidData[ship.id] = ship +}) const starships = [ { - id: '3000', - name: 'Millenium Falcon', + id: "3000", + name: "Millenium Falcon", length: 34.37, }, { - id: '3001', - name: 'X-Wing', + id: "3001", + name: "X-Wing", length: 12.5, }, { - id: '3002', - name: 'TIE Advanced x1', + id: "3002", + name: "TIE Advanced x1", length: 9.2, }, { - id: '3003', - name: 'Imperial shuttle', + id: "3003", + name: "Imperial shuttle", length: 20, }, -]; +] -const starshipData = {}; -starships.forEach((ship) => { - starshipData[ship.id] = ship; -}); +const starshipData = {} +starships.forEach(ship => { + starshipData[ship.id] = ship +}) /** * Helper function to get a character by ID. */ function getCharacter(id) { // Returning a promise just to illustrate GraphQL.js's support. - return Promise.resolve(humanData[id] || droidData[id]); + return Promise.resolve(humanData[id] || droidData[id]) } /** * Allows us to query for a character's friends. */ function getFriends(character) { - return character.friends.map(id => getCharacter(id)); + return character.friends.map(id => getCharacter(id)) } /** * Allows us to fetch the undisputed hero of the Star Wars trilogy, R2-D2. */ function getHero(episode) { - if (episode === 'EMPIRE') { + if (episode === "EMPIRE") { // Luke is the hero of Episode V. - return humanData['1000']; + return humanData["1000"] } // Artoo is the hero otherwise. - return droidData['2001']; + return droidData["2001"] } /** * Allows us to query for the human with the given id. */ function getHuman(id) { - return humanData[id]; + return humanData[id] } /** * Allows us to query for the droid with the given id. */ function getDroid(id) { - return droidData[id]; + return droidData[id] } function getStarship(id) { - return starshipData[id]; + return starshipData[id] } function toCursor(str) { - return Buffer("cursor" + str).toString('base64'); + return Buffer("cursor" + str).toString("base64") } function fromCursor(str) { - return Buffer.from(str, 'base64').toString().slice(6); + return Buffer.from(str, "base64").toString().slice(6) } const resolvers = { @@ -364,58 +366,56 @@ const resolvers = { starship: (root, { id }) => getStarship(id), reviews: () => null, search: (root, { text }) => { - const re = new RegExp(text, 'i'); + const re = new RegExp(text, "i") - const allData = [ - ...humans, - ...droids, - ...starships, - ]; + const allData = [...humans, ...droids, ...starships] - return allData.filter((obj) => re.test(obj.name)); + return allData.filter(obj => re.test(obj.name)) }, }, Mutation: { createReview: (root, { episode, review }) => review, }, Character: { - __resolveType(data, context, info){ - if(humanData[data.id]){ - return info.schema.getType('Human'); + __resolveType(data, context, info) { + if (humanData[data.id]) { + return "Human" } - if(droidData[data.id]){ - return info.schema.getType('Droid'); + if (droidData[data.id]) { + return "Droid" } - return null; + return null }, }, Human: { height: ({ height }, { unit }) => { - if (unit === 'FOOT') { - return height * 3.28084; + if (unit === "FOOT") { + return height * 3.28084 } - return height; + return height }, friends: ({ friends }) => friends.map(getCharacter), friendsConnection: ({ friends }, { first, after }) => { - first = first || friends.length; - after = after ? parseInt(fromCursor(after), 10) : 0; - const edges = friends.map((friend, i) => ({ - cursor: toCursor(i+1), - node: getCharacter(friend) - })).slice(after, first + after); - const slicedFriends = edges.map(({ node }) => node); + first = first || friends.length + after = after ? parseInt(fromCursor(after), 10) : 0 + const edges = friends + .map((friend, i) => ({ + cursor: toCursor(i + 1), + node: getCharacter(friend), + })) + .slice(after, first + after) + const slicedFriends = edges.map(({ node }) => node) return { edges, friends: slicedFriends, pageInfo: { startCursor: edges.length > 0 ? edges[0].cursor : null, hasNextPage: first + after < friends.length, - endCursor: edges.length > 0 ? edges[edges.length - 1].cursor : null + endCursor: edges.length > 0 ? edges[edges.length - 1].cursor : null, }, - totalCount: friends.length - }; + totalCount: friends.length, + } }, starships: ({ starships }) => starships.map(getStarship), appearsIn: ({ appearsIn }) => appearsIn, @@ -423,23 +423,25 @@ const resolvers = { Droid: { friends: ({ friends }) => friends.map(getCharacter), friendsConnection: ({ friends }, { first, after }) => { - first = first || friends.length; - after = after ? parseInt(fromCursor(after), 10) : 0; - const edges = friends.map((friend, i) => ({ - cursor: toCursor(i+1), - node: getCharacter(friend) - })).slice(after, first + after); - const slicedFriends = edges.map(({ node }) => node); + first = first || friends.length + after = after ? parseInt(fromCursor(after), 10) : 0 + const edges = friends + .map((friend, i) => ({ + cursor: toCursor(i + 1), + node: getCharacter(friend), + })) + .slice(after, first + after) + const slicedFriends = edges.map(({ node }) => node) return { edges, friends: slicedFriends, pageInfo: { startCursor: edges.length > 0 ? edges[0].cursor : null, hasNextPage: first + after < friends.length, - endCursor: edges.length > 0 ? edges[edges.length - 1].cursor : null + endCursor: edges.length > 0 ? edges[edges.length - 1].cursor : null, }, - totalCount: friends.length - }; + totalCount: friends.length, + } }, appearsIn: ({ appearsIn }) => appearsIn, }, @@ -455,25 +457,25 @@ const resolvers = { }, Starship: { length: ({ length }, { unit }) => { - if (unit === 'FOOT') { - return length * 3.28084; + if (unit === "FOOT") { + return length * 3.28084 } - return length; - } + return length + }, }, SearchResult: { - __resolveType(data, context, info){ - if(humanData[data.id]){ - return info.schema.getType('Human'); + __resolveType(data, context, info) { + if (humanData[data.id]) { + return "Human" } - if(droidData[data.id]){ - return info.schema.getType('Droid'); + if (droidData[data.id]) { + return "Droid" } - if(starshipData[data.id]){ - return info.schema.getType('Starship'); + if (starshipData[data.id]) { + return "Starship" } - return null; + return null }, }, } @@ -484,5 +486,5 @@ const resolvers = { */ export const StarWarsSchema = makeExecutableSchema({ typeDefs, - resolvers -}); + resolvers, +}) diff --git a/src/components/Prism/Prism.tsx b/src/components/Prism/Prism.tsx index 82739d6a51..d075d64e84 100644 --- a/src/components/Prism/Prism.tsx +++ b/src/components/Prism/Prism.tsx @@ -5,69 +5,81 @@ * @author Lea Verou http://lea.verou.me */ -var Prism; +var Prism // Private helper vars -var lang = /\blang(?:uage)?-(\w+)\b/i; -var uniqueId = 0; +var lang = /\blang(?:uage)?-(\w+)\b/i +var uniqueId = 0 -var _ = Prism = { +var _ = (Prism = { util: { encode: function (tokens) { if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); + return new Token( + tokens.type, + _.util.encode(tokens.content), + tokens.alias + ) + } else if (_.util.type(tokens) === "Array") { + return tokens.map(_.util.encode) } else { - return tokens.replace(/&/g, '&').replace(/ text.length) { // Something went terribly wrong, ABORT, ABORT! - break tokenloop; + break tokenloop } if (str instanceof Token) { - continue; + continue } - pattern.lastIndex = 0; + pattern.lastIndex = 0 var match = pattern.exec(str), - delNum = 1; + delNum = 1 // Greedy patterns can override/remove up to two previously matched tokens if (!match && greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - match = pattern.exec(text); + pattern.lastIndex = pos + match = pattern.exec(text) if (!match) { - break; + break } var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; + to = match.index + match[0].length, + k = i, + p = pos for (var len = strarr.length; k < len && p < to; ++k) { - p += (strarr[k].matchedStr || strarr[k]).length; + p += (strarr[k].matchedStr || strarr[k]).length // Move the index i to the element in strarr that is closest to from if (from >= p) { - ++i; - pos = p; + ++i + pos = p } } @@ -327,323 +350,350 @@ var _ = Prism = { * If strarr[k - 1] is greedy we are in conflict with another greedy pattern */ if (strarr[i] instanceof Token || strarr[k - 1].greedy) { - continue; + continue } // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; + delNum = k - i + str = text.slice(pos, p) + match.index -= pos } if (!match) { - continue; + continue } - if(lookbehind) { - lookbehindLength = match[1].length; + if (lookbehind) { + lookbehindLength = match[1].length } var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); + match = match[0].slice(lookbehindLength), + to = from + match.length, + before = str.slice(0, from), + after = str.slice(to) - var args = [i, delNum]; + var args = [i, delNum] if (before) { - args.push(before); + args.push(before) } - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); + var wrapped = new Token( + token, + inside ? _.tokenize(match, inside) : match, + alias, + match, + greedy + ) - args.push(wrapped); + args.push(wrapped) if (after) { - args.push(after); + args.push(after) } - Array.prototype.splice.apply(strarr, args); + Array.prototype.splice.apply(strarr, args) } } } - return strarr; + return strarr }, hooks: { all: {}, add: function (name, callback) { - var hooks = _.hooks.all; + var hooks = _.hooks.all - hooks[name] = hooks[name] || []; + hooks[name] = hooks[name] || [] - hooks[name].push(callback); + hooks[name].push(callback) }, run: function (name, env) { - var callbacks = _.hooks.all[name]; + var callbacks = _.hooks.all[name] if (!callbacks || !callbacks.length) { - return; + return } - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); + for (var i = 0, callback; (callback = callbacks[i++]); ) { + callback(env) } - } - } -}; + }, + }, +}) -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; +var Token = (_.Token = function (type, content, alias, matchedStr, greedy) { + this.type = type + this.content = content + this.alias = alias // Copy of the full string this token was created from - this.matchedStr = matchedStr || null; - this.greedy = !!greedy; -}; + this.matchedStr = matchedStr || null + this.greedy = !!greedy +}) -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; +Token.stringify = function (o, language, parent) { + if (typeof o == "string") { + return o } - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); + if (_.util.type(o) === "Array") { + return o + .map(function (element) { + return Token.stringify(element, language, o) + }) + .join("") } var env = { type: o.type, content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], + tag: "span", + classes: ["token", o.type], attributes: {}, language: language, - parent: parent - }; + parent: parent, + } - if (env.type == 'comment') { - env.attributes['spellcheck'] = 'true'; + if (env.type == "comment") { + env.attributes["spellcheck"] = "true" } if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); + var aliases = _.util.type(o.alias) === "Array" ? o.alias : [o.alias] + Array.prototype.push.apply(env.classes, aliases) } - _.hooks.run('wrap', env); + _.hooks.run("wrap", env) - var attributes = ''; + var attributes = "" for (var name in env.attributes) { - attributes += (attributes ? ' ' : '') + name + '="' + (env.attributes[name] || '') + '"'; + attributes += + (attributes ? " " : "") + name + '="' + (env.attributes[name] || "") + '"' } - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; - -}; + return ( + "<" + + env.tag + + ' class="' + + env.classes.join(" ") + + '"' + + (attributes ? " " + attributes : "") + + ">" + + env.content + + "" + ) +} -Token.reactify = function(o, language, parent, key) { - if (typeof o == 'string') { - return o; +Token.reactify = function (o, language, parent, key) { + if (typeof o == "string") { + return o } - if (_.util.type(o) === 'Array') { - return o.map(function(element, i) { - return Token.reactify(element, language, o, i); - }); + if (_.util.type(o) === "Array") { + return o.map(function (element, i) { + return Token.reactify(element, language, o, i) + }) } var env = { type: o.type, content: Token.reactify(o.content, language, parent), - tag: 'span', + tag: "span", classes: [o.type], - attributes: {key: key}, + attributes: { key: key }, language: language, - parent: parent - }; + parent: parent, + } - if (env.type == 'comment') { - env.attributes.spellCheck = true; + if (env.type == "comment") { + env.attributes.spellCheck = true } if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); + var aliases = _.util.type(o.alias) === "Array" ? o.alias : [o.alias] + Array.prototype.push.apply(env.classes, aliases) } - _.hooks.run('wrap', env); + _.hooks.run("wrap", env) - env.attributes.className = env.classes.join(' '); + env.attributes.className = env.classes.join(" ") - return React.DOM[env.tag](env.attributes, env.content); -}; + return React.DOM[env.tag](env.attributes, env.content) +} Prism.languages.markup = { - 'comment': //, - 'prolog': /<\?[\w\W]+?\?>/, - 'doctype': //, - 'cdata': //i, - 'tag': { - pattern: /<\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i, + comment: //, + prolog: /<\?[\w\W]+?\?>/, + doctype: //, + cdata: //i, + tag: { + pattern: + /<\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i, inside: { - 'tag': { + tag: { pattern: /^<\/?[^\s>\/]+/i, inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } + punctuation: /^<\/?/, + namespace: /^[^\s>\/:]+:/, + }, }, - 'attr-value': { + "attr-value": { pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i, inside: { - 'punctuation': /[=>"']/ - } + punctuation: /[=>"']/, + }, }, - 'punctuation': /\/?>/, - 'attr-name': { + punctuation: /\/?>/, + "attr-name": { pattern: /[^\s>\/]+/, inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } + namespace: /^[^\s>\/:]+:/, + }, + }, + }, }, - 'entity': /&#?[\da-z]{1,8};/i -}; + entity: /&#?[\da-z]{1,8};/i, +} // Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); +Prism.hooks.add("wrap", function (env) { + if (env.type === "entity") { + env.attributes["title"] = env.content.replace(/&/, "&") } -}); -; +}) Prism.languages.clike = { - 'comment': [ + comment: [ { pattern: /(^|[^\\])\/\*[\w\W]*?\*\//, - lookbehind: true + lookbehind: true, }, { pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true - } + lookbehind: true, + }, ], - 'string': /("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - 'class-name': { - pattern: /((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i, + string: /("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + "class-name": { + pattern: + /((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i, lookbehind: true, inside: { - punctuation: /(\.|\\)/ - } + punctuation: /(\.|\\)/, + }, }, - 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, - 'boolean': /\b(true|false)\b/, - 'function': /[a-z0-9_]+(?=\()/i, - 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/, - 'operator': /[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/, - 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, - 'function': /(?!\d)[a-z0-9_$]+(?=\()/i -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, - lookbehind: true - } -}); + keyword: + /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, + boolean: /\b(true|false)\b/, + function: /[a-z0-9_]+(?=\()/i, + number: /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/, + operator: /[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/, + punctuation: /[{}[\];(),.:]/, +} + +Prism.languages.javascript = Prism.languages.extend("clike", { + keyword: + /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/, + number: + /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, + function: /(?!\d)[a-z0-9_$]+(?=\()/i, +}) + +Prism.languages.insertBefore("javascript", "keyword", { + regex: { + pattern: + /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + lookbehind: true, + }, +}) -Prism.languages.insertBefore('javascript', 'class-name', { - 'template-string': { +Prism.languages.insertBefore("javascript", "class-name", { + "template-string": { pattern: /`(?:\\`|\\?[^`])*`/, inside: { - 'interpolation': { + interpolation: { pattern: /\$\{[^}]+\}/, inside: { - 'interpolation-punctuation': { + "interpolation-punctuation": { pattern: /^\$\{|\}$/, - alias: 'punctuation' + alias: "punctuation", }, - rest: Prism.languages.javascript - } + rest: Prism.languages.javascript, + }, }, - 'string': /[\s\S]+/ - } - } -}); + string: /[\s\S]+/, + }, + }, +}) if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { + Prism.languages.insertBefore("markup", "tag", { + script: { pattern: /[\w\W]*?<\/script>/i, inside: { - 'tag': { + tag: { pattern: /|<\/script>/i, - inside: Prism.languages.markup.tag.inside + inside: Prism.languages.markup.tag.inside, }, - rest: Prism.languages.javascript + rest: Prism.languages.javascript, }, - alias: 'language-javascript' - } - }); + alias: "language-javascript", + }, + }) } -; -(function(Prism) { - -var javascript = Prism.util.clone(Prism.languages.javascript); +;(function (Prism) { + var javascript = Prism.util.clone(Prism.languages.javascript) -Prism.languages.jsx = Prism.languages.extend('markup', javascript); -Prism.languages.jsx.tag.pattern= /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i; + Prism.languages.jsx = Prism.languages.extend("markup", javascript) + Prism.languages.jsx.tag.pattern = + /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i -Prism.languages.jsx.tag.inside['attr-value'].pattern = /=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i; + Prism.languages.jsx.tag.inside["attr-value"].pattern = + /=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i -Prism.languages.insertBefore('inside', 'attr-value',{ - 'script': { - pattern: /=(\{[\w\W]*?\})/i, - inside: { - 'function' : Prism.languages.javascript.function, - 'punctuation': /[={}[\];(),.:]/, - 'keyword': Prism.languages.javascript.keyword + Prism.languages.insertBefore( + "inside", + "attr-value", + { + script: { + pattern: /=(\{[\w\W]*?\})/i, + inside: { + function: Prism.languages.javascript.function, + punctuation: /[={}[\];(),.:]/, + keyword: Prism.languages.javascript.keyword, + }, + alias: "language-javascript", + }, }, - 'alias': 'language-javascript' - } -}, Prism.languages.jsx.tag); - -}(Prism)); + Prism.languages.jsx.tag + ) +})(Prism) var graphqlComment = { pattern: /#.*/, - greedy: true -}; + greedy: true, +} var graphqlCommon = { string: { pattern: /"(?:\\.|[^\\"])*"/, - greedy: true + greedy: true, }, number: /(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/, boolean: /\b(?:true|false)\b/, variable: { pattern: /\$[a-z_]\w*/i, - greedy: true + greedy: true, }, operator: /!|=|\.{3}/, - punctuation: /[!(){|}[\]:=,]/ -}; + punctuation: /[!(){|}[\]:=,]/, +} var graphqlDirective = { pattern: /@[a-z_]\w*(\([\w\W]*?\))?/i, @@ -653,79 +703,81 @@ var graphqlDirective = { pattern: /\([\w\W]*?\)/, inside: { arg: /[a-z_]\w*(?=\s*:)/i, - ...graphqlCommon - } - } - } -}; + ...graphqlCommon, + }, + }, + }, +} Prism.languages.graphql = { comment: graphqlComment, - 'schema-def': { + "schema-def": { pattern: /\bschema\b[^{]*{[^{}]*}/, inside: { comment: graphqlComment, keyword: /\bschema\b|[a-zA-Z_]\w*(?=\s*:)/, - 'type-name': { + "type-name": { pattern: /(:[\s\[]*)[a-z_]\w*/i, - lookbehind: true + lookbehind: true, }, directive: graphqlDirective, - punctuation: graphqlCommon.punctuation - } + punctuation: graphqlCommon.punctuation, + }, }, - 'union-def': { + "union-def": { pattern: /\bunion\b[^=]+=\s*[a-zA-Z_]\w*(?:\s*\|\s*[a-zA-Z_]\w*)*/, inside: { comment: graphqlComment, keyword: /\bunion\b/, - 'type-name': { + "type-name": { pattern: /([=|]\s*)[a-z_]\w*/i, - lookbehind: true + lookbehind: true, }, directive: graphqlDirective, - punctuation: graphqlCommon.punctuation - } + punctuation: graphqlCommon.punctuation, + }, }, - 'type-def': { - pattern: /\b(?:type|interface|input|enum)\b[\w\W]+?{(?:[^{}]*|[^{}]*{[^{}]*}[^{}]*|[^{}]*{[^{}]*[^{}]*{[^{}]*}[^{}]*}[^{}]*)}/, + "type-def": { + pattern: + /\b(?:type|interface|input|enum)\b[\w\W]+?{(?:[^{}]*|[^{}]*{[^{}]*}[^{}]*|[^{}]*{[^{}]*[^{}]*{[^{}]*}[^{}]*}[^{}]*)}/, inside: { comment: graphqlComment, fields: { - pattern: /{(?:[^{}]*|[^{}]*{[^{}]*}[^{}]*|[^{}]*{[^{}]*[^{}]*{[^{}]*}[^{}]*}[^{}]*)}/, + pattern: + /{(?:[^{}]*|[^{}]*{[^{}]*}[^{}]*|[^{}]*{[^{}]*[^{}]*{[^{}]*}[^{}]*}[^{}]*)}/, inside: { comment: graphqlComment, argDefs: { pattern: /\([\w\W]*?\)/, inside: { comment: graphqlComment, - 'attr-name': /[a-z_]\w*(?=\s*:)/i, - 'type-name': { + "attr-name": /[a-z_]\w*(?=\s*:)/i, + "type-name": { pattern: /(:[\s\[]*)[a-z_]\w*/i, - lookbehind: true + lookbehind: true, }, directive: graphqlDirective, - ...graphqlCommon - } + ...graphqlCommon, + }, }, directive: graphqlDirective, - 'attr-name': { + "attr-name": { pattern: /[a-z_]\w*(?=\s*[:\(])/i, greedy: true, }, - 'type-name': { + "type-name": { pattern: /(:[\s\[]*)[a-z_]\w*/i, - lookbehind: true + lookbehind: true, }, punctuation: /[!{}\[\]:=,]/, - } + }, }, keyword: /\b(?:type|interface|implements|input|enum)\b/, directive: graphqlDirective, ...graphqlCommon, // 'type-name': /[a-z_]\w*/i, - } + }, }, // string: /"(?:\\.|[^\\"])*"/, // number: /(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/, @@ -736,35 +788,34 @@ Prism.languages.graphql = { // alias: 'function' // }, directive: graphqlDirective, - 'attr-name': /[a-z_]\w*(?=\s*:)/i, - 'keyword': [ + "attr-name": /[a-z_]\w*(?=\s*:)/i, + keyword: [ { pattern: /(fragment\s+(?!on)[a-z_]\w*\s+|\.\.\.\s*)on\b/, - lookbehind: true + lookbehind: true, }, - /\b(?:query|mutation|subscription|fragment|extend|scalar)\b/ + /\b(?:query|mutation|subscription|fragment|extend|scalar)\b/, ], ...graphqlCommon, // 'operator': /!|=|\.{3}/, // 'punctuation': /[!(){}\[\]:=,]/, // comment: /#.*/, // 'enum': /[a-z_]\w*/i -}; +} Prism.languages.json = { - 'attr-name': { + "attr-name": { pattern: /"(?:\\.|[^\\"])*"(?=\s*:)/i, - greedy: true + greedy: true, }, string: { pattern: /"(?:\\.|[^\\"])*"/, - greedy: true + greedy: true, }, boolean: /\b(?:true|false)\b/, keyword: /\bnull\b/, number: /(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/, punctuation: /[{}[\],:]/, -}; - +} -export default Prism; \ No newline at end of file +export default Prism diff --git a/src/components/Prism/index.tsx b/src/components/Prism/index.tsx index 98010be56d..250f510b24 100644 --- a/src/components/Prism/index.tsx +++ b/src/components/Prism/index.tsx @@ -16,20 +16,22 @@ const Basic = ({ code, language }: Props) => ( Prism={Prism} > {({ className, tokens, getLineProps, getTokenProps }: any) => ( -
    -        {tokens.map((line, i) => {
    -          if (line.length === 1 && line[0].content === "") {
    -            line[0].content = " "
    -          }
    -          return (
    -            
    - {line.map((token, key) => ( - - ))} -
    - ) - })} -
    + +
    +          {tokens.map((line, i) => {
    +            if (line.length === 1 && line[0].content === "") {
    +              line[0].content = " "
    +            }
    +            return (
    +              
    + {line.map((token, key) => ( + + ))} +
    + ) + })} +
    +
    )} ) diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx index 5aeef48ddd..dd412fff68 100644 --- a/src/components/Search/index.tsx +++ b/src/components/Search/index.tsx @@ -1,27 +1,25 @@ -import React, {useEffect} from "react" +import React, { useEffect } from "react" // Added to the global runtime by the script tag further down the file. declare const docsearch: any | undefined - - // Runs the new docsearch function over possible search inputs const runDocsearchIfPossible = () => { - if (typeof docsearch !== 'undefined') { - const searches = ["algolia-search-input", "hero-search-input"] - for (const searchID of searches) { - if (!document.getElementById(searchID)) continue - - docsearch({ - apiKey: 'd103541f3e6041148aade2e746ed4d61', - indexName: 'graphql', - inputSelector: `#${searchID}` - }); - } + if (typeof docsearch !== "undefined") { + const searches = ["algolia-search-input", "hero-search-input"] + for (const searchID of searches) { + if (!document.getElementById(searchID)) continue + + docsearch({ + apiKey: "d103541f3e6041148aade2e746ed4d61", + indexName: "graphql", + inputSelector: `#${searchID}`, + }) } + } } -const Search = ({searchID}: { searchID?: string}): JSX.Element => { +const Search = ({ searchID }: { searchID?: string }): JSX.Element => { const searchInputID = searchID || "algolia-search-input" // This extra bit of mis-direction ensures that non-essential code runs after @@ -29,28 +27,50 @@ const Search = ({searchID}: { searchID?: string}): JSX.Element => { useEffect(() => { runDocsearchIfPossible() + const handleSearchTrigger = (event: KeyboardEvent) => { + const slashKeyPressed = event.key === "/" || event.code === "Slash" + if (!slashKeyPressed) { + return + } + event.preventDefault() + const searchInput = document.querySelector( + `#${searchInputID}` + ) + + if (searchInput) { + searchInput.focus() + } + } + + window.addEventListener("keypress", handleSearchTrigger) + if (document.getElementById("algolia-search")) return - const searchScript = document.createElement('script'); + const searchScript = document.createElement("script") searchScript.id = "algolia-search" - const searchCSS = document.createElement('link'); + const searchCSS = document.createElement("link") - searchScript.src = "https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"; - searchScript.async = true; + searchScript.src = + "https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js" + searchScript.async = true searchScript.onload = () => { - if (typeof docsearch !== 'undefined') { + if (typeof docsearch !== "undefined") { runDocsearchIfPossible() - searchCSS.rel = 'stylesheet'; - searchCSS.href = 'https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css' - searchCSS.type = 'text/css'; - document.body.appendChild(searchCSS); + searchCSS.rel = "stylesheet" + searchCSS.href = + "https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css" + searchCSS.type = "text/css" + document.body.appendChild(searchCSS) } } - document.body.appendChild(searchScript); - }, []); + document.body.appendChild(searchScript) + return () => { + window.removeEventListener("keypress", handleSearchTrigger) + } + }, []) return (
    diff --git a/src/components/Seo/index.tsx b/src/components/Seo/index.tsx index 40bded3b17..b9f0d317ea 100644 --- a/src/components/Seo/index.tsx +++ b/src/components/Seo/index.tsx @@ -1,5 +1,4 @@ import React from "react" -import Helmet from "react-helmet" import { useStaticQuery, graphql } from "gatsby" interface Props { @@ -8,7 +7,7 @@ interface Props { } const Seo = ({ title, description }: Props): JSX.Element => { - const data = useStaticQuery(graphql` + const data = useStaticQuery(graphql` query SeoQuery { site { siteMetadata { @@ -19,20 +18,16 @@ const Seo = ({ title, description }: Props): JSX.Element => { } `) + const metadata = data.site!.siteMetadata + return ( - + <> + {title ?? metadata!.title} + + + - + ) } diff --git a/src/components/aspect-ratio.tsx b/src/components/aspect-ratio.tsx new file mode 100644 index 0000000000..d72c29ea47 --- /dev/null +++ b/src/components/aspect-ratio.tsx @@ -0,0 +1,46 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" +import { clsx } from "clsx" +import React from "react" + +interface AspectRatioProps { + className?: string + href: string + title: string + src: string +} + +export function AspectRatio({ className, href, title, src }: AspectRatioProps) { + return ( + <> + + +

    + {title} +

    +
    +
    + {title} +
    +
    + + ) +} diff --git a/src/content/blog/20150914-graphql.md b/src/content/blog/2015-09-14-graphql.md similarity index 90% rename from src/content/blog/20150914-graphql.md rename to src/content/blog/2015-09-14-graphql.md index 467b6111ea..40330f4ad2 100644 --- a/src/content/blog/20150914-graphql.md +++ b/src/content/blog/2015-09-14-graphql.md @@ -2,7 +2,8 @@ title: "GraphQL: A data query language" layout: blog permalink: /blog/graphql-a-query-language/ -date: 14 Sep 2015 +tags: ["blog", "spec"] +date: 2015-09-14 byline: "Lee Byron" --- @@ -29,7 +30,7 @@ A GraphQL query is a string that is sent to a server to be interpreted and fulfi id name isViewerFriend - profilePicture(size: 50) { + profilePicture(size: 50) { uri width height @@ -77,7 +78,7 @@ With GraphQL, we were able to build full-featured native News Feed on iOS in 201 When we built GraphQL in 2012 we had no idea how important it would become to how we build things at Facebook and didn't anticipate its value beyond Facebook. However earlier this year we announced Relay, our application framework for the web and React Native built atop GraphQL. The community excitement for Relay inspired us to revisit GraphQL to evaluate every detail, make improvements, fix inconsistencies, and write a specification describing GraphQL and how it works. -Two months ago, we [made our progress public](https://www.youtube.com/watch?v=WQLzZf34FJ8) and released a working draft of the [GraphQL spec](http://facebook.github.io/graphql/) and a reference implementation: [GraphQL.js](https://github.com/graphql/graphql-js). Since then, a community has started to form around GraphQL, and versions of the GraphQL runtime are being [built in many languages](https://github.com/chentsulin/awesome-graphql), including Go, Ruby, Scala, Java, .Net, and Python. We've also begun to share some of the tools we use internally, like [GraphiQL](https://github.com/graphql/graphiql), an in-browser IDE, documentation browser, and query runner. GraphQL has also seen production usage outside Facebook, in a project for the [*Financial Times*](https://www.youtube.com/watch?v=S0s935RKKB4) by consultancy [Red Badger](http://red-badger.com/). +Two months ago, we [made our progress public](https://www.youtube.com/watch?v=WQLzZf34FJ8) and released a working draft of the [GraphQL spec](https://spec.graphql.org/) and a reference implementation: [GraphQL.js](https://github.com/graphql/graphql-js). Since then, a community has started to form around GraphQL, and versions of the GraphQL runtime are being [built in many languages](https://github.com/chentsulin/awesome-graphql), including Go, Ruby, Scala, Java, .Net, and Python. We've also begun to share some of the tools we use internally, like [GraphiQL](https://github.com/graphql/graphiql), an in-browser IDE, documentation browser, and query runner. GraphQL has also seen production usage outside Facebook, in a project for the [_Financial Times_](https://www.youtube.com/watch?v=S0s935RKKB4) by consultancy [Red Badger](http://red-badger.com/). “GraphQL makes orchestrating data fetching so much simpler and it pretty much functions as a perfect isolation point between the front end and the back end” — Viktor Charypar, software engineer at Red Badger diff --git a/src/content/blog/20151016-subscriptions.md b/src/content/blog/2015-10-16-subscriptions.md similarity index 93% rename from src/content/blog/20151016-subscriptions.md rename to src/content/blog/2015-10-16-subscriptions.md index a034f8b22b..cef11c752b 100644 --- a/src/content/blog/20151016-subscriptions.md +++ b/src/content/blog/2015-10-16-subscriptions.md @@ -2,7 +2,8 @@ title: "Subscriptions in GraphQL and Relay" layout: blog permalink: /blog/subscriptions-in-graphql-and-relay/ -date: 16 Oct 2015 +tags: ["blog", "spec"] +date: 2015-10-16 byline: Dan Schafer and Laney Kuenzel --- @@ -38,7 +39,6 @@ subscription StoryLikeSubscription($input: StoryLikeSubscribeInput) { } ``` - The client would then send this subscription to the server, along with the value for the `$input` variable, which would contain information like the story ID to which we are subscribing: ```graphql @@ -69,13 +69,13 @@ fragment StoryLikeData on Story { What events could trigger that a change to the data fetched in that fragment? -* Someone likes the post. -* Someone unlikes the post. -* Someone who had liked the post deactivates their account (changes the like count down one, changes the like sentence to decrement the translated count). -* Someone who had liked the post reactivates their account (changes the like count up one, changes the like sentence to increment the translated count). -* Someone who had liked the post blocks you (cannot show them in the like sentence). -* Someone who had liked the post changes their name (need to update the text of the like sentence). -* Our internal ranking model for the ordering of names in the like sentence updates, and we should be listing a different person first (want to update the text of the like sentence). +- Someone likes the post. +- Someone unlikes the post. +- Someone who had liked the post deactivates their account (changes the like count down one, changes the like sentence to decrement the translated count). +- Someone who had liked the post reactivates their account (changes the like count up one, changes the like sentence to increment the translated count). +- Someone who had liked the post blocks you (cannot show them in the like sentence). +- Someone who had liked the post changes their name (need to update the text of the like sentence). +- Our internal ranking model for the ordering of names in the like sentence updates, and we should be listing a different person first (want to update the text of the like sentence). And that’s just the tip of the iceberg in terms of events; each of those events also becomes tricky when there are thousands of people subscribed, and millions of people who liked the post. Implementing live queries for this set of data proved to be immensely complicated. diff --git a/src/content/blog/20160419-mocking.md b/src/content/blog/2016-04-19-mocking.md similarity index 95% rename from src/content/blog/20160419-mocking.md rename to src/content/blog/2016-04-19-mocking.md index 6eb936ed53..daf7717ce8 100644 --- a/src/content/blog/20160419-mocking.md +++ b/src/content/blog/2016-04-19-mocking.md @@ -2,7 +2,8 @@ title: "Mocking your server is easy with GraphQL" layout: blog permalink: /blog/mocking-with-graphql/ -date: 19 Apr 2016 +date: 2016-04-19 +tags: ["blog"] byline: "Jonas Helfer" guestBio: engineer at Meteor working on Apollo --- @@ -44,16 +45,16 @@ Here’s how easy it is to create a mocked backend that will accept any valid Gr ```js // > npm install graphql-tools -import { mockServer } from 'graphql-tools'; -import schema from './mySchema.graphql'; +import { mockServer } from "graphql-tools" +import schema from "./mySchema.graphql" -const myMockServer = mockServer(schema); +const myMockServer = mockServer(schema) myMockServer.query(`{ allUsers: { id name } -}`); +}`) // returns // { @@ -127,11 +128,10 @@ I think the real power of this tool is that while it allows almost arbitrarily c But enough talking, here’s a complete example: ```js +import { mockServer, MockList } from "graphql-tools" +import casual from "casual-browserify" -import { mockServer, MockList } from 'graphql-tools'; -import casual from 'casual-browserify'; - -// The GraphQL schema. Described in more detail here: +// The GraphQL schema. Described in more detail here: // https://medium.com/apollo-stack/the-apollo-server-bc68762e93b const schema = ` type User { @@ -158,7 +158,7 @@ const schema = ` schema { query: RootQuery } -`; +` // Mock functions are defined per type and return an // object with some or all of the fields of that type. @@ -174,7 +174,7 @@ const server = mockServer(schema, { }), Task: () => ({ text: casual.words(10) }), User: () => ({ name: casual.name }), -}); +}) mockServer.query(` query tasksForUser{ @@ -197,16 +197,17 @@ query tasksForUser{ } } } -}`); +}`) ``` ## Live demo + try it yourself + To see the example in action and see what output it generates, head over to the [live demo](https://launchpad.graphql.com/98lq7vz8r) try running some queries! If you want to fiddle around with the example, just click the "Download" button in the Launchpad UI. If you’re curious about how it works or want to see what other tools we’re building for GraphQL, then head over to [apollostack/graphql-tools](https://github.com/apollostack/graphql-tools). Pretty cool, right? All of that becomes possible by using a type system. And that’s only just the beginning — we‘re working on bridging the gap between mocking and the real thing so that your mock server can gradually turn into your real server as you add more functionality to it. -- - - +--- -*This post was originally published on [the Apollo Blog](https://medium.com/apollo-stack). We publish one or two posts every week, about the stuff we’re working on and thinking about.* +_This post was originally published on [the Apollo Blog](https://medium.com/apollo-stack). We publish one or two posts every week, about the stuff we’re working on and thinking about._ diff --git a/src/content/blog/20160502-rest-api-graphql-wrapper.md b/src/content/blog/2016-05-02-rest-api-graphql-wrapper.md similarity index 95% rename from src/content/blog/20160502-rest-api-graphql-wrapper.md rename to src/content/blog/2016-05-02-rest-api-graphql-wrapper.md index 45ef5f48ba..4469ecbcc6 100644 --- a/src/content/blog/20160502-rest-api-graphql-wrapper.md +++ b/src/content/blog/2016-05-02-rest-api-graphql-wrapper.md @@ -2,7 +2,8 @@ title: "Wrapping a REST API in GraphQL" layout: blog permalink: /blog/rest-api-graphql-wrapper/ -date: 5 May 2016 +tags: ["blog"] +date: 2016-05-05 byline: "Steven Luscher" --- @@ -33,19 +34,19 @@ npm install --save graphql Ultimately we will want to export a `GraphQLSchema` that we can use to resolve queries. ```js -import { GraphQLSchema } from 'graphql'; +import { GraphQLSchema } from "graphql" export default new GraphQLSchema({ query: QueryType, -}); +}) ``` At the root of all GraphQL schemas is a type called `query` whose definition we provide, and have specified here as `QueryType`. Let's build `QueryType` now – a type on which we will define all the possible things one might want to fetch. To replicate all of the functionality of our REST API, let's expose two fields on `QueryType`: -* an `allPeople` field – analogous to `/people/` -* a `person(id: String)` field – analogous to `/people/{ID}/` +- an `allPeople` field – analogous to `/people/` +- a `person(id: String)` field – analogous to `/people/{ID}/` Each field will consist of a return type, optional argument definitions, and a JavaScript method that resolves the data being queried for. @@ -168,7 +169,6 @@ export default new GraphQLSchema({ }); ``` - ### Using a client-side schema with Relay Normally, Relay will send its GraphQL queries to a server over HTTP. We can inject [@taion](https://github.com/taion/)'s custom `relay-local-schema` network layer to resolve queries using the schema we just built. Put this code wherever it's guaranteed to be executed before you mount your Relay app. @@ -218,18 +218,16 @@ npm install --save graphql-relay First, let's change the `id` field of `PersonType` into a GUID. To do this, we'll use the `globalIdField` helper from `graphql-relay`. ```js -import { - globalIdField, -} from 'graphql-relay'; +import { globalIdField } from "graphql-relay" const PersonType = new GraphQLObjectType({ - name: 'Person', - description: 'Somebody that you used to know', + name: "Person", + description: "Somebody that you used to know", fields: () => ({ - id: globalIdField('Person'), + id: globalIdField("Person"), /* ... */ }), -}); +}) ``` Behind the scenes `globalIdField` returns a field definition that resolves `id` to a `GraphQLString` by hashing together the typename `'Person'` and the id returned by the REST API. We can later use `fromGlobalId` to convert the result of this field back into `'Person'` and the REST API's id. @@ -238,28 +236,25 @@ Behind the scenes `globalIdField` returns a field definition that resolves `id` Another set of helpers from `graphql-relay` will give us a hand developing the node field. Your job is to supply the helper two functions: -* One function that can resolve an object given a GUID. -* One function that can resolve a typename given an object. +- One function that can resolve an object given a GUID. +- One function that can resolve a typename given an object. ```js -import { - fromGlobalId, - nodeDefinitions, -} from 'graphql-relay'; +import { fromGlobalId, nodeDefinitions } from "graphql-relay" const { nodeInterface, nodeField } = nodeDefinitions( globalId => { - const { type, id } = fromGlobalId(globalId); - if (type === 'Person') { - return fetchPersonByURL(`/people/${id}/`); + const { type, id } = fromGlobalId(globalId) + if (type === "Person") { + return fetchPersonByURL(`/people/${id}/`) } }, object => { - if (object.hasOwnProperty('username')) { - return 'Person'; + if (object.hasOwnProperty("username")) { + return "Person" } - }, -); + } +) ``` The object-to-typename resolver above is no marvel of engineering, but you get the idea. @@ -394,9 +389,9 @@ As a special note, make sure that your runtime offers native or polyfilled versi To create a `DataLoader` you supply a method that can resolve a list of objects given a list of keys. In our example, the keys are URLs at which we access our REST API. ```js -const personLoader = new DataLoader( - urls => Promise.all(urls.map(fetchPersonByURL)) -); +const personLoader = new DataLoader(urls => + Promise.all(urls.map(fetchPersonByURL)) +) ``` If this data loader sees a key more than once in its lifetime, it will return a memoized (cached) version of the response. diff --git a/src/content/blog/20160914-production-ready.md b/src/content/blog/2016-09-14-production-ready.md similarity index 98% rename from src/content/blog/20160914-production-ready.md rename to src/content/blog/2016-09-14-production-ready.md index 7b62b9f16f..c9c0202266 100644 --- a/src/content/blog/20160914-production-ready.md +++ b/src/content/blog/2016-09-14-production-ready.md @@ -2,7 +2,8 @@ title: "Leaving technical preview" layout: blog permalink: /blog/production-ready/ -date: 14 Sep 2016 +tags: ["blog"] +date: 2016-09-14 byline: "Lee Byron" --- diff --git a/src/content/blog/2017-11-08-programmable-web.md b/src/content/blog/2017-11-08-programmable-web.md new file mode 100644 index 0000000000..46a2bdbe23 --- /dev/null +++ b/src/content/blog/2017-11-08-programmable-web.md @@ -0,0 +1,12 @@ +--- +title: "ProgrammableWeb: GraphQL Moving to Neutral, Open-Source Foundation" +tags: ["in-the-news"] +layout: blog +date: 2017-11-08 +byline: ProgrammableWeb +permalink: /blog/2017-11-08-programmableweb-graphql-moving-to-neutral-open-source-foundation +--- + +GraphQL will now have its own foundation: the [GraphQL Foundation](/foundation/). Although GraphQL was initially incubated by Facebook, GraphQL is now utilized heavily by a diverse set of companies including major tech giants (e.g. Twitter, Airbnb, Shopify, etc.). Accordingly, it makes sense that the data query language move to a neutral, open source home. Like many open source projects, the GraphQL Foundation will be hosted by the Linux Foundation. Linux will implement an open governance model similar to many collaborations overseen by Linux. The exact details of the model, and future plans continue to be a work in progress. The current founding members include Airbnb, Apollo, Coursera, Elementl, Facebook, GitHub, Hasura, Prisma, Shopify and Twitter. + +[Read More »](https://www.programmableweb.com/news/graphql-moving-to-neutral-open-source-foundation/brief/2018/11/08) diff --git a/src/content/blog/2018-11-06-eweek.md b/src/content/blog/2018-11-06-eweek.md new file mode 100644 index 0000000000..8213189476 --- /dev/null +++ b/src/content/blog/2018-11-06-eweek.md @@ -0,0 +1,12 @@ +--- +title: "eWeek: GraphQL API Specification Moving Forward with Independent Foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-06 +byline: eweek +permalink: /blog/2018-11-06-eweek-graphql-api-specification-moving-forward-with-independent-foundation +--- + +The Linux Foundation announced on Nov. 6 that it is forming a new foundation to support the open source GraphQL specification, which enables a new generation of APIs. For nearly two decades, REST (Representational State Transfer) has been one of the primary approaches for enabling APIs that help to connect and extend applications and web services. REST however has multiple limitations, which is where GraphQL steps into the picture, finding wide adoption by large web properties. GraphQL was created in 2012 by Facebook and became open source in 2015. The move to create a new vendor-neutral independent foundation under the Linux Foundation will serve to help further advance the development of GraphQL. + +[Read more »](https://www.eweek.com/development/graphql-api-specification-moving-forward-with-independent-foundation) diff --git a/src/content/blog/2018-11-06-infoworld.md b/src/content/blog/2018-11-06-infoworld.md new file mode 100644 index 0000000000..6e6d4c951e --- /dev/null +++ b/src/content/blog/2018-11-06-infoworld.md @@ -0,0 +1,14 @@ +--- +title: "InfoWorld: GraphQL gets its own foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-06 +byline: InfoWorld +permalink: /blog/2018-11-06-infoworld-graphql-gets-its-own-foundation +--- + +The Linux Foundation plans to host a foundation to support the GraphQL API project, with the intent of growing a neutral ecosystem for the technology. + +GraphQL is a specification for building APIs. It is intended to make cross-platform and mobile development simpler. Providing an alternative to REST, GraphQL lets developers use a strongly typed query language to define requests and responses, letting an application specify what it needs from an API. GraphQL enables access to multiple data sources through a single request. + +[Read more »](https://www.infoworld.com/article/3318255/apis/graphql-gets-its-own-foundation.html) diff --git a/src/content/blog/2018-11-06-linux-foundation-graphql.md b/src/content/blog/2018-11-06-linux-foundation-graphql.md new file mode 100644 index 0000000000..9d6a56d60c --- /dev/null +++ b/src/content/blog/2018-11-06-linux-foundation-graphql.md @@ -0,0 +1,48 @@ +--- +title: "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL" +tags: ["announcements"] +layout: blog +date: 2018-11-06 +byline: GraphQL Foundation +permalink: /blog/2018-11-06-linux-foundation-announces-intent-to-form-new-foundation-to-support-graphql +--- + +[The Linux Foundation](https://www.linuxfoundation.org/), the nonprofit organization enabling mass innovation through open source, announces a broad coalition of industry leaders and users have joined forces to create a new open source foundation for the [GraphQL](https://graphql.org/) project, which will be dedicated to growing and sustaining a neutral GraphQL ecosystem. Hosted under the Linux Foundation, the [GraphQL Foundation](https://gql.foundation/)'s mission will be to enable widespread adoption and help accelerate development of GraphQL and the surrounding ecosystem. + +“As one of GraphQL’s co-creators, I’ve been amazed and proud to see it grow in adoption since its open sourcing. Through the formation of the GraphQL Foundation, I hope to see GraphQL become industry standard by encouraging contributions from a broader group and creating a shared investment in vendor-neutral events, documentation, tools, and support,” said Lee Byron, co-creator of GraphQL. + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). As application development shifts towards microservices architectures with an emphasis on flexibility and speed to market, tools like GraphQL are redefining API design and client-server interaction to improve the developer experience, increasing developer productivity and minimizing amounts of data transferred. GraphQL makes cross-platform and mobile development simpler with availability in multiple programming languages, allowing developers to create seamless user experiences for their customers. + +GraphQL is being used in production by a [variety of high scale companies](https://graphql.org/users/) such as Airbnb, Atlassian, Audi, CNBC, GitHub, Major League Soccer, Netflix, Shopify, The New York Times, Twitter, Pinterest and Yelp. GraphQL also [powers hundreds of billions of API calls a day at Facebook](https://code.fb.com/core-data/graphql-a-data-query-language/). + +“We are thrilled to welcome the GraphQL Foundation into the Linux Foundation. This advancement is important because it allows for long-term support and accelerated growth of this essential and groundbreaking technology that is changing the approach to API design for cloud-connected applications in any language,” said Jim Zemlin, Executive Director, the Linux Foundation. + +Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +The GraphQL Foundation will have an open governance model that encourages participation and technical contribution and will provide a framework for long-term stewardship by an ecosystem invested in GraphQL’s success. + +“At Facebook, our mission is to give people the power to build community and bring the world closer together. We believe open source projects and the communities built around them help accelerate the pace of innovation and bring many minds to bear to solve large-scale challenges. GraphQL is one such project and community and the GraphQL Foundation will help ensure GraphQL continues to solve the real data fetching challenges that developers will face in building the products of tomorrow,” said Killian Murphy, Director, Facebook Open Source. + +“GraphQL has redefined how developers work with APIs and client-server interactions. We look forward to working with the diverse GraphQL community from end users like Facebook to a diverse ecosystem of vendors to become an independent foundation, draft their governance and continue to foster the growth and adoption of GraphQL,” said Chris Aniszczyk, Vice President of Developer Relations, the Linux Foundation. + +## Supporting Quotes + +“Airbnb is making a massive investment in GraphQL, putting it at the center of our API strategy across both our product and internal tools. We are excited to see the Foundation play a key role in cultivating the community around GraphQL and continue to evolve GraphQL as a technology, paving the way for continued innovation of Airbnb’s API.” — Adam Neary, Tech Lead, Airbnb + +“Given GraphQL’s centrality in the modern app development stack, the foundation we’re announcing today is not just necessary, but overdue. As the creators of Apollo, the most widely used implementation of GraphQL, we’re looking forward to working together with the Linux Foundation to define appropriate governance processes for this critical Internet standard.” – Geoff Schmidt, co­-founder and CEO of Apollo GraphQL + +“GraphQL, and the strong ecosystem behind it, is leading to a fundamental change in how we build products, and it helps bring together teams and organizations of every size. At Coursera, GraphQL assists us in understanding the massive breadth of our APIs and helps us create transformative educational experiences for everyone, everywhere. We’re excited to see the impact of the GraphQL Foundation in making both the technology and the community stronger.” – Jon Wong, Staff Software Engineer, Coursera + +“GraphQL has come a long way since its creation in 2012. It’s been an honor seeing the technology grow from a prototype, to powering Facebook’s core applications, to an open source technology on the way to becoming a ubiquitous standard across the entire industry. The GraphQL Foundation is an exciting step forward. This new governance model is a major milestone in that maturation process that will ensure a neutral venue and structure for the entire community to drive the technology forward.” – Nick Schrock, Founder, Elementl, GraphQL Co-Creator + +“We created GraphQL at Facebook six years ago to help us build high-performance mobile experiences, so to see it grow and gain broad industry adoption has been amazing. Since Facebook open-sourced GraphQL in 2015, the community has grown to include developers around the world, newly-founded startups, and well-established companies. The creation of the GraphQL Foundation is a new chapter that will create a governance structure we believe will empower the community and provide GraphQL long-term technical success. I’m excited to see its continued growth under the Foundation’s guidance.” – Dan Schafer, Facebook Software Engineer, GraphQL Co-Creator + +“GraphQL has proven to be a valuable, extensible tool for GitHub, our customers, and our integrators over the past two years. The GraphQL Foundation embodies openness, transparency, and community — all of which we believe in at GitHub.” – Kyle Daigle, Director, Ecosystem Engineering, GitHub + +“This is a very welcome announcement, and we believe that this is a necessary step. The GraphQL community has grown rapidly over the last few years, and has reached the point where transparent, neutral governance policies are necessary for future growth. At Hasura, we look forward to helping the Foundation in its work.” – Tanmai Gopal, CEO, Hasura + +“GraphQL has become one of the most important technologies in the modern application development stack and sees rapid adoption by developers and companies across all industries. At Prisma, we’re very excited to support the GraphQL Foundation to enable a healthy community and sustain the continuous development of GraphQL.” – Johannes Schickling, Founder and CEO, Prisma + +“At Shopify, GraphQL powers our core APIs and all our mobile and web clients. We strongly believe in open development and look to the Foundation to help expand the community and nurture its evolution.” – Jean-Michel Lemieux, SVP Engineering, Shopify + +“GraphQL is gaining tremendous adoption as one of the best protocols for remote retrieval of large object graphs. At Twitter, we are looking forward to what’s to come in the GraphQL ecosystem and are very excited to support the GraphQL Foundation.” – Anna Sulkina Sr. Engineering Manager, Core Services Group, Twitter diff --git a/src/content/blog/2018-11-07-datanami.md b/src/content/blog/2018-11-07-datanami.md new file mode 100644 index 0000000000..5978b8b549 --- /dev/null +++ b/src/content/blog/2018-11-07-datanami.md @@ -0,0 +1,12 @@ +--- +title: "Datanami: Will GraphQL Become a Standard for the New Data Economy?" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: Datanami +permalink: /blog/2018-11-07-datanami-will-graphql-become-a-standard-for-the-new-data-economy +--- + +Don’t look now but a new language called GraphQL is emerging that could radically simplify how developers use APIs to get data into applications, and potentially provide a graph-like alternative to procedural REST. The company behind the open source software, Apollo, today announced the GraphQL Platform to standardize access to the new technology. + +[Read more »](https://www.datanami.com/2018/11/07/will-graphql-become-a-standard-for-the-new-data-economy/) diff --git a/src/content/blog/2018-11-07-sd-times.md b/src/content/blog/2018-11-07-sd-times.md new file mode 100644 index 0000000000..017a1d70bd --- /dev/null +++ b/src/content/blog/2018-11-07-sd-times.md @@ -0,0 +1,14 @@ +--- +title: "SD Times: The Linux Foundation announces plans to form GraphQL foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: SD Times +permalink: /blog/2018-11-07-sd-times-lf-announces-plans-to-form-graphql-foundation +--- + +In an effort to grow and sustain the GraphQL ecosystem, The Linux Foundation has announced plans to launch a new open-source foundation for it. GraphQL is an [API](https://sdtimes.com/tag/apis/) technology that was initially developed by Facebook. + +The GraphQL Foundation will be a collaborative effort between industry leaders and users. + +[Read more »](https://sdtimes.com/api/the-linux-foundation-announces-plans-to-form-graphql-foundation/) diff --git a/src/content/blog/2018-11-07-the-register.md b/src/content/blog/2018-11-07-the-register.md new file mode 100644 index 0000000000..53fdb49d6d --- /dev/null +++ b/src/content/blog/2018-11-07-the-register.md @@ -0,0 +1,12 @@ +--- +title: "The Register: Facebook’s open-source license drama-zone GraphQL gets swanky digs in Linux mansion" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: The Register +permalink: /blog/2018-11-07-the-register +--- + +GraphQL, a query language for APIs that was on the verge of being shunned last year over software license concerns, has bounced back and landed in the arms of the Linux Foundation. + +[Read more »](https://www.theregister.co.uk/2018/11/07/graphql_on_linux/) diff --git a/src/content/blog/2018-11-12-channel-futures.md b/src/content/blog/2018-11-12-channel-futures.md new file mode 100644 index 0000000000..d9436165ff --- /dev/null +++ b/src/content/blog/2018-11-12-channel-futures.md @@ -0,0 +1,16 @@ +--- +title: "Channel Futures: GraphQL API Query Language Growing, Gets Own Support Foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-12 +byline: Channel Futures +permalink: /blog/2018-11-12-channel-futures-graphql-api-query-language-growing +--- + +The growing popularity and use of the open-source GraphQL API language by software developers has inspired the creation of a [GraphQL Foundation](https://www.linuxfoundation.org/press-release/2018/11/intent_to_form_graphql/) to promote the technology and help it accelerate its development and footprint in future code. + + + +The new organization, hosted by the non-profit [Linux Foundation](http://www.linuxfoundation.org/), is made up of a wide range of companies and users that are interested in growing and nurturing the GraphQL API project, which Facebook originally developed internally. After several years of development, Facebook released the code for GraphQL as an opn-source project. + +[Read more »](https://www.channelfutures.com/open-source/graphql-api-query-language-growing-gets-own-support-foundation) diff --git a/src/content/blog/2019-03-12-joint-development-foundation.md b/src/content/blog/2019-03-12-joint-development-foundation.md new file mode 100644 index 0000000000..f96f7d3a21 --- /dev/null +++ b/src/content/blog/2019-03-12-joint-development-foundation.md @@ -0,0 +1,60 @@ +--- +title: The GraphQL Foundation Announces Collaboration with the Joint Development Foundation to Drive Open Source and Open Standards +tags: ["announcements"] +layout: blog +date: 2019-03-12 +byline: GraphQL Foundation +permalink: /blog/2019-03-12-graphql-foundation-announces-collaboration-with-jdf +--- + +The [GraphQL Foundation](/foundation/), a neutral home for the GraphQL community to accelerate development of the surrounding ecosystem, today announces it is collaborating with the Joint Development Foundation (JDF), [which recently joined the Linux Foundation to drive adoption of open source and standards](https://www.linuxfoundation.org/press-release/2018/12/jdf-joins-lf-family/), to continue developing the [GraphQL specification](https://github.com/facebook/graphql/). + +GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for the data query language. The following companies Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and Thicit are joining as members to advance GraphQL as an industry specification for designing more effective APIs. + +GraphQL powers hundreds of billions of API calls a day at Facebook, which developed the technology in 2012 and played an integral role in helping GraphQL [join the Linux Foundation last year](https://www.linuxfoundation.org/press-release/2018/11/intent_to_form_graphql/). Today, virtually every major programming language offers GraphQL support through a variety of open source software libraries. + +GraphQL is the first Linux Foundation project to benefit from the JDF and Linux Foundation collaboration, which provides open source projects with a swift path to standardization for open specifications. Developers will have an open GraphQL specification and open source software implementations available for designing conformant APIs. + +“We are excited to formally welcome new members and to work closely with them to build out and support a global GraphQL ecosystem. We’re pleased that the GraphQL specification will continue to evolve through the JDF and Linux Foundation partnership. With an easier and faster way to create and advance standards, developers can concentrate on creating applications that make a bigger impact on communities around the world,” said Lee Byron, co-creator of GraphQL. + +GraphQL is important for API development as it allows nested objects in a single API request that traditionally would require multiple API requests. The [GraphQL specification](https://github.com/facebook/graphql/), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/facebook/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool are technical projects supported by the GraphQL Foundation. As application development shifts toward microservices architectures with an emphasis on flexibility and speed to market, tools like GraphQL are redefining API design and client-server interaction to improve the developer experience, increasing developer productivity and minimizing amounts of data transferred. GraphQL makes cross-platform and mobile development simpler with availability in multiple programming languages that are consistent and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +[The Linux Foundation](https://www.linuxfoundation.org/) and the [Facebook Open Source](https://opensource.facebook.com/) team leveraged the JDF’s proven framework to create a lightweight governance structure for specifications — allowing communities to quickly spin-up neutral collaborations. + +“We’re thrilled to see GraphQL and the Joint Development Foundation join forces and get to work so quickly to advance open standards,” said Jim Zemlin, executive director of the Linux Foundation. “Working with the JDF, the GraphQL community is able to leverage turnkey infrastructure to create and manage open standards more quickly and nimbly than ever before. This allows developers to continue to break barriers and modernize application development.” + +“We are very pleased to have worked closely with the Linux Foundation in creating this novel approach to specification-based collaborations,” said Michael Cheng from the Facebook Open Source team. “By offering open source communities a streamlined path to standardization and nurturing open source implementations, this strategic alignment benefits GraphQL developers, corporate contributors and end users who need both outcomes to succeed.” + +“We look forward to working closely with the GraphQL Foundation and we expect many other Linux Foundation projects to work with us this year to accelerate specifications and standards development to advance their mission and drive the creation of innovative technology, ” said David Rudin, president of the Joint Development Foundation. + +## Member Quotes + +“Given GraphQL’s centrality in the modern app development stack, the foundation we’re launching today is not just necessary, but overdue. As the creators of Apollo, the most widely used implementation of GraphQL, we’re looking forward to working together with the Linux Foundation to define appropriate governance processes and accelerate the adoption of this critical Internet standard.” — Geoff Schmidt, CEO and Co-Founder, Apollo + +“GraphQL is a foundational technology for building APIs that empower frontend developers to deliver the best user experience for their customers. With AWS AppSync and the Amplify Framework, AWS is enabling developers to build and run critical GraphQL workloads at scale, and we are excited to join the Foundation to support and grow the GraphQL community.” — Adrian Cockcroft, Vice President of Cloud Architecture Strategy, AWS + +“GraphQL has been invaluable to Butterfly Network in advancing our mission of democratizing medical imaging. It’s enabled us to build data-efficient APIs to serve healthcare providers in areas with limited broadband internet access, while preserving our ability to quickly develop new API functionality. GraphQL has played a key role in allowing our back end and front end teams to work together with a minimum of friction. We’re excited to support the GraphQL Foundation in its work to further shepherd the standard.” — Jimmy Jia, Principal Scientist, Butterfly Network + +“Dgraph started just a few months after a draft GraphQL spec was released in mid-2015. Unsatisfied with existing graph languages, we decided to bet the future of our distributed graph database on GraphQL. Dgraph is now the only database to natively support a language very close to GraphQL. Considering how easy and intuitive it is for our users, it has been the best decision we made. So, we stand proud with the GraphQL Foundation to help build the next generation of apps on graphs.” – Manish R. Jain, CEO, Dgraph Labs + +“Our goal at Gastby is to provide the best platform for building fast, compelling websites. We use GraphQL to provide a flexible data layer that can be used with different sources. We welcome the establishment of the GraphQL Specification Project and are very excited to be part of it.” — Mikhail Novikov, Software Developer, Gatsby Inc. + +“GraphZen strives to deliver a fantastic developer experience for C# developers building GraphQL APIs and to provide the support and training needed by enterprises to realize the benefits of GraphQL. GraphZen is excited to join the GraphQL Foundation and steward the GraphQL specification in a way that continues to drive innovation and adoption through open standards.” — Craig Smitham, Creator & Founder, GraphZen + +“The GraphQL technology and community is spearheading a much required shift in the API experience for the modern web, especially as applications are becoming more ‘frontend’ heavy. At Hasura, we’re extremely excited about the potential of GraphQL to evolve the way teams organize their codebases, and communicate with each other; especially in relation to the ongoing serverless movement. There could not be a better home for GraphQL projects and events than the GraphQL Foundation, and we are proud to do our bit to help make the technology and community around GraphQL sustainable and open.” — Tanmai Gopal, CEO, Hasura + +“IBM has continued to be an industry leader, helping clients keep pace with the rapidly evolving API technologies landscape. We are pleased to join the new GraphQL Foundation as a founding member to help drive greater open source innovation and adoption of this important data access language and runtime for APIs.” – Juan Carlos Soto, VP Hybrid Cloud Integration and API Economy, IBM + +“Intuit began using GraphQL shortly after it arrived in open source. We have developed a complex schema with over 600 core objects, 1,600 types and thousands of connections between objects. We’ve made major contributions to the open source GraphQL Java library. We look forward to participating in the GraphQL Foundation to advance its capabilities and more directly participate in the thriving community.” — Jeff Brewer, Vice President, Chief Architect, Small Business and Self-Employed Group, Intuit + +“Neo4j is pleased to support GraphQL, due to its unique ability to enable front-end developers, API developers and data architects to all work with the same graph-based data model. Our GraphQL integration and GRANDstack have already helped thousands of developers build graph applications with Neo4j, thanks to the huge developer productivity gain of GraphQL and the graph thinking mindset it brings for both developers and API consumers. The GraphQL Foundation is an important step to cement today’s most relevant standard for building APIs and we’re honored to join as founding members to help steward GraphQL as the ecosystem continues to evolve.” — Emil Eifrem, CEO and Co-Founder, Neo4j + +“We are grateful that Novvum has grown alongside GraphQL and its community over the past four years. We couldn’t be more excited about the future of GraphQL, and look forward to working with the Linux Foundation and GraphQL Foundation to improve the quality and experience of API development for engineers.” — Raj Singh, CEO and Co-Founder, Novvum + +“At Pipefy we are building the lean management platform. Since the beginning, GraphQL has enabled our developers to deliver new features and services more efficiently and with better communication from front-end and back-end teams. After we started using it internally, we decided to build our public API using GraphQL, a choice that enabled us to deliver a better developer experience to the developers who are building on top of our platform. We are excited to contribute to the GraphQL ecosystem and support the GraphQL Foundation.” — Raphael Costa, Head of Platform, Pipefy + +“Salsify provides a data platform that enables the world’s largest brands to deliver compelling product experiences across the retail ecosystem. Our GraphQL powered APIs enable us to support a diverse set of use cases with great developer ergonomics and excellent performance. We look forward to working with the GraphQL Foundation to support the continued evolution of GraphQL.” — Joel Turkel, Chief Software Architect, Salsify + +“[Solo.io](http://solo.io/)’s mission is to empower enterprise organizations rapidly adopt innovative technology and extend their existing investments. GraphQL is a powerful way to help “glue” monolith, microservices, and serverless applications with a unified API. Our open-source project, Sqoop, leverages GraphQL and other innovative projects like Envoy to streamline the developer experience, and simply glue together environments without writing a single line of code. We are excited to join the GraphQL Foundation and look forward to working within the GraphQL community” — Idit Levine, CEO & Founder, Solo.io + +“GraphQL, and alongside its tooling, has grown to proof its worth and is here to stay. Time for a power-up supported by many hands and brains through the Joint Development Foundation and Linux Foundation. GraphQL is the glue that keeps your domain data in context, understandable, and always ready to empower the next ideas. Looking forward to new and improved power’s, to evolution.” — Tim Govers, CEO, Thicit diff --git a/src/content/blog/2019-10-28-interactive-landscape.md b/src/content/blog/2019-10-28-interactive-landscape.md new file mode 100644 index 0000000000..bbb1a6ac21 --- /dev/null +++ b/src/content/blog/2019-10-28-interactive-landscape.md @@ -0,0 +1,50 @@ +--- +title: GraphQL Foundation Launches Interactive Landscape and Welcomes New Members from Open Source Summit Europe +tags: ["announcements"] +layout: blog +date: 2019-10-28 +byline: GraphQL Foundation +permalink: /blog/2019-10-28-graphql-foundation-launches-interactive-landscape-welcomes-new-members +--- + +[The GraphQL Foundation](/), a neutral home for the GraphQL community to accelerate development of the surrounding ecosystem, today announced seven new members to support the Foundation's efforts, along with the launch of the [GraphQL Landscape](https://landscape.graphql.org). + +The GraphQL Landscape is a dynamically generated tool designed to help explore the burgeoning GraphQL community of projects, adopters and member organizations. Currently, it is comprised of 100+ cards representing a market cap of more than $3.4T. + +"When we first created GraphQL, we set out to make product development easier with APIs driven by the needs of mobile and app developers and dramatic simplifications of how APIs are built and maintained," said Lee Byron, Director of the GraphQL Foundation. "I'm thrilled to see this influx of multi-industry support for GraphQL and a commitment to increase developer productivity, showcased throughout the impressive and growing landscape." + +"I'm thrilled to help launch the GraphQL Foundation's first landscape, displaying GraphQL's vast range of projects, adopters and members," said Chris Aniszczyk, VP of Developer Relations and CTO of CNCF at the Linux Foundation. "This interactive resource has been a labor of love from and for our community, and I look forward to watching it grow into the same standard for real-time ecosystem information that the CNCF Landscape has been for the cloud native space." + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +Brian Warner of The Linux Foundation has joined the GraphQL Foundation as its Program Director, helping to support the growing community and the project's ongoing needs. "I look forward to working with Lee and the governing board to establish the infrastructure and support needed to ensure the health and sustainability of the vibrant GraphQL community." + +GraphQL is being used in production by a [variety of high scale companies](https://graphql.org/users/) such as Airbnb, Atlassian, Audi, CNBC, GitHub, Major League Soccer, Netflix, Shopify, The New York Times, Twitter, Pinterest and Yelp. GraphQL also [powers hundreds of billions of API calls a day at Facebook](https://code.fb.com/core-data/graphql-a-data-query-language/). + +## Member Quotes + +"Open source specifications rely on strong collaboration and proper stewardship. 8base loves GraphQL and we joined the GraphQL Foundation to be involved in the specification's future with other leading-edge technology companies. Our hope is that, with our involvement, the surrounding ecosystem continues to flourish at an accelerated pace." - _Albert Santalo, CEO & Founder, 8base_ + +"It's truly surreal to see GraphQL grow from its conception to spread throughout the entire technology industry. The Foundation provides the infrastructure to make this a true industry standard, backed by stable, trusted, company-neutral governance." - _Nick Schrock, Founder, Elementl_ + +"At Expedia Group, GraphQL is helping us build better experiences for our travelers. As a rapidly adopted technology in software development, we believe an open and community supported GraphQL specification and ecosystem is critical to its continued success." - _Trevor Livingston, Principal Architect, Expedia Group (VRBO)_ + +"At Fauna, we have seen first-hand the productivity and architectural benefits GraphQL offers developers. We believe that an open ecosystem and shared specification are a benefit to all. We're excited to contribute to the GraphQL community and collaborate on its continued innovation." - _Matt Freels, CTO, Fauna, Inc._ + +"We are thrilled to be a part of the GraphQL Foundation. We see GraphQL as one of the most important emerging API technologies and strongly believe in its bright future! We're excited to continue investing in the GraphQL ecosystem and community with tools, events and educational content." - _Johannes Schickling, CEO, Prisma_ + +"We're deliberate about the technology we build and adopt. That's why we're excited to double-down on our investment in GraphQL as a foundational technology at Shopify. We believe GraphQL provides great tools for our internal teams and app developers to extend our platform and create faster merchant experiences." - _Jean-Michel Lemieux, CTO, Shopify_ + +"GraphQL plays a key part in helping us serve the public conversation on Twitter by enabling faster product iteration across our teams. As GraphQL is gaining tremendous adoption as one of the best protocols for remote retrieval of large object graphs, we are very excited to support the GraphQL Foundation." - _Anna Sulkina Engineering Director, Core Services Group, Twitter_ + +## About the GraphQL Foundation + +The GraphQL Foundation is an open, neutral organization that provides oversight of funding, operations, and marketing resources for the GraphQL community to enable widespread adoption and help accelerate development of the broader ecosystem. The [GraphQL specification](https://github.com/graphql/graphql-spec), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/graphql/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool are technical projects supported by the GraphQL Foundation. More details can be found at [https://foundation.graphql.org](/). + +## About The Linux Foundation + +The Linux Foundation is the organization of choice for the world’s top developers and companies to build ecosystems that accelerate open technology development and industry adoption. Together with the worldwide open source community, it is solving the hardest technology problems by creating the largest shared technology investment in history. Founded in 2000, The Linux Foundation today provides tools, training and events to scale any open source project, which together deliver an economic impact not achievable by any one company. More information can be found at www.linuxfoundation.org. + +\# \# \# + +_The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our trademark usage page: [https://www.linuxfoundation.org/trademark-usage](https://www.linuxfoundation.org/trademark-usage). Linux is a registered trademark of Linus Torvalds._ diff --git a/src/content/blog/2019-10-31-linux-foundation-training.md b/src/content/blog/2019-10-31-linux-foundation-training.md new file mode 100644 index 0000000000..92eca22d0b --- /dev/null +++ b/src/content/blog/2019-10-31-linux-foundation-training.md @@ -0,0 +1,39 @@ +--- +title: "Linux Foundation Training Announces a Free Online Course-Exploring GraphQL: A Query Language for APIs" +tags: ["announcements"] +layout: blog +date: 2019-10-31 +byline: GraphQL Foundation +permalink: /blog/2019-10-31-linux-foundation-training-announces-free-online-course-exploring-graphql +--- + +[The Linux Foundation](http://www.linuxfoundation.org/), the nonprofit organization enabling mass innovation through open source, today announced enrollment is now open for a new, free, course – [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql). This course is offered through [edX](https://www.edx.org/), the trusted platform for learning. + +[GraphQL](https://graphql.org) is revolutionizing the way developers are building APIs for web, mobile and even databases. But what exactly is GraphQL? GraphQL is an open source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. + +This course explains what GraphQL is and why it is getting so much attention from software engineers. It covers the advantages over REST, what types of software architectures to use it with, and why it benefits both frontend and backend developers. The student practices GraphQL queries in an interactive playground, and learns advanced topics such as how to implement a GraphQL server on the backend, how to use a GraphQL server with a client, and how to keep the GraphQL server secure. The course content was originally created by [Prisma](https://prisma.io), and updated and maintained by [Novvum](https://novvum.io). + +"Since open sourcing GraphQL, I have been blown away by the growth of the technology and community. I'm excited to see the introduction of more educational material which I hope will help our community continue to grow and reach developers world-wide." – _Lee Byron, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ + +This course will help programmers gain the skills needed to use GraphQL for a small project or professionally in production. They will feel comfortable getting started with the right tools for their use case. + +For the nontechnical person, this course will help them improve communication with developers and to participate in conversations about GraphQL. They will understand when and why to use GraphQL for a project. + +[Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql) is available at no cost, with content access for up to 7 weeks. Learners may upgrade to the verified track for $99, which includes all graded assessments, unlimited access to the course content and the ability to earn a Verified Certificate upon passing the course. + +### About The Linux Foundation + +The Linux Foundation is the organization of choice for the world’s top developers and companies to build ecosystems that accelerate open technology development and industry adoption. Together with the worldwide open source community, it is solving the hardest technology problems by creating the largest shared technology investment in history. Founded in 2000, The Linux Foundation today provides tools, training and events to scale any open source project, which together deliver an economic impact not achievable by any one company. More information can be found at [www.linuxfoundation.org](https://linuxfoundation.org). + +The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our trademark usage page: [https://www.linuxfoundation.org/trademark-usage](https://www.linuxfoundation.org/trademark-usage/). + +Linux is a registered trademark of Linus Torvalds. + +\# \# \# + +### Media Contact: + +Clyde Seepersad +The Linux Foundation +404-964-6973 +cseepersad@linuxfoundation.org diff --git a/src/content/blog/2020-04-02-graphql-annual-report-2019.md b/src/content/blog/2020-04-02-graphql-annual-report-2019.md new file mode 100644 index 0000000000..c37151b693 --- /dev/null +++ b/src/content/blog/2020-04-02-graphql-annual-report-2019.md @@ -0,0 +1,26 @@ +--- +title: "Announcing the 1st GraphQL Foundation Annual Report" +tags: ["announcements"] +layout: blog +date: 2020-04-02 +byline: GraphQL Foundation +permalink: /blog/2020-04-02-announcing-the-first-graphql-foundation-annual-report +--- + +The GraphQL Foundation recently turned 1 year old and is happy to announce its [first annual report](/foundation/annual-reports/2019/)! + +The annual report details the accomplishments of the organization in its first year, along with a forward looking statement for 2020 and beyond from Lee Byron, the GraphQL Foundation Executive Director: + +> As the Executive Director of the GraphQL project, I hope I can speak for the whole community when I say we are looking forward to another productive year of GraphQL development. We are putting the final touches on the GraphQL 2020 spec release, and continue to make great progress developing new features, stabilizing existing ones, and exploring beyond core GraphQL. +> +> It has been really encouraging to see GraphQL continue to evolve over the past year as a technology and as a community. GraphQL is being used at scale by not only Facebook but now a great number of organizations large and small. As I said when first introducing the project, GraphQL is unapologetically driven by the needs of the client. This has been a critical aspect of GraphQL's success and it is great to see this principle reflect itself in our community, where those more interested in consuming APIs than producing them have come together to support the ongoing sustainability of the project. +> +> Since establishing the GraphQL Foundation, we've had an outpouring of support from these companies. This neutral, non-profit home for the GraphQL project has provided a healthy way for users, contributors, and supporters to collaborate and contribute funding in support of our programs and collaborative processes. For example, this support has enabled us to support long-time contributor Ivan Goncharov to focus on crucial development and maintenance of the reference implementation, specification and other community gardening work. It has also allowed us to launch a [free GraphQL edX course](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis), and has enabled us to take some first steps toward supporting and producing community events. +> +> Development of the GraphQL spec has remained open to all contributors. Over the last year we've brought more rigor and clarity to the development process. I've found it encouraging that contributions have been a healthy mix of aspirational new features and iterative improvements to the stable base. This demonstrates that GraphQL is evolving in meaningful ways to address exciting new use cases while also building confidence and stability around what thousands of companies use in production every day. Both of these are essential for GraphQL's long term success. +> +> Looking ahead, I have great optimism for GraphQL and see huge opportunities. First, we've been hard at work on the 2020 spec and that release is imminent. Spec development continues to accelerate and exciting advancements and improvements are underway for the 2021 release and beyond. Second, we have been accepted to participate in Google Summer of Code and are looking forward to adding these talented students as project collaborators. Third, the communities around the core GraphQL project are collaborating. For example, GraphiQL and Playground recently announced they will be joining efforts to build better tools for us all. +> +> Thank you again for your involvement in this project and your support of the GraphQL Foundation. I am pleased with our progress and am looking forward to another productive year. +> +> _– **Lee Byron**, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ diff --git a/src/content/blog/2020-04-03-graphiql-graphql-playground.md b/src/content/blog/2020-04-03-graphiql-graphql-playground.md new file mode 100644 index 0000000000..8f2ecc7cfa --- /dev/null +++ b/src/content/blog/2020-04-03-graphiql-graphql-playground.md @@ -0,0 +1,75 @@ +--- +title: "Web-based GraphQL IDEs for the win: How & Why Playground & GraphiQL are joining forces" +tags: ["announcements"] +layout: blog +date: 2020-04-03 +byline: Rikki Schulte, Jason Kuhrt +permalink: /blog/2020-04-03-web-based-graphql-ides-for-the-win +--- + +![Banner showing the Prisma and GraphQL Foundation logos with a :handshake: emoji between them](/img/news/playground-transition-banner.png) + +## GraphiQL's beginnings + +The initial public commit to GraphiQL was in 2014. + +When [Lee Byron](https://github.com/leebyron), [Hyo Jeong](https://github.com/asiandrummer) and [Angel Gomez](https://github.com/AGS-) first published it, the intention was to create a minimal reference IDE development ecosystem for GraphQL. [Greg Hurrell](https://github.com/wincent) created the streaming `graphql-language-service-parser`, designed to empower the `codemirror-graphql` mode. + +The goal was to give people the utility packages they needed to build their own web based or desktop IDE tool, and at its core, a relatively simple tool for folks to start learning and applying the language, and for exploring schemas. At the time, LSP was not yet a commonly accepted standard, and VSCode had yet to become the incredibly popular development tool it is today. + +Last year, these original engineers handed over to the graphql foundation three repositories: GraphiQL, `codemirror-graphql` and the `graphql-language-service` packages. + +Fast forward to now, and GraphiQL is now used by GraphQL implementations in dozens of languages, as well as hundreds of frameworks and runtimes. It's used for everything from HTTP operations, to querying local schemas, data science tools, and even for data transmission for IOT platforms. You'll find it in the AWS dashboard, GitHub developer tools, and many more places we are honored to see this library used. + +## Enter Playground + +Alongside GraphiQL, many of us are familiar with its sibling - the handsome & feature-full [GraphQL Playground](https://github.com/prisma-labs/graphql-playground). Following GraphiQL's lead, it uses our `codemirror-graphql` ([Insomnia](https://insomnia.rest/graphql/), [Altair](https://altair.sirmuel.design/) and many others are also in this club!). This is why there are so many similarities between the direct editing experience of these tools. + +Playground is _exactly_ what we wanted to happen. It helped drive the development of our language ecosystem, and gave users an easier option than the more customization-oriented GraphiQL. It provided a ton of excellent features - `graphql-config` support, multiple tabs, i18n, and http server middlewares. + +## Prisma Donates Playground to GraphQL Foundation + +As many have successfully guessed, **Prisma _is_ donating Playground to the GraphQL Foundation.** Entering 2019 Prisma envisioned an eventual Playground 2.0 but then the advent of a modular GraphiQL 2 project showed an opportunity for great synergy, made all the more natural by Prisma's pivot toward modular database tooling for developers. + +Playground 1.x has been a community effort of [dozens of contributors](https://github.com/prisma-labs/graphql-playground/graphs/contributors). Prisma thanks all contributors who helped out along the way. Prisma remains deeply committed to supporting the future of the GraphQL language. For example the [Prisma Labs team](https://github.com/prisma-labs) continues to focus on GraphQL API layer and [recently announced](https://github.com/prisma-labs/nexus/issues/373) the transition of [Nexus](https://nexus.js.org/) from a schema building library into a full [fledged GraphQL API framework](https://www.nexusjs.org). + +## The Playground Features you love + +In the interest of parity, we will keep a lot of the same features, whether by introducing them to the core or proving plugins that will ship with the playground preset. + +- multiple tabs (GraphiQL Core) +- headers tab per operation tab (plugin) +- tracing tab (plugin) +- playground doc explorer (plugin) +- internationalization (GraphiQL Core) +- `graphql-config` support, with new features thanks to our fantastic colleagues at the [Guild Dev](https://github.com/orgs/the-guild-org/people), who Prisma has entrusted with many other projects. +- easy to use middlewares + +## New Features + +These new features will come with the new `graphql@2.0.0`: + +- vscode style command palette (via `monaco-editor`) +- jump to fragment or other type definitions +- generate a collection of operations from your project's source files +- more customizable network options - default headers per project, as well as headers per-operation +- helpers for integrating custom authentication flows +- extensive theme, layout, and component customization abilities (you can start with the playground theme preset and work from there!) +- custom tabs and panels +- a first-class `graphiql-explorer` plugin in partnership with the original creators, our colleagues at [OneGraph](https://www.onegraph.com/) + +## How will it be re-implemented? + +Playground 2.0 will be a GraphiQL preset that includes the custom theme as well as the custom playground doc explorer plugin (as an alternative to the new doc explorer proposed by @orta and other users), HTTP headers and tracing tab plugins. You can find more technical detail, ongoing discussion and things to work on the [GraphiQL Plugin API Meta Issue](https://github.com/graphql/graphiql/issues/983) or in [other playground related discussion issues](https://github.com/graphql/graphiql/issues?q=label%3Agraphql-playground-preset) in the GraphiQL monorepo. + +While the Playground team's baseline goal will be relative parity with Playground 1.0, the team will be accepting proposals for new features and plugins that build on the existing GraphQL Playground experience. The [Features Roundup](https://github.com/graphql/graphiql/projects/10) project is a great place to see what we have planned already for plugins that Playground's preset can use, or you can also create a proposal if you don't see what you're looking for. + +## `graphql-playground` repository next steps + +The existing `graphql-playground` repository will get one or two more maintenance/bugfix releases before it will be archived. You can still fork it of course. You can learn more about this in [the graphql-playground issue](https://github.com/prisma-labs/graphql-playground/issues/1143) we created for this migration. + +## Call for Contributors + +We're also looking for contributors to form a team to develop, support and maintain a playground preset. The goal would be for them to help iterate on and stabilize the plugin API effort, as well as work towards the effort of contributing to and maintaining the playground preset and its associated plugins. If you are interested leave comment in the [Call for Contributors Github issue](https://github.com/graphql/graphiql/issues/1443). + +You can also follow the [Plugin API Proposal discussion issue](https://github.com/graphql/graphiql/issues/983) for updates, and get involved in our [discord channel](https://discord.gg/EXUYPaY) we've created just for the playground initiative. diff --git a/src/content/blog/2020-06-13-season-of-docs.md b/src/content/blog/2020-06-13-season-of-docs.md new file mode 100644 index 0000000000..467be007b9 --- /dev/null +++ b/src/content/blog/2020-06-13-season-of-docs.md @@ -0,0 +1,36 @@ +--- +title: "GraphQL joins Google Season of Docs" +tags: ["announcements"] +layout: blog +date: 2020-06-13 +byline: Obinna Ekwuno +permalink: /blog/2020-06-13-graphql-joins-google-season-of-docs +--- + +# **GraphQL joins Google Season of Docs.** + +Open source communities are one of the best ways to collaborate with a larger scale of developers, it incorporates the best part of learning, mentorship, and collaboration on a large scale. +**Open-source** software has been proven to create large effective ecosystems of users that improve quality. It has been known for many years that the more a piece of software is used, the quicker bugs **will** be identified. In the **open-source** community when a bug is found, users contribute fixes. +**GraphQL** is an **open**-**source** data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. **GraphQL** was developed internally by Facebook in 2012 before being publicly released in 2015. + +# **What is Google Season of Docs?** + +The Google Season of Docs is the intersection of technical writing, open-source contribution, and mentorship. In this three month program, you will be working closely with maintainers of open source projects to improve on existing documentation and processes to better the community. + +For technical writers who are new to open source, the program provides an opportunity to gain experience in contributing to open source projects. + +For technical writers who're already working in open source, the program provides a potentially new way of working together. Season of Docs also gives open source projects an opportunity to engage more of the technical writing community. + +## **How can I be a part of this?** + +Open source organizations apply to be mentor organizations in the Season of Docs which includes a list of documentation project ideas with their applications. Technical writers can look through the list of proposals here are the [project ideas for the GraphQL organization](https://github.com/graphql/foundation/tree/master/mentorship/2020/gsod). +When you have selected a project you would like to work on, write up a project proposal and submit it to [Season of Docs](https://developers.google.com/season-of-docs). You may continue to refine your proposals until July 9th. If you need clarifications, please contact Ivan Goncharov and Uri Goldshtein by sending a message to [mentorship@lists.foundation.graphql.org](mailto:mentorship@lists.foundation.graphql.org). + +The GraphQL organization will reach out to you after they have evaluated the proposals. The accepted technical writers spend a few months working with mentors from the open-source organizations to complete their projects. At the end of the program, the Google program administrators announce the projects that finished successfully. +Check out the [official technical writer guide.](https://developers.google.com/season-of-docs/docs/tech-writer-guide) + +## **How long is this program?** + +The technical writing applications started on June 9th, 2020 and will last till July 9th, 2020. The selection process for the proposals submitted to organizations lasts till July 31st, 2020. Then Doc development officially begins September 14th, 2020, and ends December 5th, 2020. For a more detailed timeline check out the [official season of docs timeline](https://developers.google.com/season-of-docs/docs/timeline). + +_– **Obinna Ekwuno**, Software Engineer, DevRel GatsbyJS_ diff --git a/src/content/blog/2020-06-30-gsoc-2020-naman.md b/src/content/blog/2020-06-30-gsoc-2020-naman.md new file mode 100644 index 0000000000..dbc186ec8a --- /dev/null +++ b/src/content/blog/2020-06-30-gsoc-2020-naman.md @@ -0,0 +1,28 @@ +--- +title: "Google Summer of Code 2020 Participant: Naman" +tags: ["announcements"] +layout: blog +date: 2020-06-30 +byline: Naman Kumar +permalink: /blog/2020-06-30-gsoc-2020-participant-naman +--- + +![GSOC 2020](/img/logos/gsoc.svg) + +> [Naman Kumar](https://naman.sh) is a Computer Science & Engineering student from New Delhi, India and a FullStack Engineer at [ProductHunt](https://producthunt.com). He is selected for Google Summer of Code 2020 - GraphQL Foundation under the mentorship of [Ivan Goncharov](https://github.com/IvanGoncharov). In this post he will share his plans on how he is going to spend his summer contributing to the Graphql Foundation. + +Hi, GraphQL is a technology I use everyday at my work place and other projects building platforms with 200 to 2 million users. I am surely in love with it, acknowledging how much it improves the development speed and removes the overhead of documentation for starters. + +I have huge respect for Open Source organisations and really inspired by the work the whole graphql community is doing to make lives of developers easier. I have always wanted to participating in GSOC, which I assure you is a dream of every student. + +I got to know about the acceptance of Graphql Foundation under GSOC from Ivan’s [talk](https://www.youtube.com/watch?v=PsXxL1oJLrc&list=PLTRTpHrUcSB9jtvOwnq1yVwZl5k2DdBb2&index=24&t=0s) at GraphQL Asia Submit 2020. I was really excited about having a chance to contribute to the tools which are used not only by me but are powering applications used by billions of people on the planet. + +Having a keen interest in compiler design, the project idea of working on the [graphql.js](https://github.com/graphql/graphql-js/) reference parser looked really interesting to me. Fortunately being selected for the program, I am going to spend the summer of 2020 working on Graphql.js reference parser and [GraphiQL parser](https://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-parser), to merge the two together. Graphql.js reference parser do not have streaming support or the best error recovery setup. The goal is to take inspiration from the GraphiQL parser and implement the streaming support in the reference parser so that it can be used by IDEs and other development tools. + +I spent the community bonding period getting to know both the people in the graphql community and getting myself familiar with the projects. I explored the code base and solved few minor bugs with the help of Ivan. The graphql.js reference parser which is well maintained has a really good code quality and readability which helped me gain it's understanding really quickly, on the other hand the GraphiQL parser with just 1000 lines of pure “old is gold” code base, implemented 3 years ago, looks difficult to grasp at first but with proper understanding is a very simple and cute state machine. + +Ivan and I also spent the time ideating about dividing the whole project into 3 milestones and breaking those into smaller goals. As the graphiql parser is not actively maintained and has zero test coverage it was really important to have the parser fully covered before we make any changes. Our goal was to enable the graphql.js parser be able to used by the IDEs and performance is a major factor we need to care about for that. Considering it, we also decided to do benchmarking of the GraphiQL parser. Ergo the first milestones includes reaching 100% test coverage for the GraphiQL parser and thorough benchmarking. + +The next steps will be to use the graphql.js reference parser’s lexer in the GraphiQL parser and construct a plan to merge the parsers. Once the graphql.js parser reaches the capabilities as that of the GraphiQL parser, we can migrate the GraphiQL IDE to use graphql.js parser. Near to the completion of the first milestone I am really happy with the new thing I have learned under the mentorship of Ivan and really excited to work on the upcoming tasks. + +> – **Naman Kumar**, GSOC 2020, Graphql Foundation diff --git a/src/content/blog/2020-09-11-newsletter-august-2020.md b/src/content/blog/2020-09-11-newsletter-august-2020.md new file mode 100644 index 0000000000..82c51b596e --- /dev/null +++ b/src/content/blog/2020-09-11-newsletter-august-2020.md @@ -0,0 +1,59 @@ +--- +title: GraphQL Foundation Monthly Newsletter August 2020 +tags: ["newsletter"] +layout: blog +date: 2020-09-11 +byline: GraphQL Foundation +permalink: /blog/2020-09-11-graphql-foundation-monthly-newsletter-august-2020 +--- + +[GraphQL](https://graphql.org) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via a new monthly GraphQL Foundation newsletter. + +All work on GraphQL and related projects, both big and small, is important to the growth and maturity of the project, which has already seen adoption from many of the world’s largest internet-scale companies. + +Many of these items are just in beginning discussions while some are further along. The goal of this monthly post is to summarize and share what’s top of mind for the community and help others get involved. These are only initial discussion topics. For notes on the full discussion during the monthly WG calls please refer to these [call notes](https://docs.google.com/document/d/1_jvxzCkI6VWo2KEobisoiW1n_irJ4dp0aD8Pq9UXuvw/edit#) + +## Updates + +### [GraphQL over WebSocket refresh, existing issues and security implications](https://github.com/enisdenjo/graphql-transport-ws/blob/master/PROTOCOL.md) + +This discussion topic proposes taking on the following two critical items of security and bypassing the onConnect event. And possibly re-writing the WebSocket protocol from scratch with full RFCs + +### [Tagged Type RFC](https://github.com/graphql/graphql-spec/pull/733) + +This is an RFC for a new "Tagged" type to be added to GraphQL, to help address the input polymorphism feature gap. Originally proposed as the @oneField directive, the Tagged type has evolved into an entire new type in the type system, and is currently the lead proposal from the Input Unions Working Group. + +A Tagged type defines a list of named member fields each with an associated type (like the fields in Object and Input Object types); but with the stipulation that exactly one of these fields must be present (no more, no less). Depending on the types of the member fields, a Tagged type could be appropriate for input, output, or both, which is proving to be quite controversial; it's possible that the tagged type might be scoped to input only before release. The Tagged type was most recently introduced to the GraphQL Working Group in August and is undergoing feedback and revision before an expected update with the working group in October or November. + +If you have use-cases for input polymorphism, please take a look - feedback is very welcome. + +### [Standardize naming for Field coordinates](https://github.com/graphql/graphql-spec/issues/735) + +This PR proposes the following 2 RFCs + +1. Formalizing the naming and definition of field coordinates (as discussed in [#735](https://github.com/graphql/graphql-spec/issues/735)) +2. Formalizing the way in which a Field Node (and list thereof) contained within a query document can be serialized as field coordinates + +### [Adding generics to DocumentNode and Source to allow TypeScript type inference](https://github.com/graphql/graphql-js/issues/2727) + +[@dotansimha](https://github.com/dotansimha) from [The Guild](https://the-guild.dev) had recently implemented an improved version of DocumentNode, called TypedDocumentNode, that allows type generics for result type and variable type and contributed it to graphql-js. + +This improved version allows TypeScript to infer the types automatically when an object that matches the signature is used. + +You can learn more by reading about it on his [blog post](https://the-guild.dev/blog/typed-document-node). + +## In Other News + +- We recently welcomed the newest member of the GraphQL Foundation - [The Guild](https://the-guild.dev). [Here](https://foundation.graphql.org/members/) you can find the list of all current members of the foundation. +- [@hereisnaman](https://github.com/hereisnaman) successfully finished his Google Summer of Code (GSoC) project and is in the process of merging his[PR](https://github.com/graphql/graphql-js/pull/2770). Learn more about it [here](https://foundation.graphql.org/news/2020/06/30/google-summer-of-code-2020-participant-naman/). +- GraphQL was accepted to the Google Season of Docs (GSoD) and [@carolstran](https://github.com/carolstran) will be working on the [FAQ section](https://developers.google.com/season-of-docs/docs/participants/project-graphql-carolstran) of graphql.org +- [GraphQL over HTTP](https://github.com/graphql/graphql-over-http) was moved and is now under GraphQL Foundation +- [@lilianammmatos](https://github.com/lilianammmatos) and [@robrichard have](https://github.com/robrichard) made big progress on `@deferer & @stream`. Yo can learn more by watching their talk about it at the [GraphQL Summit](https://www.youtube.com/watch?v=icv_Pq06aOY): +- [@andimarek](https://github.com/andimarek) and [@eapache](https://github.com/eapache) started the [GraphQL Scalars](https://github.com/graphql/graphql-scalars/issues) initiative. You can also learn more by watching their talk about it at the [GraphQL Summit](https://www.youtube.com/watch?v=SRGTaYL3h9c). +- All WG recordings were published on [Youtube](https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA). + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2020-09-21-gsod-2020-carolyn.md b/src/content/blog/2020-09-21-gsod-2020-carolyn.md new file mode 100644 index 0000000000..9b28fcf27d --- /dev/null +++ b/src/content/blog/2020-09-21-gsod-2020-carolyn.md @@ -0,0 +1,35 @@ +--- +title: "Google Season of Docs 2020 Participant: Carolyn Stransky" +tags: ["announcements"] +layout: blog +date: 2020-09-21 +byline: Carolyn Stransky +permalink: /blog/2020-09-21-gsod-carolyn-stransky +--- + +> [Carolyn Stransky](https://workwithcarolyn.com/) is a frontend developer and journalist based in Berlin, Germany. She is selected for [Google Season of Docs 2020](https://developers.google.com/season-of-docs) - GraphQL Foundation under the mentorship of [Ivan Goncharov](https://github.com/IvanGoncharov). In this post, she will share her plans on how she is going to spend the next couple of months contributing to the GraphQL Foundation. + +When I first heard about GraphQL three years ago, I thought that it was a programming language that constructed charts or plotted points on graphs. After building my first application with GraphQL, I would have categorized it as React-specific tooling, like Redux or React Router. Months later, I was still convinced it was just another Twitter-fueled programming trend. + +Looking back now, it’s clear that my initial perceptions of GraphQL were incorrect… but they weren’t uncommon. + +Learning a new technology comes with a lot of questions - and GraphQL is no exception. There are so many misconceptions about what GraphQL is and how it can be used. And I wasn’t the only GraphQL newbie holding on to those same, inaccurate beliefs. + +After gaining a solid understanding of what GraphQL _really_ is, I started giving presentations at conferences about how difficult I found the learning process (literally the talk title was [Life is hard and so is learning GraphQL](https://workwithcarolyn.com/speaking/life-is-hard-and-so-is-learning-graphql)). This talk was cathartic, both for me and the audiences I was presenting to. Through my research, I also realized that while [graphql.org](https://graphql.org/) thoroughly covers the core concepts, it doesn’t directly address some of the questions you face as a new learner. + +Fortunately, GraphQL has evolved enough that the information is out there and available. It’s more a matter of finding it because that information is scattered throughout various resources and programming communities. That’s why I was excited to see a [Frequently Asked Questions](https://github.com/graphql/faq) (FAQ) page as one of the proposed Season of Docs projects. And as someone who has openly critiqued the GraphQL documentation, I wanted to play a part in actively improving them. + +There are two main goals behind this FAQ page: + +1. **Build a centralized resource for everyone**. As of now, much of the GraphQL ecosystem is focused on JavaScript due to the early ties with Relay and React. But GraphQL is for everyone, regardless of programming language, so this resource should be too. To ensure this, the FAQ content will be framework agnostic and vendor-neutral. +2. **Become a truly community-owned resource**. GraphQL was initially passed down from Facebook, but it’s no longer maintained solely by Facebook. This should be a resource that everyone is welcome to contribute to and the community feels empowered to change and grow. That way, common questions won’t be left unanswered. + +The plan for exactly how to tackle this page will morph and evolve throughout the next two and a half months. My hope, though, is that keeping these goals in mind will lead to a new resource that will help both newcomers and seasoned GraphQL users thrive. + +In preparation for the documentation development part of Season of Docs, I became familiar with [the repository behind graphql.org](http://graphql.org) by triaging issues and reviewing open pull requests. I also helped with the [ongoing migration to Gatsby](https://github.com/graphql/graphql.github.io/issues/875) because I’ll be building the new FAQ page in Gatsby (there are still [open issues](https://github.com/graphql/graphql.github.io/pull/913#issuecomment-687325610) if you want to contribute). You can read more details about the community bonding phase [on my blog](https://workwithcarolyn.com/blog/community-bonding-gsod). + +The next step is to create the inaugural batch of FAQ content. This will be about 10-15 questions sourced from various areas of the Internet and in consultation with prominent GraphQL teachers. Once those are complete with thorough answers and built into the new Gatsby site, I’ll get feedback from the community (that’s you) and continue to iterate on the content, design, layout - everything! + +If you have opinions or would like to follow the project’s progress, [open an issue](https://github.com/graphql/graphql.github.io/issues/new) or [lurk around the website repository](https://github.com/graphql/graphql.github.io/). + +> – **Carolyn Stransky**, GSoD 2020, Graphql Foundation diff --git a/src/content/blog/2020-10-15-newsletter-september-2020.md b/src/content/blog/2020-10-15-newsletter-september-2020.md new file mode 100644 index 0000000000..3c15fc6f4c --- /dev/null +++ b/src/content/blog/2020-10-15-newsletter-september-2020.md @@ -0,0 +1,61 @@ +--- +title: GraphQL Foundation Monthly Newsletter September 2020 +tags: ["newsletter"] +layout: blog +date: 2020-10-15 +byline: GraphQL Foundation +permalink: /blog/2020-10-15-graphql-foundation-monthly-newsletter-september-2020 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via a new monthly GraphQL Foundation newsletter. + +All work on GraphQL and related projects, both big and small, is important to the growth and maturity of the project, which has already seen adoption from many of the world’s largest internet-scale companies. + +Many of these items are just in beginning discussions while some are further along. The goal of this monthly post is to summarize and share what’s top of mind for the community and help others get involved. These are only initial discussion topics. For notes on the full discussion during the monthly WG calls please refer to these [call notes](https://github.com/graphql/graphql-wg/blob/b1bfe0cee461d752146dc77e5c35a5e8d7921272/notes/2020-09-03.md#allowing-deprecation-of-inputs-10m-evan). + +## WG Updates: + +### Allowing deprecation of inputs + +Discussed whether the spec should allow deprecating an input that is required. Two concerns: deprecations are intended to be actionable; introspection does not include deprecated things by default - could break tooling that's no longer receiving deprecated inputs as part of their introspection results. + +- Regarding case 1: not much of a blocker; the action from deprecation doesn't need to come from a schema (e.g. it could be switch to a new version/endpoint) +- Regarding case 2: much more of an issue because we could be breaking clients. My suggestion is to return required arguments even if they're deprecated - introspection should always give you what's necessary even if you say you don't want it. + +### @defer/@stream + +trying to answer the “why we don’t support Defer on field question”. The reasoning for that is the original Apollo implementation was only on fields. We ran into problems in that it’s difficult to coordinate + +### Querying Query query queries: "query" ambiguity + +The issue was first raised around the ambiguity of the term "query" as used in the GraphQL spec and ecosystem back in April. In just this title, we've referred to requesting, the Query type, a query operation, and a nested selection set; but that's just some of the ways we use this term, which can make it really hard for people new to GraphQL to get up to speed. Benjie has analyzed the use of the term, and has proposed a consistent set of terminology to use based on other terms used in the GraphQL spec already, this was discussed at the most recent Working Group. See [Spec PR #777](https://github.com/graphql/graphql-spec/pull/777). + +### Other topics discussed: + +- [TypeScript Migration Progress in graphql-js](https://github.com/graphql/graphql-js/issues/2104) +- [How to bootstrap graphql-js working group?](https://github.com/graphql/graphql-js/issues/2787) +- GitHub infrastructure for managing Working groups +- Custom Scalars subproject + +## Ecosystem Updates: + +Vscode-graphql, which uses the official GraphQL Language Server, has now become the official reference vscode extension! Like GraphiQL, we will work to ensure all new spec language features are introduced here. After making the announcement we gained 30,000 new users! [This blog post](https://rikki.dev/vscode-graphql-lsp-0-3-0/) will tell you more about all the new features. + +## In Other News... + +- Dgraph Labs launched [Slash GraphQL](https://www.producthunt.com/posts/slash-graphql), a product that can help you get a working GraphQL backend in minutes +- A new library for the WebSocket Protocol has been created. Read more [here](https://the-guild.dev/blog/graphql-over-websockets). +- The Guild has created a new [GraphQL-ESLint library](https://github.com/dotansimha/graphql-eslint) for linting your GraphQL schemas and operations with community and custom rules. Read more [here](https://the-guild.dev/blog/introducing-graphql-eslint). +- GraphQL CLI 4.1 has been released. [Read here](https://the-guild.dev/blog/whats-new-in-graphql-cli-4.1.0) about the new functionality. +- You can now consume WebHooks as GraphQL Subscriptions thanks to the new version of [GraphQL Mesh](https://github.com/urigo/graphql-mesh). Read more [here](https://the-guild.dev/blog/graphql-mesh-subscriptions). +- Hasura’s [Enterprise GraphQL Conf](https://hasura.io/enterprisegraphql/) is taking place October 20-22. There is still time to register +- AWS released a new webinar “[Build Modern Serverless Applications with GraphQL APIs and AWS AppSync](https://pages.awscloud.com/Build-Modern-Serverless-Applications-with-GraphQL-APIs-and-AWS-AppSync_2020_0918-MBL_OD.html?&trk=ep_card-el_a131L0000084iG3QAI&trkCampaign=NA-FY20-AWS-DIGMKT-WEBINAR-SERIES-September_2020_0918-MBL&sc_channel=el&sc_campaign=pac_2018-2019_exlinks_ondemand_OTT_evergreen&sc_outcome=Product_Adoption_Campaigns&sc_geo=NAMER&sc_country=mult)” +- Catch up on recent talks from the [GraphQL Berlin](https://www.youtube.com/watch?v=4UDsR4z2KIY) Meetup +- [GraphQL Amsterdam](https://www.meetup.com/Amsterdam-GraphQL-Meetup/events/273901137/), [GraphQL Copenhagen](https://www.meetup.com/Copenhagen-GraphQL-Meetup-Group/events/273901144/), React GraphQL Academy and The Guild are collaborating on an online GraphQL Meetup. Check out the details [here](https://twitter.com/reactgqlacademy/status/1313789927834947585?s=20). +- Apollo created an [Error Handling Visualizer](https://apollo-visualizer.vercel.app/) tool, which provides an interactive playground to visualize the relationship between nullability and error handling in GraphQL, specifically with Apollo Client. + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2020-11-12-newsletter-october-2020.md b/src/content/blog/2020-11-12-newsletter-october-2020.md new file mode 100644 index 0000000000..46e6791826 --- /dev/null +++ b/src/content/blog/2020-11-12-newsletter-october-2020.md @@ -0,0 +1,54 @@ +--- +title: GraphQL Foundation Monthly Newsletter October 2020 +tags: ["newsletter"] +layout: blog +date: 2020-11-12 +byline: GraphQL Foundation +permalink: /blog/2020-11-12-graphql-foundation-monthly-newsletter-october-2020 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +## WG Updates + +The [GraphQL Working Group](https://github.com/graphql/graphql-wg) meets monthly, and records [detailed minutes](https://github.com/graphql/graphql-wg/blob/master/notes/2020-10-01.md). You can also listen to the replays of GraphQL technical meetings on [YouTube](https://youtube.graphql.org). + +### [Query ambiguity: discussion of replacement terms](https://github.com/graphql/graphql-spec/issues/715) + +In the GraphQL ecosystem the term "query" can seem overloaded and ambiguous - sometimes it refers to the query operation type or a query operation, sometimes it refers to a GraphQL request or a GraphQL document containing operations, sometimes it refers to the contents of selection sets (as in "query reuse"), and sometimes it is used as a verb to refer to the generic act of querying a server for information. + +The WG discussed the best way to remove this ambiguity and how to move forward. + +### [Schema Coordinates RFC check in](https://github.com/graphql/graphql-spec/pull/746) + +The RFC is filed, and the next action is to turn this into an actual spec edit. + +### [Tagged type update](https://github.com/graphql/graphql-spec/pull/733) + +This is an RFC for a new "Tagged type" to be added to GraphQL. It replaces the ["@oneField directive"](https://github.com/graphql/graphql-spec/pull/586) proposal following feedback from the Input Unions Working Group. Please note that "Tagged type" is the working name, and may change if we come up with a better name for it. + +A Tagged type defines a list of named members each with an associated type (like the fields in Object types and Input Object types), but differs from Object types and Input Object types in that exactly one of those members must be present. + +The aim of the Tagged type is to introduce a form of polymorphism in GraphQL that can be symmetric between input and output. In output, it can generally be used as an alternative to Union (the differences will be outlined below). It goes beyond interfaces and unions in that it allows the same type to be specified more than once, which is particularly useful to represent filters such as this pseudocode `{greaterThan: Int} | {lessThan: Int}`. + +## In Other News... + +- [Vox Media evaluates Apollo GraphQL Federation and The Guild Schema Stitching](https://product.voxmedia.com/2020/11/2/21494865/to-federate-or-stitch-a-graphql-gateway-revisited) for the best GraphQL platform to manage “a chorus of applications working together to publish modern media” +- AWS released a “[Decision Guide to GraphQL Implementation](https://aws.amazon.com/graphql/guide/)” +- [Netflix discusses](https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2) how it scales its API with [Apollo GraphQL](https://www.apollographql.com/) Federation via its next generation architecture, “Studio Edge”, which uses federation as a critical element. +- [Building a GraphQL server with GraphQL Helix](https://dev.to/danielrearden/building-a-graphql-server-with-graphql-helix-2k44), a newly released library for building GraphQL APIs. The aim of GraphQL Helix is to allow developers to use new features that are not yet supported in other libraries and to prevent vendor lock-in. +- [GraphQL Tools v7 was released to deliver the next generation GraphQL API Gateway](https://the-guild.dev/blog/graphql-tools-v7), bringing a new way to federate multiple GraphQL servers, focusing on standard spec compliant GraphQ +- We’ve already announced that The Guild has recently joined the GraphQL Foundation and now [they wrote a blog post about it](https://the-guild.dev/blog/joining-graphql-foundation). Who will be the next to join? + +## Upcoming Events: + +- **Nov 17**: [GraphQL Contributor Days](https://www.graphql-meetup.com/#/graphql-contributor-days-november-2020), in partnership with [Hasura](https://hasura.io/), will give important updates to the community, and provide a forum for anyone using GraphQL to have direct access to core contributors and authors of various libraries and frameworks through live chat and an online broadcast. +- **Dec 2**: [Relay Meetup](https://relaymeetup.com/) is a global, online meetup on Relay, the GraphQL client. This event will feature a conversation about the @defer and @stream directives and why it should be brought to the official GraphQL specification. +- **Dec 7-8**: [GraphQL Galaxy Conference](https://graphqlgalaxy.com) is a new remote conference focusing on all things[ GraphQL](https://twitter.com/search?q=%23GraphQL&src=hashtag_click). +- Missed Apollo Day on Nov. 10th? Check out some of the great talks on [Twitch](https://www.twitch.tv/apollographql). + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2020-12-08-defer-stream.md b/src/content/blog/2020-12-08-defer-stream.md new file mode 100644 index 0000000000..5186f6cb25 --- /dev/null +++ b/src/content/blog/2020-12-08-defer-stream.md @@ -0,0 +1,139 @@ +--- +title: "Improving Latency with @defer and @stream Directives" +tags: ["announcements"] +layout: blog +date: 2020-12-08 +byline: Rob Richard, Liliana Matos +permalink: /blog/2020-12-08-improving-latency-with-defer-and-stream-directives +--- + +> Rob Richard and Liliana Matos are front-end engineers at [1stDibs.com](https://www.1stdibs.com). They have been working with the GraphQL Working Group as champions of the the `@defer` and `@stream` directives. + +The `@defer` and `@stream` directives have been a much anticipated set of features ever since Lee Byron first talked about it at [GraphQL Europe 2016](https://youtu.be/ViXL0YQnioU?t=769). For most of 2020, we have been working with the GraphQL Working Group to standardize this feature. It is now a Stage 2 proposal, but to advance further, we are looking to the GraphQL community to try using these directives and provide feedback. We have released experimental versions of `GraphQL.js` and `express-graphql`. They are published to npm under `graphql@experimental-stream-defer` and `express-graphql@experimental-stream-defer`. We encourage everyone interested in this feature to try out these releases and let us know how it goes in the [issue created for feedback](https://github.com/graphql/graphql-js/issues/2848). Read on to find out more about what this proposal offers. + +One of the disadvantages of GraphQL’s request/response model is that the GraphQL response is not returned to clients until the entire request has finished processing. However, not all requested data may be of equal importance, and in some use cases it may be possible for applications to act on a subset of the requested data. An application can speed up its time-to-interactive if the GraphQL server can send the most important data as soon as it’s ready. The new `@defer` and `@stream` directives allow GraphQL servers to do exactly that by returning multiple payloads from a single GraphQL response. + +The `@defer` directive can be applied to fragment spreads and inline fragments. It is a declarative way for developers to mark parts of a query as non-essential for immediate return. + +Here’s an example of the `@defer` directive: + +#### Request + +```graphql +query { + person(id: "cGVvcGxlOjE=") { + name + ...HomeworldFragment @defer(label: "homeworldDefer") + } +} + +fragment HomeworldFragment on Person { + homeworld { + name + } +} +``` + +#### Response + +**Payload 1** + +```json +{ + "data": { + "person": { + "name": "Luke Skywalker" + } + }, + "hasNext": true +} +``` + +**Payload 2** + +```json +{ + "label": "homeworldDefer", + "path": ["person"], + "data": { + "homeworld": { + "name": "Tatooine" + } + }, + "hasNext": false +} +``` + +When the GraphQL execution engine encounters the `@defer` directive, it will fork execution and begin to resolve those fields asynchronously. While the deferred payload is still being prepared, the client can receive and act on the initial payload. This is most useful when the deferred data is large, expensive to load, or not on the critical path for interactivity. + +Similar to `@defer`, the `@stream` directive also allows the client to receive data before the entire result is ready. `@stream` can be used on list fields. Here’s an example of the `@stream` directive: + +#### Request + +```graphql +query { + person(id: "cGVvcGxlOjE=") { + name + films @stream(initialCount: 2, label: "filmsStream") { + title + } +} +``` + +#### Response + +**Payload 1** + +```json +{ + "data": { + "person": { + "name": "Luke Skywalker", + "films": [ + { "title": "A New Hope" }, + { "title": "The Empire Strikes Back" } + ] + } + }, + "hasNext": true +} +``` + +**Payload 2** + +```json +{ + "label": "filmsStream", + "path": ["person", "films", 2], + "data": { + "title": "Return of the Jedi" + }, + "hasNext": true +} +``` + +**Payload 3** + +```json +{ + "label": "filmsStream", + "path": ["person", "films", 3], + "data": { + "title": "Revenge of the Sith" + }, + "hasNext": false +} +``` + +When the GraphQL execution engine encounters the `@stream` directive, it will resolve as many list items specified by the `initialCount` argument. The rest will be resolved asynchronously. This is especially useful for an interface where only a few elements can be rendered above the fold. The client can render these elements as soon as possible while the server is still resolving the rest of the data. + +While the GraphQL specification doesn’t specify transport protocols, we expect the most common transport for queries with `@defer`/`@stream` to be HTTP with chunked transfer encoding. This allows a GraphQL server to keep a standard HTTP connection open, while streaming each payload to the client as soon as it’s ready. It has low overhead, has been supported by browsers for decades, and can work easily with most infrastructure. + +You can learn more about these directives at: + +- [The @defer/@stream RFC](https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.md) +- [The proposed spec edits](https://github.com/graphql/graphql-spec/pull/742) +- [The GraphQL Incremental Delivery over HTTP RFC](https://github.com/graphql/graphql-over-http/blob/master/rfcs/IncrementalDelivery.md) +- [Our talk at GraphQL Summit 2020](https://www.youtube.com/watch?v=icv_Pq06aOY) + +> – **Rob Richard**, **Liliana Matos**, Front-End Engineering, 1stDibs.com diff --git a/src/content/blog/2021-02-15-newsletter-february-2021.md b/src/content/blog/2021-02-15-newsletter-february-2021.md new file mode 100644 index 0000000000..6a2bf49611 --- /dev/null +++ b/src/content/blog/2021-02-15-newsletter-february-2021.md @@ -0,0 +1,65 @@ +--- +title: GraphQL Foundation Monthly Newsletter February 2021 +tags: ["newsletter"] +layout: blog +date: 2021-02-15 +byline: GraphQL Foundation +permalink: /blog/2021-02-15-graphql-foundation-monthly-newsletter-february-2021 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +### [Advancing no introspection at root of Subscription operation ](https://github.com/graphql/graphql-spec/pull/776) + +The group decided to disallow since it doesn’t work in the reference implementation. During the graphql-js implementation some issues were discovered around fragments that are being fixed. Read more [here](https://github.com/graphql/graphql-spec/pull/776). + +### [Default value coercion update](https://github.com/graphql/graphql-spec/pull/793) + +Currently this is a case where infinite loops can occur. The WG is working to figure out how to avoid this in the spec [here](https://github.com/graphql/graphql-spec/pull/793#issuecomment-738736539). + +### [Defer/stream updates](https://github.com/graphql/graphql-spec/blob/main/rfcs/DeferStream.md) + +The official experimental branch of graphql-js/express-graphql. The WG is working to update the initialCount, validation rule in GraphQL.js, and the spec. + +### Schema Coordinates Spec + +The RFC and spec edit have been out for a few months with credit due to everyone who has reviewed those. Last time the field arguments were the discussion there were two main contenders: `Query.business(id:)` versus `Query.business.id`. The WG is looking for consensus. The discussion summarized can be found [here](https://github.com/graphql/graphql-spec/pull/746#issuecomment-740914167). + +### \_Typename is not valid at subscription root + +`__typename` does not return an async iterator and has been deemed not useful at the root of a subscription operation, yet it is allowed by GraphQL validation. This field has caused some confusion in the community, and the WG has proposed explicitly validating it to prevent the field to catch these issues earlier. + +### Default value coercion + +There's inconsistency in the handling of default values between user-supplied defaults (i.e. variables in operation documents) and schema-supplied defaults (for arguments or input object fields). The WG discussed ways in which a poorly constructed GraphQL schema can break the type safety guarantees of GraphQL and proposed addressing this by making schema defaults operate in a more expected manner. Next steps are to get an implementation finished so that we can advance the spec changes to stage 2. + +## In Other News... + +- [Federated GraphQL @ Walmart](https://medium.com/walmartglobaltech/federated-graphql-walmart-bfc85c2553de) +- [Apollo Extends Explorer GraphQL IDE to Development Environments](https://thenewstack.io/apollo-extends-explorer-graphql-ide-to-development-environments/) +- [How Netflix Scales its API with GraphQL Federation (Part 2)](https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-2-bbe71aaec44a) +- [Hasura launched a 3 week series of articles, live-streams, and A.M.As for GraphQL beginners and experts.](https://hasura.io/blog/graphql-january-with-hasura/) +- [Prisma announced Nexus 1.0: A Major Release for Type-Safe, Code-First GraphQL APIs](https://www.prisma.io/blog/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b) +- ZDNet: [2021 Technology trend review: Cloud, Kubernetes, and GraphQL](https://zdnet.com/article/2021-technology-trend-review-part-1-blockchain-cloud-open-source/) +- TechTarget: [Enterprise application trends that will impact 2021: GraphQL vs. REST choice steers microservices development](https://searchapparchitecture.techtarget.com/feature/Enterprise-application-trends-that-will-impact) +- [Top 20 GraphQL Jobs Postings](https://www.dice.com/jobs/q-GraphQL-jobs) +- GraphQL Galaxy’s talk uploaded online, [check out the Keynote](https://youtu.be/mfg6ZJ2GGRc)! +- The [new Schema Stitching Handbook was released](https://the-guild.dev/blog/a-new-year-for-schema-stitching), together with examples and video walkthrough with everything you need to know about Federated/Distributed GraphQL Gateways +- [The Guild announced GraphQL Modules 1.0](https://the-guild.dev/blog/graphql-modules-v1) as a major rewrite after 3 years of experience. The new version includes better simplicity and performance +- With [GraphQL Mesh](https://graphql-mesh.com/) you can now wrap any existing API and add reactivity to it - check out [this blog post about how to do it](https://the-guild.dev/blog/add-reactivity-to-an-existing-source) +- [spotify-graphql is approaching v2.0](https://twitter.com/whereischarly/status/1349467930166239232?s=20) as a complete rewrite, instead of manual code it uses GraphQL Mesh under the hood to generate the API +- Software Engineering Daily: [Podcast with DGraph’s Manit Jain](https://softwareengineeringdaily.com/2021/01/19/dgraph-native-graphql-database-with-manish-jain/) + +## Upcoming Events: + +- Asia’s largest [GraphQL conference](https://graphql.asia/) is back! February 24th & 25th + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join/). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2021-03-31-newsletter-march-2021.md b/src/content/blog/2021-03-31-newsletter-march-2021.md new file mode 100644 index 0000000000..26662f7c71 --- /dev/null +++ b/src/content/blog/2021-03-31-newsletter-march-2021.md @@ -0,0 +1,59 @@ +--- +title: GraphQL Foundation Monthly Newsletter March 2021 +tags: ["newsletter"] +layout: blog +date: 2021-03-31 +byline: GraphQL Foundation +permalink: /blog/2021-03-31-graphql-foundation-monthly-newsletter-march-2021 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +**GraphQL Foundation marketing committee** + +The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the [Foundation](https://foundation.graphql.org/) and the [projects](https://github.com/graphql). They meet regularly, and welcome participation from Foundation and community members. + +The meeting agendas and minutes are open and available in [meetings/](https://github.com/graphql/marketing/blob/main/meetings). We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact operations@graphql.org. + +**Allowing fields to diverge more** + +This is one of the most complicated validation rules, which is about overlapping fields and not forcing to ensure every field is unique in a query, especially if you compose queries. They have to be merged together and ensure the field is only executed once. There's a rule to ensure this merging can be done. + +The working group has agreed to add prose or a non-normative note to this validation rule to explain this. + +**Operation Expressions** + +Operation expressions is an extension to the Schema Coordinates syntax that allows for a host of new use cases. Outlined [here](https://github.com/graphql/graphql-spec/pull/823) are some of the use cases that have been discussed so far, and have iterated on the syntax, but everything in this is very much in flux. + +**Directions via introspection report** + +Custom directives are not currently introspectable. This has been a big discussion over the years. Recently, graphql-java has implemented (almost merged) the ability to query directive by introspection. + +**Oneof Input Objects and Oneof Fields** + +Oneof Input Objects are a special variant of Input Objects where the type system asserts that exactly one of the fields must be set and non-null, all others being omitted. This is represented in introspection with the `__Type.oneField: Boolean` field, and in SDL via the `@oneOf` directive on the input object. The working group has agreed to Contribute syntax thoughts and on the RFC itself, and write an implementation in GraphQL.js + +## In Other News... + +- ZDNet: [Databases, graphs, and GraphQL: The past, present, and future](https://www.zdnet.com/article/databases-graphs-and-graphql-past-present-and-future/) +- ZDNet: [Hasura connects GraphQL to the REST of the world](https://www.zdnet.com/article/hasura-connects-graphql-to-the-rest-of-the-world/) +- ADT Mag: [Netflix Open Sources GraphQL for Spring Boot](https://adtmag.com/articles/2021/02/17/netflix-open-sources-graphql-for-spring-boot.aspx) +- ProgrammableWeb: [Facebook Adds Relay Hooks for Improved GraphQL Data Fetching](https://www.programmableweb.com/news/facebook-adds-relay-hooks-improved-graphql-data-fetching/brief/2021/03/11) +- [Dgraph Labs Launches Slash GraphQL, Industry’s First GraphQL-Native Database Backend-As-A-Service](https://www.globenewswire.com/news-release/2020/09/10/2091563/0/en/Dgraph-Labs-Launches-Slash-GraphQL-Industry-s-First-GraphQL-Native-Database-Backend-As-A-Service.html) +- [How Square accelerates product development with Apollo GraphQL](https://www.apollographql.com/blog/how-square-accelerates-product-development-with-apollo-graphql/) +- [Netflix: Beyond REST Rapid Development with GraphQL Microservices](https://netflixtechblog.com/beyond-rest-1b76f7c20ef6) +- [The Guild announce early access to GraphQL Hive - A new Schema Registry for your GraphQL Workflows](https://the-guild.dev/blog/graphql-hive-preview) + +## Upcoming Events: + +- The GraphQL community will come together once again for [GraphQL Summit](https://summit.graphql.com/) April 7th & 8th + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](https://foundation.graphql.org/join). If you have questions about membership, please send an email to membership@graphql.org. diff --git a/src/content/blog/2021-04-30-newsletter-april-2021.md b/src/content/blog/2021-04-30-newsletter-april-2021.md new file mode 100644 index 0000000000..e52a5b819c --- /dev/null +++ b/src/content/blog/2021-04-30-newsletter-april-2021.md @@ -0,0 +1,59 @@ +--- +title: GraphQL Foundation Monthly Newsletter April 2021 +tags: ["newsletter"] +layout: blog +date: 2021-04-30 +byline: GraphQL Foundation +permalink: /blog/2021-04-30-graphql-foundation-monthly-newsletter-april-2021 +--- + +# GraphQL Foundation Monthly Newsletter April 2021 + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +### GraphQL Foundation marketing committee + +The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the [Foundation](https://foundation.graphql.org/) and the [projects](https://github.com/graphql). They meet regularly, and welcome participation from Foundation and community members. + +The meeting agendas and minutes are open and available in [meetings/](https://github.com/graphql/marketing/blob/main/meetings). We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact [operations@graphql.org](mailto:operations@graphql.org). + +### Spec cut + +There are few more final phase proposals still waiting on review, as well as updating the version of the legal text). The next step will include having the TSC take a formal vote to cut the draft. + +### TypeScript migration for GraphQL.js + +Representing almost 6 million downloads per week. TypeScript is in need of additional clean up, including GraphQLList and GraphQLNonNull. The WG decided to drop Flow types, and have a PR for converting to TypeScript. The plan is to incorporate the fixes into the main release, which is very close to being done. Once finished, it will be added to release 16.0.0-alpha.1. Once that is complete it will merge the PR and convert to TypeScript. + +### Adding descriptions to queries and fragments + +The purpose of this discussion is to add necessary comments for various business use cases. As of now we have to parse SDL data and it's problematic when people add other comments. The WG is working on the best way to solve this issue. + +### Schema introspection extensions + +First implemented by GraphQL Java,then some issues were found and it was discovered there was some additional work to be done before turning it into an RFC. The Working Group is planning to address these issues shortly. + +## In Other News... + +- [Dgraph announces v21.03 - Resilient Rocket Release](https://dgraph.io/blog/post/v2103-release/) +- Read: [GraphQL API Security best practices with AWS AppSync and Amplify](https://github.com/danilop/graphql-api-security-with-aws-appsync-and-amplify) +- AWS AppSync is a fully managed service which allows developers to deploy and interact with serverless scalable GraphQL backends on AWS. +- [Neo4j announces GraphQL Library Beta Release](https://medium.com/neo4j/announcing-the-neo4j-graphql-library-beta-99ae8541bbe7) +- TechTarget: [Dgraph GraphQL database users detail graph use cases](https://searchdatamanagement.techtarget.com/news/252499595/Dgraph-GraphQL-database-users-detail-graph-use-cases) +- Devops.com: [Apollo GraphQL Makes Federated Server More Accessible](https://devops.com/apollo-graphql-makes-federated-server-more-accessible/) +- The New Stack: [Why Shopify Favors GraphQL over REST for Its APIs](https://thenewstack.io/why-shopify-favors-graphql-over-rest-for-its-apis/) +- Code Story: [E17: Matt Debergalis, Apollo GraphQL](https://codestory.co/podcast/e17-matt-debergalis-apollo-graphql/) + +## Upcoming Events: + +- [Hasura Con '21: The Big Hasura User Conference](https://hasura.io/events/hasura-con-2021/) The 2021 installment of Hasura Con will take place on June 23rd and 24th. The event brings together users from all over the world to celebrate all things Hasura and will feature top-notch speakers and workshops. Sign up today to attend Hasura Con '21 or submit a talk proposal to share your knowledge at the event. + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](https://foundation.graphql.org/join). If you have questions about membership, please send an email to membership@graphql.org. diff --git a/src/content/blog/2021-06-30-newsletter-june-2021.md b/src/content/blog/2021-06-30-newsletter-june-2021.md new file mode 100644 index 0000000000..46d328a097 --- /dev/null +++ b/src/content/blog/2021-06-30-newsletter-june-2021.md @@ -0,0 +1,78 @@ +--- +title: GraphQL Foundation Monthly Newsletter June 2021 +tags: ["newsletter"] +layout: blog +date: 2021-06-30 +byline: GraphQL Foundation +permalink: /blog/2021-06-30-graphql-foundation-monthly-newsletter-june-2021 +--- + +# GraphQL Foundation Monthly Newsletter 2021 + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +### GraphQL Foundation marketing committee + +The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the [Foundation](https://foundation.graphql.org/) and the [projects](https://github.com/graphql). They meet regularly, and welcome participation from Foundation and community members. + +The meeting agendas and minutes are open and available in [meetings/](https://github.com/graphql/marketing/blob/main/meetings). We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact [operations@graphql.org](mailto:operations@graphql.org). + +### [Release plan for next version of GraphQL specification](https://github.com/graphql/graphql-spec/milestone/2) + +The next release is in the final stages of review and is anticipated to be released soon. Details on the release are TBD. + +## Schema Coordinates update + +The WG is evaluating how to use Schema Coordinates (e.g. what can we improve by using schema coordinates, and is Looking for support in advancing from Draft to Accepted. + +## Full unicode support + +The WG is looking for support in advancing this iteration from Proposal to Draft. Most notably full unicode is already supported today, albeit without having explicit tests for it. + +The only new code that is added is the verification of the surrogate pairs. The current implementation allows for invalid surrogate pairs. + +### Fragment Arguments RFC + +For the past 5+ years, Relay has had the [@arguments directive](https://relay.dev/docs/api-reference/graphql-and-directives/#arguments), which is not spec compliant. In some sense, Relay is a _dual GraphQL client_: there's Relay syntax which is used to resolve data available locally on the client, and then that syntax compiles down into a spec compliant syntax to resolve data from an external source (aka a "server"), which hydrates a graph of "local" data the relay-specific resolvers operate over. + +This means Relay can get away with having user-written fragments that are freed from operation-defined knowledge: Relay's fragments can be provided with variable values that were never defined at the operation level, to use when resolving arguments. + +## Roundtable discussion on @defer/@stream + +Read the lengthy and informative conversation [here](https://github.com/graphql/graphql-wg/blob/main/notes/2021-06-03.md), or watch on Youtube [here](https://www.youtube.com/watch?v=d4HhIo82Whg&list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb&index=1). + +### graphql-js update on the Typescript migration + +The working group will be converting as much of graphql-js to TypeScript as possible, which will probably need some breaking changes due to default values and other changes. One of the aims is to also be readable so they might release these breaking changes along with the TypeScript migration. + +### Default Value Coercion RFC + +The WG has spent several weeks working to integrate the default value changes into GraphQL Ruby, which has resulted in several architectural discussions and some bug reports. + +### Glossary RFC + +The purpose of this RFC is to add clarity and precision, especially after the many meanings of a query. The WG is working to define the terms first, then will revisit extracting it into an appendix. + +### Query Level Nullability RFC + +Used by many including Yelp and Netflix, the proposal is to allow queries that can include a non-null designator (!) to indicate that a field should be treated non-nullable and if it returns null it should escalate following the standard GraphQL error bubbling. + +## In Other News... + +- Database, Trends & Applications: [Hasura Adds the Ability to Access Existing Data and Move it with GraphQL API](https://www.dbta.com/Editorial/News-Flashes/Hasura-Adds-the-Ability-to-Access-Existing-Data-and-Move-it-with-GraphQL-API-147680.aspx) +- InfoQ: [Rebuilding Twitter's Public API](https://www.infoq.com/presentations/twitter-public-api/) +- ZDNet: [MuleSoft adds DataGraph to Anypoint Platform to streamline API requests](https://www.zdnet.com/article/mulesoft-adds-datagraph-to-anypoint-platform-streamlining-api-requests/) + +## Upcoming Events: + +- [GraphQL Conf. 2021](https://graphqlconf.org/) - September 29th + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](https://graphql.org/foundation/join). If you have questions about membership, please send an email to membership@graphql.org. diff --git a/src/content/blog/2022-11-07-graphql-http.md b/src/content/blog/2022-11-07-graphql-http.md new file mode 100644 index 0000000000..27e96f0234 --- /dev/null +++ b/src/content/blog/2022-11-07-graphql-http.md @@ -0,0 +1,41 @@ +--- +title: GraphQL Foundation adopts graphql-http +tags: ["newsletter"] +layout: blog +date: 2022-11-07 +byline: GraphQL Foundation +permalink: /blog/2022-11-07-graphql-foundation-graphql-http +--- + +# GraphQL Foundation adopts graphql-http + +GraphQL is most commonly served over HTTP. However despite GraphQL being well +specified, this HTTP transport is not. To correct for this, the GraphQL working +group has been working on the [GraphQL over HTTP](https://graphql.github.io/graphql-over-http/draft/) +specification. + +Alongside a specification, we prefer a true implementation to have as a +reference. This ensures the ideas we specify can be implemented well, and that +as edge-cases arise in software we can ensure their solutions are reflected in +the specification as well. + +For GraphQL over HTTP, this has nominally been [express-graphql](https://github.com/graphql/express-graphql). +This package makes it easy to create a GraphQL serving endpoint from an express +server. However as the Node community has grown over the years, alternatives to +express have emerged and there is no longer one framework to align to. Also, as +our maintenance bandwidth has focused on other projects, express-graphql has +fallen behind. + +Luckily, thanks to the focused efforts of [Denis Badurina](https://github.com/enisdenjo), +we have an alternative in [graphql-http](https://github.com/graphql/graphql-http). +Denis has been part of the committee working on the GraphQL over HTTP +specification, and sought to build a dependency-free compliant GraphQL server +that works with most all existing Node and Deno HTTP frameworks. + +The decision was made to adopt the [graphql-http](https://github.com/graphql/graphql-http) +project into the GraphQL Foundation (with Denis continuing as the lead +maintainer), as well as to make it the official reference implementation of +GraphQL over HTTP. + +We will be deprecating [express-graphql](https://github.com/graphql/express-graphql) +as part of this change, and recommending those using it migrate to graphql-http. diff --git a/src/content/blog/2023-01-14-graphql-scalars.md b/src/content/blog/2023-01-14-graphql-scalars.md new file mode 100644 index 0000000000..49278abfab --- /dev/null +++ b/src/content/blog/2023-01-14-graphql-scalars.md @@ -0,0 +1,41 @@ +--- +title: GraphQL Custom Scalar specifications +tags: ["announcements"] +layout: blog +date: 2023-01-14 +byline: Andreas Marek, Donna Zhou +permalink: /blog/2023-01-14-graphql-scalars +--- + +# Announcing contributed GraphQL custom scalar specifications + +We are very happy to announce the official home for contributed GraphQL [custom scalar](https://spec.graphql.org/draft/#sec-Scalars.Custom-Scalars) specifications at [scalars.graphql.org](https://scalars.graphql.org/). + +You are welcome to contribute custom scalar specifications (abbreviated as "specs"). Once your spec is merged in, it will be hosted at `scalars.graphql.org//`. See how to contribute on the [contribution guide](https://scalars.graphql.org/readme-contribution-guide). + +Our first contributed spec is for [DateTime](https://scalars.graphql.org/andimarek/date-time). You can point users to the spec's URL with the built-in `@specifiedBy` [directive](https://spec.graphql.org/draft/#sec--specifiedBy) in your GraphQL schema. + +```graphql +scalar DateTime + @specifiedBy(url: "https://scalars.graphql.org/andimarek/date-time") +``` + +## Elevating the GraphQL type system with custom scalars + +Custom scalars have been part of the GraphQL spec since day one. They have the unique ability to extend the GraphQL type system with custom types. While custom scalars are powerful, they were more like a black box for the consumers of the API. + +Originally, it was very hard for consumers to understand custom scalars as a GraphQL schema did not provide any information apart from its name. For example, it was difficult to understand the exact format of a `DateTime` custom scalar. It was also difficult to know whether the `DateTime` custom scalar in API A was exactly the same as the `DateTime` in API B. + +We added the built-in `@specifiedBy` directive some time ago, which assigns a URL for the spec of a custom scalar. This provides a standard way to document custom scalars. The `@specifiedBy` directive is also introspectable. + +However, we have since learned that this was not enough. The burden of writing a custom scalar specs and hosting them was left for each API itself to solve. + +With the custom scalar spec project, we provide templates for writing custom scalar specs and also host the specs at a GraphQL Foundation owned domain [scalars.graphql.org](https://scalars.graphql.org/). This greatly reduces the effort to clearly document and share your custom scalar specs. + +Our hope is that this enables an ecosystem of clearly documented custom scalars and eliminates the need to reinvent popular ones again and again. Ultimately, a popular enough custom scalar will be practically indistinguishable from the built-in ones and elevate the GraphQL type system. + +## Get involved! + +See how to contribute a custom scalar spec on the [contribution guide](https://scalars.graphql.org/readme-contribution-guide). + +If you have any comments or questions, please open an issue on the [graphql-scalars GitHub repository](https://github.com/graphql/graphql-scalars). diff --git a/src/content/blog/2023-02-03-community-gardening.md b/src/content/blog/2023-02-03-community-gardening.md new file mode 100644 index 0000000000..72080f7328 --- /dev/null +++ b/src/content/blog/2023-02-03-community-gardening.md @@ -0,0 +1,139 @@ +--- +title: Community Gardening, May - July 2022 +tags: ["grants"] +layout: blog +date: 2023-02-03 +byline: Benjie Gillam +permalink: /blog/2023-02-03-community-gardening +--- + +> The GraphQL Foundation offers [Community +> Grants](https://graphql.org/foundation/community-grant/) to help incentivize +> key technical and community initiatives. As part of the grant, applicants +> commit to write a blog post report describing their work and its impact on +> the GraphQL community. The following report was written by successful grant +> applicant [Benjie Gillam](https://github.com/sponsors/benjie) in August 2022, +> detailing the community gardening he performed during May, June and July of +> that year. + +## Backstory + +In 2019 I started turning up to GraphQL Working Group meetings regularly and +helping take [the +notes](https://github.com/graphql/graphql-wg/tree/main/notes). Back then we had +a system for filing and reviewing action items, but very few people used it, so +items would easily get lost. Further, the notes and videos would be uploaded in +batches every few months, which prevented attendees referring to them in the +interim. + +Over the next couple years I set about trying to improve these processes. I +started by filing the [action +items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+sort%3Aupdated-desc+label%3A%22Action+item+%3Aclapper%3A%22) +myself. After a while, I started categorizing them into [GitHub +projects](https://github.com/graphql/graphql-wg/projects?type=classic&query=is%3Aopen+sort%3Aupdated-desc), +one for each meeting, which made keeping track of them (particularly the old +ones) much easier and helped us to see progress. Later I introduced a new +["ready for review" +label](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+sort%3Aupdated-desc+label%3A%22Ready+for+review+%F0%9F%99%8C%22+) +that enabled us to quickly focus on the action items that needed discussion +rather than trying to go over every item (or skip the lot entirely) each +meeting. These processes were very much appreciated by the working group, but +were quite time consuming for one person. As time went on my I found myself +contributing to GraphQL in more and more ways, and as the time I could dedicate +to these tasks dwindled, my ability to keep these processes running smoothly +diminished. + +## Funding approved + +In May 2022, the GraphQL Foundation kindly approved my application for a [GraphQL +Community Grant](https://graphql.org/foundation/community-grant/) to enable me +to dedicate more time to these tasks. I'm a community-funded open source +developer, so I rely on [sponsorship](https://github.com/sponsors/benjie) to +fund my open source endeavors - both on my own open source projects ([the +Graphile suite](https://github.com/graphile)) and also my contributions to the +[GraphQL](https://github.com/graphql/graphql-spec/graphs/contributors) +[Working](https://github.com/graphql/graphql-wg/graphs/contributors) +[Groups](https://github.com/graphql/graphql-over-http/graphs/contributors). +Since being approved for the grant, I've been better able to execute the role +of community gardener; let me tell you about some of the ways in which the +Foundation's grant has enabled me to better support you, the GraphQL community! + +The [main GraphQL working group](https://github.com/graphql/graphql-wg) meets +each month; and it is recorded on Zoom and made available via [the Foundation's +YouTube +channel](https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA/playlists). +Soon after each meeting I've been uploading the videos not just for the main +meeting but also for the various other subcommittees ([GraphiQL +WG](https://github.com/graphql/graphiql/tree/main/working-group), [GraphQL.js +WG](https://github.com/graphql/graphql-js-wg), [GraphQL-over-HTTP +WG](https://github.com/graphql/graphql-over-http/tree/main/working-group), +Metadata WG, [Composite Schemas +WG](https://github.com/graphql/composite-schemas-wg)) that may have met during +the previous month. Whilst uploading the video of the main meeting, I file its +notes and the action items, while also categorizing them making sure they're +assigned to the relevant person. Recently, I've also started adding timestamped +links to the YouTube video for each action item, so we can hear the original +instructions rather than just the paraphrased summaries from the notes - I +think this makes them even more useful! + +## Empowering other contributors + +As part of my aim to document our processes and streamline things, I've created +[a template repository](https://github.com/graphql/wg-template) that can be +used whenever a new GraphQL subcommittee is created. This enables all +subcommittees to adopt the GraphQL meeting practices with minimal effort from +the committee chair - just [a small list of +edits](https://github.com/graphql/wg-template#working-group-template) that take +about 5 minutes when setting up the repository and of course the regular +scheduling. + +I've also been working with the Linux Foundation to get subcommittee meetings +scheduled onto [the GraphQL +calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), +and to expand [EasyCLA](https://docs.linuxfoundation.org/v2/easycla) to the new +repositories to ensure that everyone contributing has signed the [GraphQL +Membership +Agreement](https://github.com/graphql/graphql-wg/tree/main/membership). This +should make releasing future versions of the spec and any subcommittee +deliverables much easier since the intellectual property paperwork is in place +from the start. + +Thanks to the new funding I've also been able to be more active on GitHub +issues, PRs, discussions and in [the GraphQL Discord +server](https://discord.graphql.org/), enabling me to offer assistance to +people interested in contributing, and to help moderate these environments. +This includes [explaining how to become a +champion](https://github.com/graphql/graphql-spec/issues/174#issuecomment-1129621529), +performing timely moderation actions when the Discord server suffers from spam, +and giving guidance on how to improve PRs. + +## Extra-curricular activities + +Whilst not technically under the umbrella of the grant, having the time spent +on the above tasks funded by the GraphQL Grant has freed me up to dedicate more +time to other key issues in GraphQL - for example I [recently revived the +GraphQL-over-HTTP +project](https://github.com/graphql/graphql-over-http/pull/175) and we're well +on the way towards v1 of that specification. I've also helped kick-start [the +GraphQL Composite Schemas working +group](https://github.com/graphql/composite-schemas-wg) for the community to +collaborate on shared solutions to common problems felt across all the +different ways of building a GraphQL schema by combining other GraphQL schemas +together. I've also finally been able [to follow through on my intent to push +the "GraphQL Metadata" topic +forward](https://github.com/graphql/graphql-spec/issues/300#issuecomment-1119676731) +including researching, digesting, and [sharing my analysis of the existing +solutions and their problems at the GraphQL +Conference](https://youtu.be/c1oa7p73rTw), and [suggesting a solution of my +own](https://github.com/graphql/graphql-wg/blob/main/rfcs/AnnotationStructs.md). +Another thing that this reduced pressure on my time has enabled is the [new +SpecNews podcast](https://specnewspod.com/) in which my co-host Jem and I +summarize the latest GraphQL Specification Working Group session in just 5-10 +minutes. + +## Get involved! + +If you're interested in contributing to GraphQL and need help getting started, +feel free to reach out to me, @benjie, on +[Discord](https://discord.graphql.org) or via a GitHub issue or PR and I'll do +my best to help! diff --git a/src/content/blog/2023-06-20-the-guild-qna-recap.md b/src/content/blog/2023-06-20-the-guild-qna-recap.md new file mode 100644 index 0000000000..4c6a5b2551 --- /dev/null +++ b/src/content/blog/2023-06-20-the-guild-qna-recap.md @@ -0,0 +1,46 @@ +--- +title: Insights from The Guild's Q&A Session +tags: ["blog"] +layout: blog +date: 2023-06-20 +byline: Jory Burson +permalink: /blog/2023-06-20-the-guild-qna-recap +--- + +In the fast-paced world of software development, staying updated with the latest technologies and best practices is crucial. GraphQL, a query language for APIs, has gained immense popularity for its flexibility and efficiency in fetching data. To delve deeper into the realm of GraphQL and its impact, a recent Q&A session with members of [The Guild](https://the-guild.dev/), an organization of open source contributors, provided valuable insights and recommendations. Let's explore the highlights of this session and gain a better understanding of the power of GraphQL. + +**Philosophies and structure for open source organizations:** + +During the Q&A session, The Guild members emphasized that their organization was created for the main purpose of long term open source maintenance. This decision led the organization to structure the group's work in a different way, such as having all of their projects under individual contributors names and not under the Guild’s [GitHub org](https://github.com/the-guild-org/), like [Yoga](https://github.com/dotansimha/graphql-yoga), [Mesh](https://github.com/Urigo/graphql-mesh) and [others](https://the-guild.dev/#platform). + +They also focused on hiring people who were already community contributors before joining The Guild, in order to ensure that they support existing open source contributors and reduce bias in the selection process (by focusing on the individual's work, rather than their location or identity). That led into a diverse team from all across the globe, and they have written more about that model [in their about page](https://the-guild.dev/about-us). + +During the Q&A, The Guild emphasized their support for local Meetup groups and their history of helping to start new ones. This commitment to community involvement reflects their dedication to fostering knowledge sharing and collaboration, which is essential for sustainable open source projects. + +**Authorization and Shielding with Envelop:** + +The Guild team recommended using [Envelop](https://the-guild.dev/blog/introducing-envelop), a plugin system that manipulates the execution flow, for [authorization and shielding in GraphQL APIs](https://the-guild.dev/blog/graphql-authentication-with-envelop-and-auth0). This approach provides a powerful alternative to directly wrapping resolvers, ensuring robust security measures are in place. By leveraging Envelop, developers can enhance the authorization control in their GraphQL APIs. + +**Granular Authorization Control with Postgres's Row-Level Security:** + +In addition to Envelop, the discussion highlighted the use of Postgres's Row-Level Security as a means of achieving more granular authorization control. This feature allows developers to define security policies at the database level, ensuring that only authorized users can access specific rows of data. By incorporating Postgres's Row-Level Security, developers can further fortify their GraphQL APIs against unauthorized access. + +**The Advantages of "Non-Spec" GraphQL and Envelop/Yoga plugins:** + +The discussion also touched upon the benefits of using "non-spec" GraphQL features. With Envelop, you can safely use [advanced GraphQL features](https://the-guild.dev/graphql/envelop/v3/guides/using-graphql-features-from-the-future) before they are included in the official spec, which releases less frequently. + +These tools offer additional functionalities and optimizations, enabling developers to maximize the potential of GraphQL in their projects. The Guild team emphasized the value of exploring these options to enhance performance and streamline development processes while also giving valuable feedback from real production usage to the [GraphQL Working Group](https://graphql.org/community/developers/#the-graphql-working-group) about these features. + +**Caching GraphQL Operations:** + +Participants in the session raised intriguing points about caching GraphQL operations. The Guild team acknowledged the potential advantages of adding caching to GraphQL requests, optimizing response times and reducing unnecessary network traffic. The point was raised that one can achieve more granular caching with GraphQL than with REST, and a primary reason people think caching is harder in GraphQL is the lack of knowledge about tools like [Stellate](https://stellate.co/) and [Yoga’s response caching support](https://the-guild.dev/graphql/yoga-server/docs/features/response-caching). + +**GraphQL Workflows at scale:** + +In discussing larger-scale usage of GraphQL, The Guild participants referenced some of their work helping large teams manage GraphQL APIs using workflows and tools using tools sluch as [GraphQL Hive](https://the-guild.dev/graphql/hive), an open source schema registry. Some of the [new features recently released to Hive](https://the-guild.dev/blog/tag/graphql-hive), such as the [schema policy feature](https://the-guild.dev/blog/hive-introducing-schema-policy), enable organizations to enforce best practices and schema rules across many different teams automatically. + +**Community Stewardship and Future Collaborations:** + +The Guild team acknowledged the importance of community contributions and discussed their efforts to improve and simplify the [GraphQL community website](https://graphql.org/), and emphasized the importance of fostering a vibrant and inclusive GraphQL community. The Q&A session with The Guild offered a wealth of knowledge and insights into the world of GraphQL. Furthermore, the session highlighted areas for improvement and opportunities for community members to contribute. For more information check out [The Guild’s projects](https://the-guild.dev/#platform) and [blog](https://the-guild.dev/blog) and our [GraphQL official community page](https://graphql.org/community/). + +As the GraphQL ecosystem continues to evolve, sessions like these provide valuable guidance and foster a sense of community among developers, paving the way for innovation and growth in our exciting ecosystem. Please [join us on June 28](https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=N25ycGVoaXViOHZxdXFzN3Y5dWNiaGY2OGsgbGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBn&tmsrc=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com) for our next [Discord Q&A](http://discord.graphql.org/) session featuring engineering leaders from Hasura. diff --git a/src/content/code/code.md b/src/content/code/code.md deleted file mode 100644 index f1b0fa91ff..0000000000 --- a/src/content/code/code.md +++ /dev/null @@ -1,794 +0,0 @@ ---- -title: Code -layout: code -permalink: /code/ ---- - -Many different programming languages support GraphQL. This list contains some of the more popular server-side frameworks, client libraries, services, and other useful stuff. - -## Server Libraries - -In addition to the GraphQL [reference implementations in JavaScript](#javascript), server libraries include: - -- [C# / .NET](#c-net) -- [Clojure](#clojure) -- [D](#d) -- [Elixir](#elixir) -- [Erlang](#erlang) -- [Go](#go) -- [Groovy](#groovy) -- [Haskell](#haskell) -- [Java](#java) -- [JavaScript](#javascript) -- [Julia](#julia) -- [Kotlin](#kotlin) -- [Perl](#perl) -- [PHP](#php) -- [Python](#python) -- [R](#r) -- [Ruby](#ruby) -- [Rust](#rust) -- [Scala](#scala) -- [Swift](#swift) -- [OCaml / Reason](#ocaml-reason) - -### C# / .NET - -#### [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet): GraphQL for .NET - -```csharp -using System; -using GraphQL; -using GraphQL.Types; - -public class Program -{ - public static void Main(string[] args) - { - var schema = Schema.For(@" - type Query { - hello: String - } - "); - - var json = schema.Execute(_ => - { - _.Query = "{ hello }"; - _.Root = new { Hello = "Hello World!" }; - }); - - Console.WriteLine(json); - } -} -``` - - - [graphql-net](https://github.com/ckimes89/graphql-net): Convert GraphQL to IQueryable - - [Entity GraphQL](https://github.com/lukemurray/EntityGraphQL): .NET Core GraphQL library. Compiles to IQueryable to easily expose a schema from an existing data model (E.g. from an Entity Framework data model) - - [DotNetGraphQLQueryGen](https://github.com/lukemurray/DotNetGraphQLQueryGen): .NET Core library to generate classes from a GraphQL schema for type-safe querying in dotnet - - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate): GraphQL Server for .NET core and .NET classic - - [NGraphQL](https://github.com/rivantsov/starwars): GraphQL Server for .NET Core and full framework - -### Clojure - -#### [alumbra](https://github.com/alumbra/alumbra) - -A set of reusable GraphQL components for Clojure conforming to the data structures given in [alumbra.spec](https://github.com/alumbra/alumbra.spec). - -```clojure -(require '[alumbra.core :as alumbra] - '[claro.data :as data]) - -(def schema - "type Person { name: String!, friends: [Person!]! } - type QueryRoot { person(id: ID!): Person, me: Person! } - schema { query: QueryRoot }") - -(defrecord Person [id] - data/Resolvable - (resolve! [_ _] - {:name (str "Person #" id) - :friends (map ->Person (range (inc id) (+ id 3)))})) - -(def QueryRoot - {:person (map->Person {}) - :me (map->Person {:id 0})}) - -(def app - (alumbra/handler - {:schema schema - :query QueryRoot})) - -(defonce my-graphql-server - (aleph.http/start-server #'app {:port 3000})) -``` - -```bash -$ curl -XPOST "http://0:3000" -H'Content-Type: application/json' -d'{ - "query": "{ me { name, friends { name } } }" -}' -{"data":{"me":{"name":"Person #0","friends":[{"name":"Person #1"},{"name":"Person #2"}]}}} -``` - -#### [graphql-clj](https://github.com/tendant/graphql-clj) - -A Clojure library that provides a GraphQL implementation. - -Code that executes a hello world GraphQL query with `graphql-clj`: - -```clojure - -(def schema "type QueryRoot { - hello: String - }") - -(defn resolver-fn [type-name field-name] - (get-in {"QueryRoot" {"hello" (fn [context parent & rest] - "Hello world!")}} - [type-name field-name])) - -(require '[graphql-clj.executor :as executor]) - -(executor/execute nil schema resolver-fn "{ hello }") -``` - -#### [lacinia](https://github.com/walmartlabs/lacinia) - -A full implementation of the GraphQL specification that aims to maintain external compliance with the specification. - -### D - - - [graphqld](https://github.com/burner/graphqld): A GraphQL implementaiton for the D Programming Language. - -### Elixir - - - [absinthe](https://github.com/absinthe-graphql/absinthe): GraphQL implementation for Elixir. - - [graphql-elixir](https://github.com/graphql-elixir/graphql): An Elixir implementation of Facebook's GraphQL. - -### Erlang - - - [graphql-erlang](https://github.com/shopgun/graphql-erlang): GraphQL implementation in Erlang. - -### Go - - - [graphql-go](https://github.com/graphql-go/graphql): An implementation of GraphQL for Go / Golang. - - [graph-gophers/graphql-go](https://github.com/graph-gophers/graphql-go): An active implementation of GraphQL in Golang (was https://github.com/neelance/graphql-go). - - [99designs/gqlgen](https://github.com/99designs/gqlgen) - Go generate based graphql server library. - - [graphql-relay-go](https://github.com/graphql-go/relay): A Go/Golang library to help construct a graphql-go server supporting react-relay. - - [samsarahq/thunder](https://github.com/samsarahq/thunder): A GraphQL implementation with easy schema building, live queries, and batching. - - [appointy/jaal](https://github.com/appointy/jaal): Develop spec compliant GraphQL servers in Go. - -### Groovy - -#### [gorm-graphql](https://github.com/grails/gorm-graphql/) - -**Core Library** - The GORM GraphQL library provides functionality to generate a GraphQL schema based on your GORM entities. In addition to mapping domain classes to a GraphQL schema, the core library also provides default implementations of "data fetchers" to query, update, and delete data through executions of the schema. - -**Grails Plugin** - In a addition to the Core Library, the GORM GraphQL Grails Plugin: - -- Provides a controller to receive and respond to GraphQL requests through HTTP, based on their guidelines. -- Generates the schema at startup with spring bean configuration to make it easy to extend. -- Includes a [GraphiQL](https://github.com/graphql/graphiql) browser enabled by default in development. The browser is accessible at /graphql/browser. -- Overrides the default data binder to use the data binding provided by Grails -- Provides a [trait](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) to make integration testing of your GraphQL endpoints easier - -See [the documentation](https://grails.github.io/gorm-graphql/latest/guide/index.html) for more information. - -#### [GQL](https://grooviter.github.io/gql/) - -GQL is a Groovy library for GraphQL - -### Haskell - -#### [Morpheus GraphQL](https://github.com/morpheusgraphql/morpheus-graphql) - -A Haskell library for building GraphQL APIs. - -Hello world example with `morpheus-graphql`: - -```graphql -# schema.gql -""" -A supernatural being considered divine and sacred -""" -type Deity { - name: String! - power: String @deprecated(reason: "no more supported") -} - -type Query { - deity(name: String! = "Morpheus"): Deity! -} -``` - - -```haskell -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeFamilies #-} - -module API (api) where - -import Data.ByteString.Lazy.Char8 (ByteString) -import Data.Morpheus (interpreter) -import Data.Morpheus.Document (importGQLDocument) -import Data.Morpheus.Types (RootResolver (..), Undefined (..)) -import Data.Text (Text) - -importGQLDocument "schema.gql" - -rootResolver :: RootResolver IO () Query Undefined Undefined -rootResolver = - RootResolver - { queryResolver = Query {deity}, - mutationResolver = Undefined, - subscriptionResolver = Undefined - } - where - deity DeityArgs {name} = - pure - Deity - { name = pure name, - power = pure (Just "Shapeshifting") - } - -api :: ByteString -> IO ByteString -api = interpreter rootResolver -``` - -See [morpheus-graphql-examples](https://github.com/morpheusgraphql/morpheus-graphql) for more sophisticated APIs. - - -### Java - -#### [graphql-java](https://github.com/graphql-java/graphql-java) - -A Java library for building GraphQL APIs. - -Code that executes a hello world GraphQL query with `graphql-java`: - -```java -import graphql.ExecutionResult; -import graphql.GraphQL; -import graphql.schema.GraphQLSchema; -import graphql.schema.StaticDataFetcher; -import graphql.schema.idl.RuntimeWiring; -import graphql.schema.idl.SchemaGenerator; -import graphql.schema.idl.SchemaParser; -import graphql.schema.idl.TypeDefinitionRegistry; - -import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; - -public class HelloWorld { - - public static void main(String[] args) { - String schema = "type Query{hello: String} schema{query: Query}"; - - SchemaParser schemaParser = new SchemaParser(); - TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema); - - RuntimeWiring runtimeWiring = new RuntimeWiring() - .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world"))) - .build(); - - SchemaGenerator schemaGenerator = new SchemaGenerator(); - GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); - - GraphQL build = GraphQL.newGraphQL(graphQLSchema).build(); - ExecutionResult executionResult = build.execute("{hello}"); - - System.out.println(executionResult.getData().toString()); - // Prints: {hello=world} - } -} -``` - -See [the graphql-java docs](https://github.com/graphql-java/graphql-java) for more information on setup. - -### JavaScript - -#### [GraphQL.js](/graphql-js/) ([github](https://github.com/graphql/graphql-js/)) ([npm](https://www.npmjs.com/package/graphql)) - -The reference implementation of the GraphQL specification, designed for running GraphQL in a Node.js environment. - -To run a `GraphQL.js` hello world script from the command line: - -```bash -npm install graphql -``` - -Then run `node hello.js` with this code in `hello.js`: - -```js -var { graphql, buildSchema } = require('graphql'); - -var schema = buildSchema(` - type Query { - hello: String - } -`); - -var root = { hello: () => 'Hello world!' }; - -graphql(schema, '{ hello }', root).then((response) => { - console.log(response); -}); -``` - -#### [express-graphql](/graphql-js/running-an-express-graphql-server/) ([github](https://github.com/graphql/express-graphql)) ([npm](https://www.npmjs.com/package/express-graphql)) - -The reference implementation of a GraphQL API server over an Express webserver. You can use this to run GraphQL in conjunction with a regular Express webserver, or as a standalone GraphQL server. - -To run an `express-graphql` hello world server: - -```bash -npm install express express-graphql graphql -``` - -Then run `node server.js` with this code in `server.js`: - -```js -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); - -var schema = buildSchema(` - type Query { - hello: String - } -`); - -var root = { hello: () => 'Hello world!' }; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); -``` - -#### [apollo-server](https://www.apollographql.com/docs/apollo-server/) ([github](https://github.com/apollographql/apollo-server)) ([npm](https://www.npmjs.com/package/apollo-server-express)) - -A set of GraphQL server packages from Apollo that work with various Node.js HTTP frameworks (Express, Connect, Hapi, Koa etc). - -To run a hello world server with apollo-server-express: - -```bash -npm install apollo-server-express express -``` - -Then run `node server.js` with this code in `server.js`: - -```js -const express = require('express'); -const { ApolloServer, gql } = require('apollo-server-express'); - -const typeDefs = gql` - type Query { - hello: String - } -`; - -const resolvers = { - Query: { - hello: () => 'Hello world!', - }, -}; - -const server = new ApolloServer({ typeDefs, resolvers }); - -const app = express(); -server.applyMiddleware({ app }); - -app.listen({ port: 4000 }, () => - console.log('Now browse to http://localhost:4000' + server.graphqlPath) -); -``` - -Apollo Server also supports all Node.js HTTP server frameworks: Express, Connect, HAPI, Koa and NestJs. - -### Kotlin - - - [graphql-kotlin](https://github.com/ExpediaGroup/graphql-kotlin/): A set of libraries for running GraphQL server in Kotlin. - -### Perl - - - [graphql-perl](https://github.com/graphql-perl/graphql-perl): A Perl port of GraphQL reference implementation - - [MetaCPAN documentation](https://metacpan.org/pod/GraphQL) - - [Mojolicious-Plugin-GraphQL](https://github.com/graphql-perl/Mojolicious-Plugin-GraphQL) - connect your GraphQL service to a Mojolicious app - - [GraphQL-Plugin-Convert-DBIC](https://github.com/graphql-perl/GraphQL-Plugin-Convert-DBIC) - automatically connect your DBIx::Class schema to GraphQL - - [GraphQL-Plugin-Convert-OpenAPI](https://github.com/graphql-perl/GraphQL-Plugin-Convert-OpenAPI) - automatically connect any OpenAPI service (either local Mojolicious one, or remote) to GraphQL - -### PHP - - - [graphql-php](https://github.com/webonyx/graphql-php): A PHP port of GraphQL reference implementation - - [graphql-relay-php](https://github.com/ivome/graphql-relay-php): A library to help construct a graphql-php server supporting react-relay. - - [Railt](https://github.com/railt/railt): A PHP GraphQL Framework. - - [Lighthouse](https://github.com/nuwave/lighthouse): A GraphQL server for Laravel - - [GraphQLBundle](https://github.com/overblog/GraphQLBundle): A GraphQL server for Symfony - - [WPGraphQL](https://github.com/wp-graphql/wp-graphql): A free, open-source WordPress plugin that provides an extendable GraphQL schema and API for any WordPress site - - [GraphQL API for WordPress](https://github.com/GraphQLAPI/graphql-api-for-wp): A GraphQL server for WordPress - - [GraPHPinator](https://github.com/infinityloop-dev/graphpinator): A GraphQL implementation for modern PHP - -#### [API Platform](https://api-platform.com) ([github](https://github.com/api-platform/api-platform)) - -API Platform is a fully-featured, flexible and extensible API framework built on top of Symfony. -The following class is enough to create both a Relay-compatible GraphQL server and a hypermedia API supporting modern REST formats (JSON-LD, JSONAPI...): - -```php -name; - } - // ... -} -``` - -Other GraphQLite features include validation, security, error handling, loading via data-loader pattern... - -#### [Siler](https://siler.leocavalcante.com/graphql/) ([github](https://github.com/leocavalcante/siler)) - -Siler is a PHP library powered with high-level abstractions to work with GraphQL. - -To run a Siler hello world script: - -```graphql -type Query { - hello: String -} -``` - -```php - [ - 'hello' => 'world', - ], -]; -$schema = Graphql\schema($typeDefs, $resolvers); - -echo "Server running at http://127.0.0.1:8080"; - -Http\server(Graphql\psr7($schema), function (\Throwable $err) { - var_dump($err); - return Diactoros\json([ - 'error' => true, - 'message' => $err->getMessage(), - ]); -})()->run(); -``` - -It also provides functionality for the construction of a WebSocket Subscriptions Server based on how Apollo works. - -### Swift - - - [Graphiti](https://github.com/GraphQLSwift/Graphiti): Swift library for building GraphQL schemas/types fast, safely and easily. - -### Python - -#### [Graphene](http://graphene-python.org/) ([github](https://github.com/graphql-python/graphene)) - -A Python library for building GraphQL APIs. - -To run a Graphene hello world script: - -```bash -pip install graphene -``` - -Then run `python hello.py` with this code in `hello.py`: - -```python -import graphene - -class Query(graphene.ObjectType): - hello = graphene.String(name=graphene.String(default_value="World")) - - def resolve_hello(self, info, name): - return 'Hello ' + name - -schema = graphene.Schema(query=Query) -result = schema.execute('{ hello }') -print(result.data['hello']) # "Hello World" -``` - -There are also nice bindings for [Relay](https://facebook.github.io/relay/), Django, SQLAlchemy, and Google App Engine. - -### Ruby - -#### [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) - -A Ruby library for building GraphQL APIs. - -To run a hello world script with `graphql-ruby`: - -```bash -gem install graphql -``` - -Then run `ruby hello.rb` with this code in `hello.rb`: - -```ruby -require 'graphql' - -class QueryType < GraphQL::Schema::Object - graphql_name 'Query' - field :hello do - type types.String - resolve -> (obj, args, ctx) { 'Hello world!' } - end -end - -class Schema < GraphQL::Schema - query QueryType -end - -puts Schema.execute('{ hello }').to_json -``` - -There are also nice bindings for Relay and Rails. - -#### [Agoo](https://github.com/ohler55/agoo) - -A high performance web server with support for GraphQL. Agoo strives for a simple, easy to use API for GraphQL. - -```ruby -require 'agoo' - -class Query - def hello - 'hello' - end -end - -class Schema - attr_reader :query - - def initialize - @query = Query.new() - end -end - -Agoo::Server.init(6464, 'root', thread_count: 1, graphql: '/graphql') -Agoo::Server.start() -Agoo::GraphQL.schema(Schema.new) { - Agoo::GraphQL.load(%^type Query { hello: String }^) -} -sleep - -# To run this GraphQL example type the following then go to a browser and enter -# a URL of localhost:6464/graphql?query={hello} -# -# ruby hello.rb -``` - -### Rust - - - [graphql-rust/juniper](https://github.com/graphql-rust/juniper): GraphQL server library for Rust - -### Scala - -#### [Sangria](http://sangria-graphql.org/) ([github](https://github.com/sangria-graphql/sangria)): A Scala GraphQL library that supports [Relay](https://facebook.github.io/relay/). - -An example of a hello world GraphQL schema and query with `sangria`: - -```scala -import sangria.schema._ -import sangria.execution._ -import sangria.macros._ - -val QueryType = ObjectType("Query", fields[Unit, Unit]( - Field("hello", StringType, resolve = _ ⇒ "Hello world!") -)) - -val schema = Schema(QueryType) - -val query = graphql"{ hello }" - -Executor.execute(schema, query) map println -``` - -### OCaml / Reason - -#### [ocaml-graphql-server](https://github.com/andreas/ocaml-graphql-server): GraphQL server library for OCaml and Reason - -## GraphQL Clients - -- [C# / .NET](#c-net-1) -- [Clojurescript](#clojurescript-1) -- [Elixir](#elixir-1) -- [Elm](#elm) -- [Flutter](#flutter) -- [Go](#go-1) -- [Haskell](#haskell) -- [Java / Android](#java-android) -- [JavaScript](#javascript-1) -- [Julia](#julia) -- [Kotlin](#kotlin) -- [Swift / Objective-C iOS](#swift-objective-c-ios) -- [Python](#python-1) -- [R](#r) - -### C# / .NET - - - [GraphQL.Client](https://github.com/graphql-dotnet/graphql-client): A GraphQL Client for .NET. - - [graphql-net-client](https://github.com/bkniffler/graphql-net-client): Basic example GraphQL client for .NET. - - [SAHB.GraphQLClient](https://github.com/sahb1239/SAHB.GraphQLClient): GraphQL client which supports generating queries from C# classes - -### Clojurescript - - - [re-graph](https://github.com/oliyh/re-graph/): A GraphQL client implemented in Clojurescript with support for websockets. - -### Elixir - - - [Neuron](https://github.com/uesteibar/neuron): A GraphQL client for Elixir - - [common_graphql_client](https://github.com/annkissam/common_graphql_client): Elixir GraphQL Client with HTTP and WebSocket support - -### Elm - - - [dillonkearns/elm-graphql](https://github.com/dillonkearns/elm-graphql): Library and command-line code generator to create type-safe Elm code for a GraphQL endpoint. - -### Flutter - - - [graphql](https://github.com/zino-app/graphql-flutter#readme): A GraphQL client implementation in Flutter. - -### Go - - - [graphql](https://github.com/shurcooL/graphql#readme): A GraphQL client implementation in Go. - - [machinebox/graphql](https://github.com/machinebox/graphql): An elegant low-level HTTP client for GraphQL. - -### Haskell - - - [morpheus-graphql-client](https://github.com/morpheusgraphql/morpheus-graphql): A strongly-typed GraphQL client implementation in Haksell. - -### Java / Android - - - [Apollo Android](https://github.com/apollographql/apollo-android): A strongly-typed, caching GraphQL client for the JVM, Android and Kotlin native. - - - [Nodes](https://github.com/americanexpress/nodes): A GraphQL JVM Client designed for constructing queries from standard model definitions. By American Express. - -### JavaScript - - - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)): Facebook's framework for building React applications that talk to a GraphQL backend. - - [Apollo Client](http://apollographql.com/client/) ([github](https://github.com/apollographql/apollo-client)): A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript. - - [graphql-request](https://github.com/prisma/graphql-request): A simple and flexible JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native) - basically a lightweight wrapper around `fetch`. - - [Lokka](https://github.com/kadirahq/lokka): A simple JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native). - - [nanogql](https://github.com/yoshuawuyts/nanogql): Tiny GraphQL client library using template strings. - - [gq-loader](https://github.com/Houfeng/gq-loader): A simple JavaScript GraphQL client,Let the *.gql file be used as a module through webpack loader. - - [AWS Amplify](https://aws.github.io/aws-amplify): A JavaScript library for application development using cloud services, which supports GraphQL backend and React components for working with GraphQL data. - - [Grafoo](https://github.com/grafoojs/grafoo): An all purpose GraphQL client with view layer integrations for multiple frameworks in just 1.6kb. - - [urql](https://formidable.com/open-source/urql/) ([github](https://github.com/FormidableLabs/urql)): A highly customizable and versatile GraphQL client for React. - - [graphqurl](https://github.com/hasura/graphqurl) ([npm](https://www.npmjs.com/package/graphqurl)): curl for GraphQL with autocomplete, subscriptions and GraphiQL. Also a dead-simple universal javascript GraphQL client. - -### Julia - - - [Diana.jl](https://github.com/codeneomatrix/Diana.jl): A Julia GraphQL server implementation. - -### Kotlin - - - [graphql-kotlin](https://github.com/ExpediaGroup/graphql-kotlin/): A set of GraphQL libraries that includes a lightweight, typesafe GraphQL HTTP client. - -### Swift / Objective-C iOS - - - [Apollo iOS](https://www.apollographql.com/docs/ios/) ([github](https://github.com/apollographql/apollo-ios)): A GraphQL client for iOS that returns results as query-specific Swift types, and integrates with Xcode to show your Swift source and GraphQL side by side, with inline validation errors. - - [GraphQL iOS](https://github.com/funcompany/graphql-ios): An Objective-C GraphQL client for iOS. - - [Graphaello](https://github.com/nerdsupremacist/Graphaello): A Tool for Writing Declarative, Type-Safe and Data-Driven Applications in SwiftUI using GraphQL and Apollo - -### Python - - - [GQL](https://github.com/graphql-python/gql): A GraphQL client in Python. - - [python-graphql-client](https://github.com/prisma/python-graphql-client): Simple GraphQL client for Python 2.7+. - - [sgqlc](https://github.com/profusion/sgqlc): A simple Python GraphQL client. Supports generating code generation for types defined in a GraphQL schema. - -### R - - - [ghql](https://github.com/ropensci/ghql): General purpose GraphQL R client. - -## Tools - - - [graphiql](https://github.com/graphql/graphiql) ([npm](https://www.npmjs.com/package/graphiql)): An interactive in-browser GraphQL IDE. - - [libgraphqlparser](https://github.com/graphql/libgraphqlparser): A GraphQL query language parser in C++ with C and C++ APIs. - - [Graphql Language Service](https://github.com/graphql/graphql-language-service): An interface for building GraphQL language services for IDEs (diagnostics, autocomplete etc). - - [quicktype](https://quicktype.io) ([github](https://github.com/quicktype/quicktype)): Generate types for GraphQL queries in TypeScript, Swift, golang, C#, C++, and more. - - [GraphQL Code Generator](https://graphql-code-generator.com): GraphQL code generator with flexible support for custom plugins and templates like Typescript (frontend and backend), React Hooks, resolvers signatures and more. - - [GraphQL Inspector](https://www.graphql-inspector.com): Compare schemas, validate documents, find breaking changes, find similar types, schema coverage, and more. - - [GraphQL Config](https://www.graphql-config.com): One configuration for all your GraphQL tools (supported by most tools, editors & IDEs). - - [GraphQL CLI](https://www.graphql-cli.com): A command line tool for common GraphQL development workflows. - - [GraphQL Scalars](https://github.com/Urigo/graphql-scalars): A library of custom GraphQL scalar types for creating precise, type-safe GraphQL schemas. - - [GraphQL Tools](https://www.graphql-tools.com): A set of utils for faster development of GraphQL tools (Schema and documents loading, Schema merging and more). - - [SOFA](https://github.com/Urigo/sofa): Generate REST API from your GraphQL API. - - [GraphQL-ESLint](https://github.com/dotansimha/graphql-eslint): integrates GraphQL AST in the ESLint core (as a parser). - - [GraphQL Modules](https://www.graphql-modules.com): lets you separate your backend implementation to small, reusable, easy-to-implement and easy-to-test pieces. - - [GraphQL Mesh](https://www.graphql-mesh.com): allows you to use GraphQL query language to access data in remote APIs that don't run GraphQL (and also ones that do run GraphQL). It can be used as a gateway to other services, or run as a local GraphQL schema that aggregates data from remote APIs. - -## Services - - - [Apollo Graph Manager](https://engine.apollographql.com): A cloud service for monitoring the performance and usage of your GraphQL backend. - - [GraphCMS](https://graphcms.com/): A BaaS (Backend as a Service) that sets you up with a GraphQL backend as well as tools for content editors to work with the stored data. - - [Prisma](https://www.prisma.io) ([github](https://github.com/prisma)): A BaaS (Backend as a Service) providing a GraphQL backend for your applications with a powerful web ui for managing your database and stored data. - - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)): A SaaS (Software as a Service) content management system that allows you to create your content with powerful editing tools and access it from anywhere with a GraphQL or REST API. - - [AWS AppSync](https://aws.amazon.com/appsync/): Fully managed GraphQL service with realtime subscriptions, offline programming & synchronization, and enterprise security features as well as fine grained authorization controls. - - [Elide](https://elide.io): A Java library that can expose a JPA annotated data model as a GraphQL service over any relational database. - - [Hasura](https://hasura.io) ([github](https://github.com/hasura)): Hasura connects to your databases & microservices and instantly gives you a production-ready GraphQL API. - - [FaunaDB](https://docs.fauna.com/fauna/current/graphql): Create an instant GraphQL backend by importing a gql schema. The database will create relations and indexes for you, so you'll be ready to query in seconds, without writing any database code. Serverless pricing, free to get started. - - [Back4App](https://www.back4app.com/docs/parse-graphql/graphql-getting-started): Back4App is a Backend as a Service Platform that helps you Build and Scale modern applications based on GraphQL. - -## More Stuff - - - [awesome-graphql](https://github.com/chentsulin/awesome-graphql): A fantastic community maintained collection of libraries, resources, and more. - diff --git a/src/content/code/language-support/ballerina/client/ballerina-graphql.md b/src/content/code/language-support/ballerina/client/ballerina-graphql.md new file mode 100644 index 0000000000..404990ac3f --- /dev/null +++ b/src/content/code/language-support/ballerina/client/ballerina-graphql.md @@ -0,0 +1,32 @@ +--- +name: ballerina-graphql +description: The Ballerina Standard Library Package for consume GraphQL services. +url: https://lib.ballerina.io/ballerina/graphql/latest +github: ballerina-platform/module-ballerina-graphql +--- + +To run a `ballerina-graphql` client: + +- Download and install [Ballerina Language](https://ballerina.io/downloads) +- Then run `bal run graphql_client.bal` to run the service, with this code in the `graphql_client.bal` file: + +```ballerina +import ballerina/graphql; +import ballerina/io; + +type Response record { + record { string hello; } data; +}; + +public function main() returns error? { + graphql:Client helloClient = check new ("localhost:9090/graphql"); + string document = "{ hello }"; + Response response = check helloClient->execute(document); + io:println(response.data.hello); +} +``` + +## Features + +- Dependently-typed response retrieval with Ballerina type inferring +- Custom client generation support diff --git a/src/content/code/language-support/ballerina/server/ballerina-graphql.md b/src/content/code/language-support/ballerina/server/ballerina-graphql.md new file mode 100644 index 0000000000..b1010190a8 --- /dev/null +++ b/src/content/code/language-support/ballerina/server/ballerina-graphql.md @@ -0,0 +1,28 @@ +--- +name: ballerina-graphql +description: The Ballerina Standard Library Package for write GraphQL services. +url: https://lib.ballerina.io/ballerina/graphql/latest +github: ballerina-platform/module-ballerina-graphql +--- + +To run a `ballerina-graphql` hello world server: + +- Download and install [Ballerina Language](https://ballerina.io/downloads) +- Then run `bal run graphql_service.bal` to run the service, with this code in the `graphql_service.bal` file: + +```ballerina +import ballerina/graphql; + +service /graphql on new graphql:Listener(9090) { + resource function get hello() returns string { + return "Hello, world!"; + } +} +``` + +## Features + +- Built with Ballerina `service` and `listener` model, which are first-class citizens in Ballerina +- Supports subscriptions over websocket (No additional libraries needed) +- Supports file upload +- Built-in GraphiQL client diff --git a/src/content/code/language-support/c-c/tools/libgraphqlparser.md b/src/content/code/language-support/c-c/tools/libgraphqlparser.md new file mode 100644 index 0000000000..c64299f523 --- /dev/null +++ b/src/content/code/language-support/c-c/tools/libgraphqlparser.md @@ -0,0 +1,6 @@ +--- +name: libgraphqlparser +description: A GraphQL query language parser in C++ with C and C++ APIs. +url: https://github.com/graphql/libgraphqlparser +github: graphql/libgraphqlparser +--- diff --git a/src/content/code/language-support/c-net/client/graphql-client.md b/src/content/code/language-support/c-net/client/graphql-client.md new file mode 100644 index 0000000000..dba3ece524 --- /dev/null +++ b/src/content/code/language-support/c-net/client/graphql-client.md @@ -0,0 +1,6 @@ +--- +name: GraphQL.Client +description: A GraphQL Client for .NET. +url: https://github.com/graphql-dotnet/graphql-client +github: graphql-dotnet/graphql-client +--- diff --git a/src/content/code/language-support/c-net/client/graphql-net-client.md b/src/content/code/language-support/c-net/client/graphql-net-client.md new file mode 100644 index 0000000000..bf6207842a --- /dev/null +++ b/src/content/code/language-support/c-net/client/graphql-net-client.md @@ -0,0 +1,6 @@ +--- +name: graphql-net-client +description: Basic example GraphQL client for .NET. +url: https://github.com/bkniffler/graphql-net-client +github: bkniffler/graphql-net-client +--- diff --git a/src/content/code/language-support/c-net/client/sahb-graphqlclient.md b/src/content/code/language-support/c-net/client/sahb-graphqlclient.md new file mode 100644 index 0000000000..c591e715de --- /dev/null +++ b/src/content/code/language-support/c-net/client/sahb-graphqlclient.md @@ -0,0 +1,6 @@ +--- +name: SAHB.GraphQLClient +description: GraphQL client which supports generating queries from C# classes +url: https://github.com/sahb1239/SAHB.GraphQLClient +github: sahb1239/SAHB.GraphQLClient +--- diff --git a/src/content/code/language-support/c-net/client/strawberry-shake.md b/src/content/code/language-support/c-net/client/strawberry-shake.md new file mode 100644 index 0000000000..f18451aae7 --- /dev/null +++ b/src/content/code/language-support/c-net/client/strawberry-shake.md @@ -0,0 +1,23 @@ +--- +name: Strawberry Shake +description: Strawberry Shake is a open-source reactive GraphQL client for .NET +url: https://chillicream.com/docs/strawberryshake/ +github: ChilliCream/hotchocolate +--- + +Strawberry Shake removes the complexity of state management and lets you interact with local and remote data through GraphQL. + +You can use Strawberry Shake to: + +- Generate a C# client from your GraphQL queries. +- Interact with local and remote data through GraphQL. +- Use reactive APIs to interact with your state. + +```csharp +client.GetHero + .Watch(ExecutionStrategy.CacheFirst) + .Subscribe(result => + { + Console.WriteLine(result.Data.Name); + }) +``` diff --git a/src/content/code/language-support/c-net/client/zeroql.md b/src/content/code/language-support/c-net/client/zeroql.md new file mode 100644 index 0000000000..8138d8db54 --- /dev/null +++ b/src/content/code/language-support/c-net/client/zeroql.md @@ -0,0 +1,27 @@ +--- +name: ZeroQL +description: ZeroQL is a open-source GraphQL client for C# +url: https://github.com/byme8/ZeroQL +github: byme8/ZeroQL +--- + +The ZeroQL is a high-performance C#-friendly GraphQL client. It supports Linq-like syntax, and doesn't require Reflection.Emit or expressions. +As a result, at runtime provides performance very close to a raw HTTP call. + +You can use ZeroQL to: + +- Generate a C# client from GraphQL schema. +- Generate and execute graphql queries from your C# code. +- Don't require writing GraphQL manually. +- Supports .Net Core, .Net Framework, Xamarin, Unity apps. + +```csharp +var userId = 10; +var response = await qlClient.Query(q => q + .User(userId, o => new + { + o.Id, + o.FirstName, + o.LastName + })); +``` diff --git a/src/content/code/language-support/c-net/server/entity-graphql.md b/src/content/code/language-support/c-net/server/entity-graphql.md new file mode 100644 index 0000000000..e5a3438a7e --- /dev/null +++ b/src/content/code/language-support/c-net/server/entity-graphql.md @@ -0,0 +1,31 @@ +--- +name: Entity GraphQL +description: A GraphQL library for .NET Core. Easily expose you data model as a GraphQL API or bring together multiple data sources into a single GraphQL schema. +url: https://entitygraphql.github.io +github: EntityGraphQL/EntityGraphQL +--- + +```csharp +// expose an exisiting data model with ASP.NET & EF Core +public class Startup { + public void ConfigureServices(IServiceCollection services) + { + services.AddDbContext(); + // Auto build a schema from DemoContext. Alternatively you can build one from scratch + services.AddGraphQLSchema(options => + { + // modify the schema (add/remove fields or types), add other services + }); + } + + public void Configure(IApplicationBuilder app, DemoContext db) + { + app.UseRouting(); + app.UseEndpoints(endpoints => + { + // defaults to /graphql endpoint + endpoints.MapGraphQL(); + }); + } +} +``` diff --git a/src/content/code/language-support/c-net/server/graphql-dotnet.md b/src/content/code/language-support/c-net/server/graphql-dotnet.md new file mode 100644 index 0000000000..a117030ede --- /dev/null +++ b/src/content/code/language-support/c-net/server/graphql-dotnet.md @@ -0,0 +1,34 @@ +--- +name: graphql-dotnet +description: GraphQL for .NET +url: https://github.com/graphql-dotnet/graphql-dotnet +github: graphql-dotnet/graphql-dotnet +--- + +```csharp +using System; +using System.Threading.Tasks; +using GraphQL; +using GraphQL.Types; +using GraphQL.SystemTextJson; // First add PackageReference to GraphQL.SystemTextJson + +public class Program +{ + public static async Task Main(string[] args) + { + var schema = Schema.For(@" + type Query { + hello: String + } + "); + + var json = await schema.ExecuteAsync(_ => + { + _.Query = "{ hello }"; + _.Root = new { Hello = "Hello World!" }; + }); + + Console.WriteLine(json); + } +} +``` diff --git a/src/content/code/language-support/c-net/server/graphql-net.md b/src/content/code/language-support/c-net/server/graphql-net.md new file mode 100644 index 0000000000..e778b26279 --- /dev/null +++ b/src/content/code/language-support/c-net/server/graphql-net.md @@ -0,0 +1,6 @@ +--- +name: graphql-net +description: Convert GraphQL to IQueryable +url: https://github.com/ckimes89/graphql-net +github: chkimes/graphql-net +--- diff --git a/src/content/code/language-support/c-net/server/hot-chocolate.md b/src/content/code/language-support/c-net/server/hot-chocolate.md new file mode 100644 index 0000000000..2b9704ad33 --- /dev/null +++ b/src/content/code/language-support/c-net/server/hot-chocolate.md @@ -0,0 +1,38 @@ +--- +name: Hot Chocolate +description: Hot Chocolate is an open-source GraphQL Server for .NET +url: https://chillicream.com/docs/hotchocolate/ +github: ChilliCream/hotchocolate +--- + +Hot Chocolate takes the complexity away from building a fully-fledged GraphQL server and lets you focus on delivering the next big thing. + +```csharp +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; + +WebHost + .CreateDefaultBuilder(args) + .ConfigureServices(services => + services + .AddGraphQLServer() + .AddQueryType()) + .Configure(builder => + builder + .UseRouting() + .UseEndpoints(e => e.MapGraphQL())) + .Build() + .Run(); + +public class Query +{ + public Hero GetHero() => new Hero(); +} + +public class Hero +{ + public string Name => "Luke Skywalker"; +} +``` diff --git a/src/content/code/language-support/c-net/server/ngraphql.md b/src/content/code/language-support/c-net/server/ngraphql.md new file mode 100644 index 0000000000..dfa47c31a3 --- /dev/null +++ b/src/content/code/language-support/c-net/server/ngraphql.md @@ -0,0 +1,6 @@ +--- +name: NGraphQL +description: A set of packages for implementing high-performant GraphQL servers in .NET. Faithful implementation of official 2018 Specification. Features batched execution support (aka Data Loader); support for custom scalars; HTTP server based on ASP.NET Core; parsed query cache; modular API construction (equivalent of schema stiching); full introspection support; runtime metrics and quotas. +url: https://github.com/rivantsov/ngraphql +github: rivantsov/ngraphql +--- diff --git a/src/content/code/language-support/clojure/client/regraph.md b/src/content/code/language-support/clojure/client/regraph.md new file mode 100644 index 0000000000..a825d815ca --- /dev/null +++ b/src/content/code/language-support/clojure/client/regraph.md @@ -0,0 +1,6 @@ +--- +name: regraph +description: A GraphQL client implemented in Clojurescript with support for websockets. +url: https://github.com/oliyh/re-graph/ +github: oliyh/re-graph +--- diff --git a/src/content/code/language-support/clojure/server/alumbra.md b/src/content/code/language-support/clojure/server/alumbra.md new file mode 100644 index 0000000000..c652f0769a --- /dev/null +++ b/src/content/code/language-support/clojure/server/alumbra.md @@ -0,0 +1,41 @@ +--- +name: alumbra +description: A set of reusable GraphQL components for Clojure conforming to the data structures given in [alumbra.spec](https://github.com/alumbra/alumbra.spec). +url: https://github.com/alumbra/alumbra +github: alumbra/alumbra +--- + +```clojure +(require '[alumbra.core :as alumbra] + '[claro.data :as data]) + +(def schema + "type Person { name: String!, friends: [Person!]! } + type QueryRoot { person(id: ID!): Person, me: Person! } + schema { query: QueryRoot }") + +(defrecord Person [id] + data/Resolvable + (resolve! [_ _] + {:name (str "Person #" id) + :friends (map ->Person (range (inc id) (+ id 3)))})) + +(def QueryRoot + {:person (map->Person {}) + :me (map->Person {:id 0})}) + +(def app + (alumbra/handler + {:schema schema + :query QueryRoot})) + +(defonce my-graphql-server + (aleph.http/start-server #'app {:port 3000})) +``` + +```bash +$ curl -XPOST "http://0:3000" -H'Content-Type: application/json' -d'{ + "query": "{ me { name, friends { name } } }" +}' +{"data":{"me":{"name":"Person #0","friends":[{"name":"Person #1"},{"name":"Person #2"}]}}} +``` diff --git a/src/content/code/language-support/clojure/server/graphql-clj.md b/src/content/code/language-support/clojure/server/graphql-clj.md new file mode 100644 index 0000000000..eb76c7ed59 --- /dev/null +++ b/src/content/code/language-support/clojure/server/graphql-clj.md @@ -0,0 +1,24 @@ +--- +name: graphql-clj +description: A Clojure library that provides a GraphQL implementation. +url: https://github.com/tendant/graphql-clj +github: tendant/graphql-clj +--- + +Code that executes a hello world GraphQL query with `graphql-clj`: + +```clojure + +(def schema "type QueryRoot { + hello: String + }") + +(defn resolver-fn [type-name field-name] + (get-in {"QueryRoot" {"hello" (fn [context parent & rest] + "Hello world!")}} + [type-name field-name])) + +(require '[graphql-clj.executor :as executor]) + +(executor/execute nil schema resolver-fn "{ hello }") +``` diff --git a/src/content/code/language-support/clojure/server/lacinia.md b/src/content/code/language-support/clojure/server/lacinia.md new file mode 100644 index 0000000000..c4e3a1243f --- /dev/null +++ b/src/content/code/language-support/clojure/server/lacinia.md @@ -0,0 +1,6 @@ +--- +name: lacinia +description: A full implementation of the GraphQL specification that aims to maintain external compliance with the specification. +url: https://github.com/walmartlabs/lacinia +github: walmartlabs/lacinia +--- diff --git a/src/content/code/language-support/d/server/graphqld.md b/src/content/code/language-support/d/server/graphqld.md new file mode 100644 index 0000000000..f7fd34a6aa --- /dev/null +++ b/src/content/code/language-support/d/server/graphqld.md @@ -0,0 +1,6 @@ +--- +name: graphqld +description: A GraphQL implementaiton for the D Programming Language. +url: https://github.com/burner/graphqld +github: burner/graphqld +--- diff --git a/src/content/code/language-support/elixir/client/common-graphql-client.md b/src/content/code/language-support/elixir/client/common-graphql-client.md new file mode 100644 index 0000000000..c73b9464b7 --- /dev/null +++ b/src/content/code/language-support/elixir/client/common-graphql-client.md @@ -0,0 +1,6 @@ +--- +name: common_graphql_client +description: Elixir GraphQL Client with HTTP and WebSocket support +url: https://github.com/annkissam/common_graphql_client +github: annkissam/common_graphql_client +--- diff --git a/src/content/code/language-support/elixir/client/neuron.md b/src/content/code/language-support/elixir/client/neuron.md new file mode 100644 index 0000000000..1c3e7a6ec0 --- /dev/null +++ b/src/content/code/language-support/elixir/client/neuron.md @@ -0,0 +1,6 @@ +--- +name: Neuron +description: A GraphQL client for Elixir +url: https://github.com/uesteibar/neuron +github: uesteibar/neuron +--- diff --git a/src/content/code/language-support/elixir/server/absinthe.md b/src/content/code/language-support/elixir/server/absinthe.md new file mode 100644 index 0000000000..ab928cfeb4 --- /dev/null +++ b/src/content/code/language-support/elixir/server/absinthe.md @@ -0,0 +1,6 @@ +--- +name: absinthe +description: GraphQL implementation for Elixir. +url: https://github.com/absinthe-graphql/absinthe +github: absinthe-graphql/absinthe +--- diff --git a/src/content/code/language-support/elixir/server/graphql-elixir.md b/src/content/code/language-support/elixir/server/graphql-elixir.md new file mode 100644 index 0000000000..bbab442504 --- /dev/null +++ b/src/content/code/language-support/elixir/server/graphql-elixir.md @@ -0,0 +1,6 @@ +--- +name: graphql-elixir +description: An Elixir implementation of Facebook's GraphQL. +url: https://github.com/graphql-elixir/graphql +github: graphql-elixir/graphql +--- diff --git a/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md b/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md new file mode 100644 index 0000000000..2f7e7ab328 --- /dev/null +++ b/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md @@ -0,0 +1,6 @@ +--- +name: dillonkearns/elm-graphql +description: Library and command-line code generator to create type-safe Elm code for a GraphQL endpoint. +url: https://github.com/dillonkearns/elm-graphql +github: dillonkearns/elm-graphql +--- diff --git a/src/content/code/language-support/erlang/server/graphql-erlang.md b/src/content/code/language-support/erlang/server/graphql-erlang.md new file mode 100644 index 0000000000..74f8cc0a21 --- /dev/null +++ b/src/content/code/language-support/erlang/server/graphql-erlang.md @@ -0,0 +1,6 @@ +--- +name: graphql-erlang +description: GraphQL implementation in Erlang. +url: https://github.com/shopgun/graphql-erlang +github: jlouis/graphql-erlang +--- diff --git a/src/content/code/language-support/flutter/client/ferry.md b/src/content/code/language-support/flutter/client/ferry.md new file mode 100644 index 0000000000..f821eb1a4a --- /dev/null +++ b/src/content/code/language-support/flutter/client/ferry.md @@ -0,0 +1,6 @@ +--- +name: Ferry +description: Ferry is a simple, powerful GraphQL Client for Flutter and Dart. +url: https://ferrygraphql.com/ +github: gql-dart/ferry +--- diff --git a/src/content/code/language-support/flutter/client/graphql.md b/src/content/code/language-support/flutter/client/graphql.md new file mode 100644 index 0000000000..ebdfb17a74 --- /dev/null +++ b/src/content/code/language-support/flutter/client/graphql.md @@ -0,0 +1,6 @@ +--- +name: graphql +description: A GraphQL client implementation in Flutter. +url: https://github.com/zino-app/graphql-flutter#readme +github: zino-app/graphql-flutter +--- diff --git a/src/content/code/language-support/go/client/genqlient.md b/src/content/code/language-support/go/client/genqlient.md new file mode 100644 index 0000000000..1be0f914aa --- /dev/null +++ b/src/content/code/language-support/go/client/genqlient.md @@ -0,0 +1,14 @@ +--- +name: genqlient +description: A truly type-safe Go GraphQL client. +url: https://github.com/Khan/genqlient +github: Khan/genqlient +--- + +genqlient is a Go library to easily generate type-safe code to query a GraphQL API. It takes advantage of the fact that both GraphQL and Go are typed languages to ensure at compile-time that your code is making a valid GraphQL query and using the result correctly, all with a minimum of boilerplate. + +genqlient provides: + +- Compile-time validation of GraphQL queries: never ship an invalid GraphQL query again! +- Type-safe response objects: genqlient generates the right type for each query, so you know the response will unmarshal correctly and never need to use `interface{}`. +- Production-readiness: genqlient is used in production at Khan Academy, where it supports millions of learners and teachers around the world. diff --git a/src/content/code/language-support/go/client/go-graphql-client.md b/src/content/code/language-support/go/client/go-graphql-client.md new file mode 100644 index 0000000000..4c4e4e8fac --- /dev/null +++ b/src/content/code/language-support/go/client/go-graphql-client.md @@ -0,0 +1,6 @@ +--- +name: go-graphql-client +description: A GraphQL Go client with Mutation, Query and Subscription support. +url: https://github.com/hasura/go-graphql-client +github: hasura/go-graphql-client +--- diff --git a/src/content/code/language-support/go/client/graphql.md b/src/content/code/language-support/go/client/graphql.md new file mode 100644 index 0000000000..a79b4284f4 --- /dev/null +++ b/src/content/code/language-support/go/client/graphql.md @@ -0,0 +1,6 @@ +--- +name: graphql +description: A GraphQL client implementation in Go. +url: https://github.com/shurcooL/graphql#readme +github: shurcooL/graphql +--- diff --git a/src/content/code/language-support/go/client/machinebox-graphql.md b/src/content/code/language-support/go/client/machinebox-graphql.md new file mode 100644 index 0000000000..650a581c7a --- /dev/null +++ b/src/content/code/language-support/go/client/machinebox-graphql.md @@ -0,0 +1,6 @@ +--- +name: machinebox/graphql +description: An elegant low-level HTTP client for GraphQL. +url: https://github.com/machinebox/graphql +github: machinebox/graphql +--- diff --git a/src/content/code/language-support/go/server/99designs-gqlgen.md b/src/content/code/language-support/go/server/99designs-gqlgen.md new file mode 100644 index 0000000000..89638698fd --- /dev/null +++ b/src/content/code/language-support/go/server/99designs-gqlgen.md @@ -0,0 +1,6 @@ +--- +name: 99designs/gqlgen +description: Go generate based graphql server library. +url: https://github.com/99designs/gqlgen +github: 99designs/gqlgen +--- diff --git a/src/content/code/language-support/go/server/andrewwphillips-eggql.md b/src/content/code/language-support/go/server/andrewwphillips-eggql.md new file mode 100644 index 0000000000..881fe1c00d --- /dev/null +++ b/src/content/code/language-support/go/server/andrewwphillips-eggql.md @@ -0,0 +1,41 @@ +--- +name: EGGQL +description: Easy to use, complete Go implementation of GraphQL. Simple and schema-less. +url: https://github.com/AndrewWPhillips/eggql +github: andrewwphillips/eggql +--- + +The purpose of Eggql is to make it as simple as possible to create a GraphQL server. You don't need to create GraphQL schema (though you can view the schema that is created if interested). It is currently in beta release but is a complete implementation of a GraphQL server apart from subscriptions. + +Just to be clear it supports all of these GraphQL features: arguments (including defaults), objects/lists/enums/input/interface/union types, aliases, fragments, variables, directives, mutations, inline fragments, descriptions, introspection and custom scalars. + +Tests (jMeter) show that it is as fast or faster than other Go implementations for simple queries. We're working on enhancements for performance including caching, data-loader, complexity-limits, etc. + +To run an `eggql` hello world server just build and run this Go program: + +```Go +package main + +import "github.com/andrewwphillips/eggql" + +func main() { + http.Handle("/graphql", eggql.New(struct{ Message string }{Message: "hello, world"})) + http.ListenAndServe(":80", nil) +} +``` + +This creates a root Query object with a single `message` field. To test it send a query with curl: + +```sh +$ curl -XPOST -d '{"query": "{ message }"}' localhost:80/graphql +``` + +and you will get this response: + +```JSON +{ + "data": { + "message": "hello, world" + } +} +``` diff --git a/src/content/code/language-support/go/server/appointy-jaal.md b/src/content/code/language-support/go/server/appointy-jaal.md new file mode 100644 index 0000000000..547800e08d --- /dev/null +++ b/src/content/code/language-support/go/server/appointy-jaal.md @@ -0,0 +1,6 @@ +--- +name: appointy/jaal +description: Develop spec compliant GraphQL servers in Go. +url: https://github.com/appointy/jaal +github: appointy/jaal +--- diff --git a/src/content/code/language-support/go/server/graph-gophers-graphql-go.md b/src/content/code/language-support/go/server/graph-gophers-graphql-go.md new file mode 100644 index 0000000000..2ef840d12b --- /dev/null +++ b/src/content/code/language-support/go/server/graph-gophers-graphql-go.md @@ -0,0 +1,6 @@ +--- +name: graph-gophers/graphql-go +description: GraphQL server with a focus on ease of use. +url: https://github.com/graph-gophers/graphql-go +github: graph-gophers/graphql-go +--- diff --git a/src/content/code/language-support/go/server/graphql-go.md b/src/content/code/language-support/go/server/graphql-go.md new file mode 100644 index 0000000000..b92f8a5460 --- /dev/null +++ b/src/content/code/language-support/go/server/graphql-go.md @@ -0,0 +1,6 @@ +--- +name: graphql-go +description: An implementation of GraphQL for Go / Golang. +url: https://github.com/graphql-go/graphql +github: graphql-go/graphql +--- diff --git a/src/content/code/language-support/go/server/graphql-relay-go.md b/src/content/code/language-support/go/server/graphql-relay-go.md new file mode 100644 index 0000000000..58a2298613 --- /dev/null +++ b/src/content/code/language-support/go/server/graphql-relay-go.md @@ -0,0 +1,6 @@ +--- +name: graphql-relay-go +description: A Go/Golang library to help construct a graphql-go server supporting react-relay. +url: https://github.com/graphql-go/relay +github: graphql-go/relay +--- diff --git a/src/content/code/language-support/go/server/samsarahq-thunder.md b/src/content/code/language-support/go/server/samsarahq-thunder.md new file mode 100644 index 0000000000..d05700c46c --- /dev/null +++ b/src/content/code/language-support/go/server/samsarahq-thunder.md @@ -0,0 +1,6 @@ +--- +name: samsarahq/thunder +description: A GraphQL implementation with easy schema building, live queries, and batching. +url: https://github.com/samsarahq/thunder +github: samsarahq/thunder +--- diff --git a/src/content/code/language-support/go/server/wundergraph-graphql-go-tools.md b/src/content/code/language-support/go/server/wundergraph-graphql-go-tools.md new file mode 100644 index 0000000000..40c713dc1f --- /dev/null +++ b/src/content/code/language-support/go/server/wundergraph-graphql-go-tools.md @@ -0,0 +1,23 @@ +--- +name: graphql-go-tools +description: A collection of tools for building GraphQL Servers, Gateways, Proxy Servers and Middleware in Go. +url: https://github.com/wundergraph/graphql-go-tools +github: wundergraph/graphql-go-tools +--- + +graphql-go-tools implements all basic blocks for building GraphQL Servers, Gateways and Proxy Servers. +From lexing, parsing, validation, normalization, all the way up to query planning and execution. + +It can also be understood as a GraphQL Compiler, with the ability to add your own backends. +Just by implementing a few interfaces, you're able to teach the compiler how to talk GraphQL to any backend. + +The following backends are already implemented: +[GraphQL](https://github.com/wundergraph/graphql-go-tools/tree/master/pkg/engine/datasource/graphql_datasource), with support for Apollo Federation / Supergraph. +[Databases](https://github.com/wundergraph/wundergraph/tree/main/pkg/datasources/database): PostgreSQL, MySQL, SQLite, CockroachDB, MongoDB, SQLServer, +[OpenAPI / REST](https://github.com/wundergraph/wundergraph/tree/main/pkg/datasources/oas) and +[Kafka](https://github.com/wundergraph/graphql-go-tools/tree/master/pkg/engine/datasource/kafka_datasource). + +To get a sense on how to implement a new backend, check out the [Static Data Source](https://github.com/wundergraph/graphql-go-tools/tree/master/pkg/engine/datasource/staticdatasource), +as it's the simplest one. + +It's used in production by many enterprises for multiple years now, battle tested and actively maintained. diff --git a/src/content/code/language-support/go/tools/graphjin.md b/src/content/code/language-support/go/tools/graphjin.md new file mode 100644 index 0000000000..00dedd49ee --- /dev/null +++ b/src/content/code/language-support/go/tools/graphjin.md @@ -0,0 +1,6 @@ +--- +name: graphjin +description: An instant GraphQL to SQL compiler. Use as a standalone service or a Go library. Formerly super-graph. +url: https://github.com/dosco/graphjin +github: dosco/graphjin +--- diff --git a/src/content/code/language-support/groovy/server/gorm-graphql.md b/src/content/code/language-support/groovy/server/gorm-graphql.md new file mode 100644 index 0000000000..9c6ba9c890 --- /dev/null +++ b/src/content/code/language-support/groovy/server/gorm-graphql.md @@ -0,0 +1,21 @@ +--- +name: gorm-graphql +description: An automatic GraphQL schema generator for GORM +url: https://grails.github.io/gorm-graphql/latest/guide/index.html +github: grails/gorm-graphql +--- + +**Core Library** - The GORM GraphQL library provides functionality to generate a GraphQL schema based on your GORM entities. In addition to mapping domain classes to a GraphQL schema, the core library also provides default implementations of "data fetchers" to query, update, and delete data through executions of the schema. + +**Grails Plugin** - In a addition to the Core Library, the GORM GraphQL Grails Plugin: + +- Provides a controller to receive and respond to GraphQL requests through HTTP, based on their guidelines. + +- Generates the schema at startup with spring bean configuration to make it easy to extend. + +- Includes a [GraphiQL](https://github.com/graphql/graphiql) browser enabled by default in development. The browser is accessible at /graphql/browser. + +- Overrides the default data binder to use the data binding provided by Grails +- Provides a [trait](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) to make integration testing of your GraphQL endpoints easier + +See [the documentation](https://grails.github.io/gorm-graphql/latest/guide/index.html) for more information. diff --git a/src/content/code/language-support/groovy/server/gql.md b/src/content/code/language-support/groovy/server/gql.md new file mode 100644 index 0000000000..7d1cfa2810 --- /dev/null +++ b/src/content/code/language-support/groovy/server/gql.md @@ -0,0 +1,6 @@ +--- +name: GQL +description: GQL is a Groove library for GraphQL +url: https://grooviter.github.io/gql/ +github: grooviter/gql +--- diff --git a/src/content/code/language-support/haskell/client/morpheus-graphql-client.md b/src/content/code/language-support/haskell/client/morpheus-graphql-client.md new file mode 100644 index 0000000000..2da8c6cde5 --- /dev/null +++ b/src/content/code/language-support/haskell/client/morpheus-graphql-client.md @@ -0,0 +1,6 @@ +--- +name: morpheus-graphql-client +description: A strongly-typed GraphQL client implementation in Haksell. +url: https://github.com/morpheusgraphql/morpheus-graphql +github: morpheusgraphql/morpheus-graphql +--- diff --git a/src/content/code/language-support/haskell/server/graphql-w-persistent.md b/src/content/code/language-support/haskell/server/graphql-w-persistent.md new file mode 100644 index 0000000000..afea3da582 --- /dev/null +++ b/src/content/code/language-support/haskell/server/graphql-w-persistent.md @@ -0,0 +1,8 @@ +--- +name: graphql-w-persistent +description: Complete set of library tools to abstract relational database schemas with SQL, query with GraphQL, and return GraphQL results +url: https://hackage.haskell.org/package/graphql-w-persistent +github: jasonsychau/graphql-w-persistent +--- + +One time setup: build schema, deploy as microservice or within server, query SQL database with GraphQL! diff --git a/src/content/code/language-support/haskell/server/morpheus-graphql.md b/src/content/code/language-support/haskell/server/morpheus-graphql.md new file mode 100644 index 0000000000..b274a09b99 --- /dev/null +++ b/src/content/code/language-support/haskell/server/morpheus-graphql.md @@ -0,0 +1,60 @@ +--- +name: Morpheus GraphQL +description: A Haskell library for building GraphQL APIs. +url: https://github.com/morpheusgraphql/morpheus-graphql +github: morpheusgraphql/morpheus-graphql +--- + +Hello world example with `morpheus-graphql`: + +```graphql +# schema.gql +""" +A supernatural being considered divine and sacred +""" +type Deity { + name: String! + power: String @deprecated(reason: "no more supported") +} +type Query { + deity(name: String! = "Morpheus"): Deity! +} +``` + +```haskell +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +module API (api) where +import Data.ByteString.Lazy.Char8 (ByteString) +import Data.Morpheus (interpreter) +import Data.Morpheus.Document (importGQLDocument) +import Data.Morpheus.Types (RootResolver (..), Undefined (..)) +import Data.Text (Text) +importGQLDocument "schema.gql" +rootResolver :: RootResolver IO () Query Undefined Undefined +rootResolver = + RootResolver + { queryResolver = Query {deity}, + mutationResolver = Undefined, + subscriptionResolver = Undefined + } + where + deity DeityArgs {name} = + pure + Deity + { name = pure name, + power = pure (Just "Shapeshifting") + } +api :: ByteString -> IO ByteString +api = interpreter rootResolver +``` + +See [morpheus-graphql-examples](https://github.com/morpheusgraphql/morpheus-graphql) for more sophisticated APIs. diff --git a/src/content/code/language-support/haskell/server/mu-haskell.md b/src/content/code/language-support/haskell/server/mu-haskell.md new file mode 100644 index 0000000000..636f68d248 --- /dev/null +++ b/src/content/code/language-support/haskell/server/mu-haskell.md @@ -0,0 +1,56 @@ +--- +name: Mu-Haskell with Mu-GraphQL +description: A Haskell library for building microservices (gRPC, HTTP) and GraphQL APIs. +url: https://higherkindness.io/mu-haskell/ +github: higherkindness/mu-haskell +--- + +Example implementation of a GraphQL server with type-level representation of the schema auto-generated: + +```haskell +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PartialTypeSignatures #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeOperators #-} + +-- imports omitted for brevity... + +graphql "Library" "library.graphql" -- all the magic happens here! 🪄🎩 + +-- ... a bit more code... + +libraryServer :: SqlBackend -> ServerT ObjectMapping i Library ServerErrorIO _ +libraryServer conn = + resolver + ( object @"Book" + ( field @"id" bookId, + field @"title" bookTitle, + field @"author" bookAuthor, + field @"imageUrl" bookImage + ), + object @"Author" + ( field @"id" authorId, + field @"name" authorName, + field @"books" authorBooks + ), + object @"Query" + ( method @"authors" allAuthors, + method @"books" allBooks + ), + object @"Mutation" + ( method @"newAuthor" newAuthor, + method @"newBook" newBook + ), + object @"Subscription" + (method @"allBooks" allBooksConduit) + ) + where + bookId :: Entity Book -> ServerErrorIO Integer + bookId (Entity (BookKey k) _) = pure $ toInteger k + -- ... more resolvers... +``` + +See [our docs](https://higherkindness.io/mu-haskell/graphql/) for more information about how to build your own GraphQL server and [the library example](https://github.com/higherkindness/mu-graphql-example-elm) for a more end-to-end example that includes a client written in Elm! diff --git a/src/content/code/language-support/java-kotlin-android/client/apollo-kotlin.md b/src/content/code/language-support/java-kotlin-android/client/apollo-kotlin.md new file mode 100644 index 0000000000..2fc12654ca --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/apollo-kotlin.md @@ -0,0 +1,22 @@ +--- +name: Apollo Kotlin +description: A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform. +url: https://github.com/apollographql/apollo-kotlin +github: apollographql/apollo-kotlin +--- + +Apollo Kotlin (formerly known as Apollo Android) is a GraphQL client with support for Android, Java8+, iOS and Kotlin multiplatform in general. It features: + +- Java and Kotlin Multiplatform code generation +- Queries, Mutations and Subscriptions +- Reflection-free parsing +- Normalized cache +- Custom scalar types +- HTTP cache +- Auto Persisted Queries +- Query batching +- File uploads +- Espresso IdlingResource +- Fake models for tests +- AppSync and graphql-ws websockets +- GraphQL AST parser diff --git a/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md b/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md new file mode 100644 index 0000000000..420653643a --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md @@ -0,0 +1,85 @@ +--- +name: graphql-kotlin +description: A set of libraries for running GraphQL client and server in Kotlin. +url: https://github.com/ExpediaGroup/graphql-kotlin/ +github: ExpediaGroup/graphql-kotlin +--- + +GraphQL Kotlin provides a set of lightweight type-safe GraphQL HTTP clients. The library provides Ktor HTTP client and Spring WebClient based reference implementations as well as allows for custom implementations using other engines. Jackson and kotlinx-serialization type-safe data models are generated at build time by the provided Gradle and Maven plugins. + +To generate Jackson models that will be used with GraphQL Kotlin Spring WebClient, add following to your Gradle build file: + +```kotlin +// build.gradle.kts +import com.expediagroup.graphql.plugin.gradle.graphql + +plugins { + id("com.expediagroup.graphql") version $latestGraphQLKotlinVersion +} + +dependencies { + implementation("com.expediagroup:graphql-kotlin-spring-client:$latestGraphQLKotlinVersion") +} + +graphql { + client { + // target GraphQL endpoint + endpoint = "http://localhost:8080/graphql" + // package for generated client code + packageName = "com.example.generated" + } +} +``` + +By default, GraphQL Kotlin plugins will look for query files under `src/main/resources`. Given `HelloWorldQuery.graphql` sample query: + +```graphql +query HelloWorldQuery { + helloWorld +} +``` + +Plugin will generate classes that are simple POJOs implementing GraphQLClientRequest interface and represent a GraphQL request. + +```kotlin +package com.example.generated + +import com.expediagroup.graphql.client.types.GraphQLClientRequest +import kotlin.String +import kotlin.reflect.KClass + +const val HELLO_WORLD_QUERY: String = "query HelloWorldQuery {\n helloWorld\n}" + +class HelloWorldQuery: GraphQLClientRequest { + override val query: String = HELLO_WORLD_QUERY + + override val operationName: String = "HelloWorldQuery" + + override fun responseType(): KClass = HelloWorldQuery.Result::class + + data class Result( + val helloWorld: String + } +} +``` + +We can then execute our queries using target client. + +```kotlin +package com.example.client + +import com.expediagroup.graphql.client.spring.GraphQLWebClient +import com.expediagroup.graphql.generated.HelloWorldQuery +import kotlinx.coroutines.runBlocking + +fun main() { + val client = GraphQLWebClient(url = "http://localhost:8080/graphql") + runBlocking { + val helloWorldQuery = HelloWorldQuery() + val result = client.execute(helloWorldQuery) + println("hello world query result: ${result.data?.helloWorld}") + } +} +``` + +See [graphql-kotlin client docs](https://opensource.expediagroup.com/graphql-kotlin/docs/client/client-overview) for additional details. diff --git a/src/content/code/language-support/java-kotlin-android/client/nodes.md b/src/content/code/language-support/java-kotlin-android/client/nodes.md new file mode 100644 index 0000000000..f44da30b93 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/nodes.md @@ -0,0 +1,6 @@ +--- +name: Nodes +description: A GraphQL JVM Client designed for constructing queries from standard model definitions. By American Express. +url: https://github.com/americanexpress/nodes +github: americanexpress/nodes +--- diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-calculator.md b/src/content/code/language-support/java-kotlin-android/server/graphql-calculator.md new file mode 100644 index 0000000000..d0226d7bb6 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-calculator.md @@ -0,0 +1,58 @@ +--- +name: graphql-calculator +description: A lightweight graphql calculation engine. +url: https://github.com/graphql-calculator/graphql-calculator +github: graphql-calculator/graphql-calculator +--- + +GraphQL Calculator is a lightweight graphql calculation engine, +which is used to alter execution behavior of graphql query. + +Here are some examples on how to use GraphQL Calculator on graphql query. + +```graphql +query basicMapValue($userIds: [Int]) { + userInfoList(userIds: $userIds) { + id + age + firstName + lastName + fullName: stringHolder @map(mapper: "firstName + lastName") + } +} + +query filterUserByAge($userId: [Int]) { + userInfoList(userIds: $userId) @filter(predicate: "age>=18") { + userId + age + firstName + lastName + } +} + +query parseFetchedValueToAnotherFieldArgumentMap($itemIds: [Int]) { + itemList(itemIds: $itemIds) { + # save sellerId as List with unique name "sellerIdList" + sellerId @fetchSource(name: "sellerIdList") + name + saleAmount + salePrice + } + + userInfoList(userIds: 1) + # transform the argument of "userInfoList" named "userIds" according to expression "sellerIdList" and expression argument, + # which mean replace userIds value by source named "sellerIdList" + @argumentTransform( + argumentName: "userIds" + operateType: MAP + expression: "sellerIdList" + dependencySources: ["sellerIdList"] + ) { + userId + name + age + } +} +``` + +See [graphql-calculator README](https://github.com/graphql-calculator/graphql-calculator) for more information. diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-java-kickstart.md b/src/content/code/language-support/java-kotlin-android/server/graphql-java-kickstart.md new file mode 100644 index 0000000000..bcae677e63 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-java-kickstart.md @@ -0,0 +1,18 @@ +--- +name: GraphQL Spring Boot +description: GraphQL Spring Boot from GraphQL Java Kickstart +url: https://www.graphql-java-kickstart.com/ +github: graphql-java-kickstart/graphql-spring-boot +--- + +The GraphQL Spring Boot turns any Spring Boot application into a GraphQL Server + +Started includes features such as: + +- Use a schema-driven API with the help of [GraphQL Java Tools](https://github.com/graphql-java-kickstart/graphql-java-tools) +- Optionally choose to use an annotation driven schema with the help of [GraphQL-Java Annotations](https://github.com/Enigmatis/graphql-java-annotations) +- Embedded [GraphiQL](https://github.com/graphql/graphiql) tool for schema introspection and query debugging +- Embedded [GraphQL Playground](https://github.com/prisma/graphql-playground) tool for schema introspection and query debugging +- Embedded the [GraphQL Voyager](https://github.com/APIs-guru/graphql-voyager) tool to represent your GraphQL API as an interactive graph + +See [GraphQL Java Kickstart Getting Started](https://www.graphql-java-kickstart.com/spring-boot/getting-started/) for how to get started. diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-java.md b/src/content/code/language-support/java-kotlin-android/server/graphql-java.md new file mode 100644 index 0000000000..166853beff --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-java.md @@ -0,0 +1,48 @@ +--- +name: graphql-java +description: A Java library for building GraphQL APIs. +url: https://github.com/graphql-java/graphql-java +github: graphql-java/graphql-java +--- + +See the [Getting Started tutorial](https://www.graphql-java.com/tutorials/getting-started-with-spring-boot) on the GraphQL Java website. + +Code that executes a hello world GraphQL query with `graphql-java`: + +```java +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.GraphQLSchema; +import graphql.schema.StaticDataFetcher; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + +public class HelloWorld { + + public static void main(String[] args) { + String schema = "type Query{hello: String}"; + + SchemaParser schemaParser = new SchemaParser(); + TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema); + + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world"))) + .build(); + + SchemaGenerator schemaGenerator = new SchemaGenerator(); + GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + + GraphQL build = GraphQL.newGraphQL(graphQLSchema).build(); + ExecutionResult executionResult = build.execute("{hello}"); + + System.out.println(executionResult.getData().toString()); + // Prints: {hello=world} + } +} +``` + +See [the graphql-java docs](https://www.graphql-java.com/documentation/master/getting-started) for further information. diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md b/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md new file mode 100644 index 0000000000..d131ef32be --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md @@ -0,0 +1,40 @@ +--- +name: graphql-kotlin +description: A set of libraries for running GraphQL client and server in Kotlin. +url: https://github.com/ExpediaGroup/graphql-kotlin/ +github: ExpediaGroup/graphql-kotlin +--- + +GraphQL Kotlin follows a code first approach for generating your GraphQL schemas. Given the similarities between Kotlin and GraphQL, such as the ability to define nullable/non-nullable types, a schema can be generated from Kotlin code without any separate schema specification. To create a reactive GraphQL web server add following dependency to your Gradle build file: + +```kotlin +// build.gradle.kts +implementation("com.expediagroup", "graphql-kotlin-spring-server", latestVersion) +``` + +We also need to provide a list of supported packages that can be scanned for exposing your schema objects through reflections. Add following configuration to your `application.yml` file: + +```yaml +graphql: + packages: + - "com.your.package" +``` + +With the above configuration we can now create our schema. In order to expose your queries, mutations and/or subscriptions in the GraphQL schema you simply need to implement corresponding marker interface and they will be automatically picked up by `graphql-kotlin-spring-server` auto-configuration library. + +```kotlin +@Component +class HelloWorldQuery : Query { + fun helloWorld() = "Hello World!!!" +} +``` + +This will result in a reactive GraphQL web application with following schema: + +```graphql +type Query { + helloWorld: String! +} +``` + +See [graphql-kotlin docs](https://expediagroup.github.io/graphql-kotlin/docs) for additial details. diff --git a/src/content/code/language-support/java-kotlin-android/server/jimmer.md b/src/content/code/language-support/java-kotlin-android/server/jimmer.md new file mode 100644 index 0000000000..c7ac57e176 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/jimmer.md @@ -0,0 +1,38 @@ +--- +name: Jimmer +description: A revolutionary ORM framework for both java and kotlin, it also provides specialized API for rapid development of Spring GraphQL-based applications. +url: https://babyfish-ct.github.io/jimmer/ +github: babyfish-ct/jimmer +--- + +## Introduce + +1. SpringBoot has introduced Spring GraphQL since 2.7. Jimmer provides specialized API for rapid development of Spring GraphQL-based applications. + +2. Support two APIs: Java API & kotlin API. + +3. Powerful and GraphQL friendly caching support. + +4. Faster than other popular ORM solutions, please see the bechmark: https://babyfish-ct.github.io/jimmer/docs/benchmark/ + +5. More powerful than other popular ORM solutions. + + Three aspects should be considered in ORM design: + + a. Query. + b. Update. + c. Cache. + + Each aspect is aimed at object trees with arbitrary depth rather than simple objects. This distinctive design brings convenience unmatched by other popular solutions. + +## Links + +- Youtube video: https://www.youtube.com/watch?v=Rt5zNv0YR2E + +- Documentation: https://babyfish-ct.github.io/jimmer/ + +- Project Home: https://github.com/babyfish-ct/jimmer + +- GraphQL example for Java: https://github.com/babyfish-ct/jimmer/tree/main/example/java/jimmer-sql-graphql + +- GraphQL example for Kotlin: https://github.com/babyfish-ct/jimmer/tree/main/example/kotlin/jimmer-sql-graphql-kt diff --git a/src/content/code/language-support/java-kotlin-android/server/kgraphql.md b/src/content/code/language-support/java-kotlin-android/server/kgraphql.md new file mode 100644 index 0000000000..c664f126c9 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/kgraphql.md @@ -0,0 +1,61 @@ +--- +name: KGraphQL +description: KGraphQL is a Kotlin implementation of GraphQL. It provides a rich DSL to set up the GraphQL schema. +url: https://kgraphql.io/ +github: aPureBase/KGraphQL +--- + +Here's an example on how to create a simple schema based on a kotlin data class plus a property resolver that gets applied onto your class. + +```kotlin +data class Article(val id: Int, val text: String) + +fun main() { + val schema = KGraphQL.schema { + query("article") { + resolver { id: Int?, text: String -> + Article(id ?: -1, text) + } + } + type
    { + property("fullText") { + resolver { article: Article -> + "${article.id}: ${article.text}" + } + } + } + } + + schema.execute(""" + { + article(id: 5, text: "Hello World") { + id + fullText + } + } + """).let(::println) +} +``` + +KGraphQL is using coroutines behind the scenes to provide great asynchronous performance. + +See [KGraphQL docs](https://kgraphql.io/Installation/) for more in depth usage. + +## Ktor Plugin + +KGraphQL has a Ktor plugin which gives you a fully functional GraphQL server with a single [install](https://ktor.io/docs/zfeatures.html) function call. Example below shows how to set up a GraphQL server within Ktor and it will give you a [GraphQL Playground](https://github.com/graphql/graphql-playground) out of the box by entering `localhost:8080/graphql`. + +```kotlin +fun Application.module() { + install(GraphQL) { + playground = true + schema { + query("hello") { + resolver { -> "World!" } + } + } + } +} +``` + +You can follow the [Ktor tutorial](https://kgraphql.io/Tutorials/ktor/) to set up a KGraphQL server with ktor from scratch up. diff --git a/src/content/code/language-support/java-kotlin-android/server/mp-graphql.md b/src/content/code/language-support/java-kotlin-android/server/mp-graphql.md new file mode 100644 index 0000000000..c05a9333a4 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/mp-graphql.md @@ -0,0 +1,33 @@ +--- +name: MicroProfile GraphQL +description: MP GraphQL is a code-first specification for building GraphQL applications. It uses annotations and design patterns similar to JAX-RS to enable rapid development. +url: https://github.com/eclipse/microprofile-graphql +github: eclipse/microprofile-graphql +--- + +MicroProfile GraphQL is a GraphQL server and client specification for building GraphQL applications. It's unique +annotation-based API approach enables rapid application development. Applications coded to the MP GraphQL APIs are +portable, and can be deployed into Java server runtimes such as [Open Liberty](https://openliberty.io/), +[Quarkus](https://quarkus.io/), [Helidon](https://helidon.io/) and [Wildfly](https://www.wildfly.org/). This means that +your applications can make use of other [Jakarta](https://jakarta.ee/) and [MicroProfile](https://microprofile.io/) +technologies. + +MP GraphQL features include: + +- Annotation-based APIs +- Integration with Jakarta CDI +- Type-safe and dynamic client APIs +- Exception handling +- Easy integration with Jakarta and MicroProfile technologies + +Want to get started? Check out these resouces: + +- Learn how to [create and deploy a server side app in Open Liberty](https://openliberty.io/guides/microprofile-graphql.html). +- Learn how to [create a client application in Open Liberty](https://openliberty.io/guides/graphql-client.html). +- Learn how to [create and deploy a server side app in Quarkus](https://quarkus.io/guides/smallrye-graphql). +- Quick tutorial to [build a simple sample weather application](https://dzone.com/articles/have-it-your-way-with-microprofile-graphql). + +Or these videos: + +- [Integrating GraphQL and JPA](https://www.youtube.com/watch?v=RzrkjuA3LvU) +- [Writing Queryable APIs with MP GraphQL](https://www.youtube.com/watch?v=OOnpUeblVPM) diff --git a/src/content/code/language-support/java-kotlin-android/server/netflix-dgs.md b/src/content/code/language-support/java-kotlin-android/server/netflix-dgs.md new file mode 100644 index 0000000000..9eb2dc4fb5 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/netflix-dgs.md @@ -0,0 +1,22 @@ +--- +name: Domain Graph Service (DGS) Framework +description: The DGS Framework (Domain Graph Service) is a GraphQL server framework for Spring Boot, developed by Netflix. +url: https://netflix.github.io/dgs/ +github: netflix/dgs-framework +--- + +The DGS Framework (Domain Graph Service) is a GraphQL server framework for Spring Boot, developed by Netflix. + +Features include: + +- Annotation based Spring Boot programming model +- Test framework for writing query tests as unit tests +- Gradle Code Generation plugin to create types from schema +- Easy integration with GraphQL Federation +- Integration with Spring Security +- GraphQL subscriptions (WebSockets and SSE) +- File uploads +- Error handling +- Many extension points + +See [DGS Framework Getting Started](https://netflix.github.io/dgs/getting-started/) for how to get started. diff --git a/src/content/code/language-support/java-kotlin-android/server/spring-graphql.md b/src/content/code/language-support/java-kotlin-android/server/spring-graphql.md new file mode 100644 index 0000000000..a239979514 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/spring-graphql.md @@ -0,0 +1,36 @@ +--- +name: Spring for GraphQL +description: Spring for GraphQL provides support for Spring applications built on GraphQL Java. +url: https://spring.io/projects/spring-graphql +github: spring-projects/spring-graphql +--- + +Spring for GraphQL provides support for Spring applications built on +[GraphQL Java](https://www.graphql-java.com/). See the official [Spring guide](https://spring.io/guides/gs/graphql-server/) for how to build a GraphQL service in 15 minutes. + +- It is a joint collaboration between the GraphQL Java team and Spring engineering. +- Our shared philosophy is to provide as little opinion as we can while focusing on comprehensive support for a wide range of use cases. +- It aims to be the foundation for all Spring, GraphQL applications. + +Features: + +- Server handling of GraphQL requests over HTTP, WebSocket, and RSocket. +- An annotation-based programming model where @Controller components use annotations to declare handler methods with flexible method signatures to fetch the data for specific GraphQL fields. For example: + +```java +@Controller +public class GreetingController { + + @QueryMapping + public String hello() { + return "Hello, world!"; + } + +} +``` + +- Client support for executing GraphQL requests over HTTP, WebSocket, and RSocket. +- Dedicated support for testing GraphQL requests over HTTP, WebSocket, and RSocket, as well as for testing directly against a server. + +To get started, check the Spring GraphQL starter on https://start.spring.io and the +[samples](https://docs.spring.io/spring-graphql/docs/current/reference/html/#samples) in this repository. diff --git a/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md b/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md new file mode 100644 index 0000000000..25d7b10a45 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md @@ -0,0 +1,16 @@ +--- +name: GraphQL Java Generator +description: GraphQL Java Generator is a tool that generates Java code to speed up development for Client and Server of GraphQL APIs +url: https://github.com/graphql-java-generator +github: graphql-java-generator/graphql-gradle-plugin-project +--- + +- GraphQL Java client: it generates the Java classes that call the GraphQL endpoint, and the POJO that will contain the data returned by the server. + The GraphQL endpoint can then be queried by using a simple call to a Java method (see sample below) +- GraphQL Java server: it is based on [graphql-java](https://github.com/graphql-java/graphql-java) (listed here above). It generates all the boilerplate code. + You'll only have to implement what's specific to your server, which are the joins between the GraphQL types. + GraphQL Java Generator is available as a [Maven Plugin](https://graphql-maven-plugin-project.graphql-java-generator.com/index.html). + A Gradle plugin is coming soon. + Please note that GraphQL Java Generator is an accelerator: the generated code doesn’t depend on any library specific to GraphQL Java Generator. + So, it helps you to start building application based on graphql-java. Once the code is generated, you can decide to manually edit it as any standard java application, and get rid of GraphQL Java Generator. + Of course you can, and should, according to us :), continue using GraphQL Java Generator when your projet evolves. diff --git a/src/content/code/language-support/javascript/client/apollo-client.md b/src/content/code/language-support/javascript/client/apollo-client.md new file mode 100644 index 0000000000..3d2a1193b1 --- /dev/null +++ b/src/content/code/language-support/javascript/client/apollo-client.md @@ -0,0 +1,7 @@ +--- +name: Apollo Client +description: A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript. +url: http://apollographql.com/client/ +github: apollographql/apollo-client +npm: "@apollo/client" +--- diff --git a/src/content/code/language-support/javascript/client/aws-amplify.md b/src/content/code/language-support/javascript/client/aws-amplify.md new file mode 100644 index 0000000000..cda313166a --- /dev/null +++ b/src/content/code/language-support/javascript/client/aws-amplify.md @@ -0,0 +1,7 @@ +--- +name: AWS Amplify +description: A JavaScript library for application development using cloud services, which supports GraphQL backend and React components for working with GraphQL data. +url: https://docs.amplify.aws/ +github: aws-amplify/amplify-js +npm: "aws-amplify" +--- diff --git a/src/content/code/language-support/javascript/client/gq-loader.md b/src/content/code/language-support/javascript/client/gq-loader.md new file mode 100644 index 0000000000..b1cffeb120 --- /dev/null +++ b/src/content/code/language-support/javascript/client/gq-loader.md @@ -0,0 +1,7 @@ +--- +name: gq-loader +description: A simple JavaScript GraphQL client,Let the *.gql file be used as a module through webpack loader. +url: https://github.com/Houfeng/gq-loader +github: Houfeng/gq-loader +npm: "gq-loader" +--- diff --git a/src/content/code/language-support/javascript/client/grafoo.md b/src/content/code/language-support/javascript/client/grafoo.md new file mode 100644 index 0000000000..25b1ee601d --- /dev/null +++ b/src/content/code/language-support/javascript/client/grafoo.md @@ -0,0 +1,7 @@ +--- +name: Grafoo +description: An all purpose GraphQL client with view layer integrations for multiple frameworks in just 1.6kb. +url: https://github.com/grafoojs/grafoo +github: grafoojs/grafoo +npm: "@grafoo/core" +--- diff --git a/src/content/code/language-support/javascript/client/graphql-box.md b/src/content/code/language-support/javascript/client/graphql-box.md new file mode 100644 index 0000000000..bc0b8cae12 --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-box.md @@ -0,0 +1,60 @@ +--- +name: GraphQLBox client +description: An extensible GraphQL client with modules for react, caching, request parsing, web workers, websockets and more... +url: https://github.com/badbatch/graphql-box +github: badbatch/graphql-box +npm: "@graphql-box/client" +--- + +The example below installs and initializes the GraphQLBox client with a persisted cache and debugging enabled. + +```bash +npm install @graphql-box/core @graphql-box/client @graphql-box/request-parser @graphql-box/cache-manager @graphql-box/debug-manager @graphql-box/fetch-manager @graphql-box/helpers @cachemap/core @cachemap/reaper @cachemap/indexed-db @cachemap/constants @cachemap/types +``` + +```javascript +import Cachemap from "@cachemap/core" +import indexedDB from "@cachemap/indexed-db" +import reaper from "@cachemap/reaper" +import CacheManager from "@graphql-box/cache-manager" +import Client from "@graphql-box/client" +import DebugManager from "@graphql-box/debug-manager" +import FetchManager from "@graphql-box/fetch-manager" +import RequestParser from "@graphql-box/request-parser" +import introspection from "./introspection-query" + +const requestManager = new FetchManager({ + apiUrl: "/api/graphql", + batchRequests: true, + logUrl: "/log/graphql", +}) + +const client = new Client({ + cacheManager: new CacheManager({ + cache: new Cachemap({ + name: "client-cache", + reaper: reaper({ interval: 300000 }), + store: indexedDB(/* configure */), + }), + cascadeCacheControl: true, + typeCacheDirectives: { + // Add any type specific cache control directives in the format: + // TypeName: "public, max-age=3", + }, + }), + debugManager: new DebugManager({ + environment: "client", + log: (message, data, logLevel) => { + requestManager.log(message, data, logLevel) + }, + name: "CLIENT", + performance: self.performance, + }), + requestManager, + requestParser: new RequestParser({ introspection }), +}) + +// Meanwhile... somewhere else in your code + +const { data, errors } = await client.request(queryOrMutation) +``` diff --git a/src/content/code/language-support/javascript/client/graphql-hooks.md b/src/content/code/language-support/javascript/client/graphql-hooks.md new file mode 100644 index 0000000000..b2164fc793 --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-hooks.md @@ -0,0 +1,70 @@ +--- +name: graphql-hooks +description: Minimal React hooks-first GraphQL client with a tiny bundle, SSR support and caching +url: https://github.com/nearform/graphql-hooks +github: nearform/graphql-hooks +npm: "graphql-hooks" +--- + +- 🥇 First-class hooks API +- ⚖️ _Tiny_ bundle: only 7.6kB (2.8 gzipped) +- 📄 Full SSR support: see [graphql-hooks-ssr](packages/graphql-hooks-ssr) +- 🔌 Plugin Caching: see [graphql-hooks-memcache](packages/graphql-hooks-memcache) +- 🔥 No more render props hell +- ⏳ Handle loading and error states with ease + +### Quickstart + +```bash +npm install graphql-hooks +``` + +First you'll need to create a client and wrap your app with the provider: + +```js +import { GraphQLClient, ClientContext } from "graphql-hooks" + +const client = new GraphQLClient({ + url: "/graphql", +}) + +function App() { + return ( + + {/* children */} + + ) +} +``` + +Now in your child components you can make use of `useQuery`: + +```js +import { useQuery } from "graphql-hooks" + +const HOMEPAGE_QUERY = `query HomePage($limit: Int) { + users(limit: $limit) { + id + name + } +}` + +function MyComponent() { + const { loading, error, data } = useQuery(HOMEPAGE_QUERY, { + variables: { + limit: 10, + }, + }) + + if (loading) return "Loading..." + if (error) return "Something Bad Happened" + + return ( +
      + {data.users.map(({ id, name }) => ( +
    • {name}
    • + ))} +
    + ) +} +``` diff --git a/src/content/code/language-support/javascript/client/graphql-request.md b/src/content/code/language-support/javascript/client/graphql-request.md new file mode 100644 index 0000000000..ccd74c967a --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-request.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Request +description: A simple and flexible JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native) - basically a lightweight wrapper around `fetch`. +url: https://github.com/prisma/graphql-request +github: prisma-labs/graphql-request +npm: "graphql-request" +--- diff --git a/src/content/code/language-support/javascript/client/graphql-ts-client.md b/src/content/code/language-support/javascript/client/graphql-ts-client.md new file mode 100644 index 0000000000..b6267c663a --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-ts-client.md @@ -0,0 +1,7 @@ +--- +name: graphql-ts-client +description: GraphQL client for TypeScript, automatically infers the type of the returned data according to the strongly typed query request +url: https://github.com/babyfish-ct/graphql-ts-client +github: babyfish-ct/graphql-ts-client +npm: "graphql-ts-client-api" +--- diff --git a/src/content/code/language-support/javascript/client/graphqurl.md b/src/content/code/language-support/javascript/client/graphqurl.md new file mode 100644 index 0000000000..39c08de9a9 --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphqurl.md @@ -0,0 +1,7 @@ +--- +name: graphqurl +description: curl for GraphQL with autocomplete, subscriptions and GraphiQL. Also a dead-simple universal javascript GraphQL client. +url: https://github.com/hasura/graphqurl +github: hasura/graphqurl +npm: "graphqurl" +--- diff --git a/src/content/code/language-support/javascript/client/lokka.md b/src/content/code/language-support/javascript/client/lokka.md new file mode 100644 index 0000000000..c4f689f662 --- /dev/null +++ b/src/content/code/language-support/javascript/client/lokka.md @@ -0,0 +1,7 @@ +--- +name: Lokka +description: A simple JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native). +url: https://github.com/kadirahq/lokka +github: kadirahq/lokka +npm: "lokka" +--- diff --git a/src/content/code/language-support/javascript/client/nanogql.md b/src/content/code/language-support/javascript/client/nanogql.md new file mode 100644 index 0000000000..6e1e6e6b9b --- /dev/null +++ b/src/content/code/language-support/javascript/client/nanogql.md @@ -0,0 +1,7 @@ +--- +name: nanogql +description: Tiny GraphQL client library using template strings. +url: https://github.com/yoshuawuyts/nanogql +github: choojs/nanographql +npm: "nanographql" +--- diff --git a/src/content/code/language-support/javascript/client/relay.md b/src/content/code/language-support/javascript/client/relay.md new file mode 100644 index 0000000000..353c12052e --- /dev/null +++ b/src/content/code/language-support/javascript/client/relay.md @@ -0,0 +1,15 @@ +--- +name: Relay +description: Facebook's framework for building React applications that talk to a GraphQL backend. +url: https://facebook.github.io/relay/ +github: facebook/relay +npm: "react-relay" +--- + +Relay is a JavaScript framework for building data-driven React applications. + +- **Declarative:** Never again communicate with your data store using an imperative API. Simply declare your data requirements using GraphQL and let Relay figure out how and when to fetch your data. +- **Colocation:** Queries live next to the views that rely on them, so you can easily reason about your app. Relay aggregates queries into efficient network requests to fetch only what you need. +- **Mutations:** Relay lets you mutate data on the client and server using GraphQL mutations, and offers automatic data consistency, optimistic updates, and error handling. + +[See how to use Relay in your own project](https://relay.dev/docs/en/introduction-to-relay). diff --git a/src/content/code/language-support/javascript/client/urql.md b/src/content/code/language-support/javascript/client/urql.md new file mode 100644 index 0000000000..801836bea7 --- /dev/null +++ b/src/content/code/language-support/javascript/client/urql.md @@ -0,0 +1,15 @@ +--- +name: urql +description: A highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow. +url: https://formidable.com/open-source/urql/docs/ +github: FormidableLabs/urql +npm: "@urql/core" +--- + +`urql` is a GraphQL client that exposes a set of helpers for several frameworks. +It's built to be highly customisable and versatile so you can take it from getting started with your first GraphQL project +all the way to building complex apps and experimenting with GraphQL clients. + +- Currently supports React, React Native, Preact, Svelte, and Vue, and is supported by GraphQL Code Generator. +- Logical yet simple default behaviour and document caching, and normalized caching via `@urql/exchange-graphcache` +- Fully customizable behaviour via "exchanges" (addon packages) diff --git a/src/content/code/language-support/javascript/server/apollo-server.md b/src/content/code/language-support/javascript/server/apollo-server.md new file mode 100644 index 0000000000..a41b5ee7a5 --- /dev/null +++ b/src/content/code/language-support/javascript/server/apollo-server.md @@ -0,0 +1,33 @@ +--- +name: Apollo Server +description: A GraphQL server from Apollo that works with any Node.js HTTP framework +url: https://www.apollographql.com/docs/apollo-server/ +github: apollographql/apollo-server +npm: "@apollo/server" +--- + +To run a hello world server with Apollo Server: + +```bash +npm install @apollo/server graphql +``` + +Then run `node server.js` with this code in `server.js`: + +```js +import { ApolloServer } from "@apollo/server" +import { startStandaloneServer } from "@apollo/server/standalone" + +const server = new ApolloServer({ + typeDefs, + resolvers, +}) + +const { url } = await startStandaloneServer(server) + +console.log(`🚀 Server ready at ${url}`) +``` + +Apollo Server has a built in standalone HTTP server and middleware for Express, and has an framework integration API that supports all [Node.js HTTP server frameworks and serverless environments](https://www.apollographql.com/docs/apollo-server/integrations/integration-index) via community integrations. + +Apollo Server has a [plugin API](https://www.apollographql.com/docs/apollo-server/integrations/plugins), integration with Apollo Studio, and performance and security features such as [caching](https://www.apollographql.com/docs/apollo-server/performance/caching/), [automatic persisted queries](https://www.apollographql.com/docs/apollo-server/performance/apq/), and [CSRF prevention](https://www.apollographql.com/docs/apollo-server/security/cors#preventing-cross-site-request-forgery-csrf). diff --git a/src/content/code/language-support/javascript/server/graphql-box.md b/src/content/code/language-support/javascript/server/graphql-box.md new file mode 100644 index 0000000000..f079b82ac3 --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-box.md @@ -0,0 +1,65 @@ +--- +name: GraphQLBox server +description: An extensible GraphQL server with modules for caching, request parsing, debugging, subscriptions and more... +url: https://github.com/badbatch/graphql-box +github: badbatch/graphql-box +npm: "@graphql-box/server" +--- + +The example below installs and initializes the GraphQLBox server with a persisted cache and debugging enabled. + +```bash +npm install @graphql-box/core @graphql-box/server @graphql-box/client @graphql-box/request-parser @graphql-box/cache-manager @graphql-box/debug-manager @graphql-box/execute @graphql-box/helpers @cachemap/core @cachemap/reaper @cachemap/redis @cachemap/constants @cachemap/types +``` + +```javascript +import Cachemap from "@cachemap/core" +import redis from "@cachemap/redis" +import reaper from "@cachemap/reaper" +import CacheManager from "@graphql-box/cache-manager" +import Client from "@graphql-box/client" +import DebugManager from "@graphql-box/debug-manager" +import Execute from "@graphql-box/execute" +import RequestParser from "@graphql-box/request-parser" +import Server from "@graphql-box/server" +import { makeExecutableSchema } from "@graphql-tools/schema" +import { performance } from "perf_hooks" +import { schemaResolvers, schemaTypeDefs } from "./schema" +import logger from "./logger" + +const schema = makeExecutableSchema({ + typeDefs: schemaTypeDefs, + resolvers: schemaResolvers, +}) + +const server = new Server({ + client: new Client({ + cacheManager: new CacheManager({ + cache: new Cachemap({ + name: "server-cache", + reaper: reaper({ interval: 300000 }), + store: redis(/* configure */), + }), + cascadeCacheControl: true, + typeCacheDirectives: { + // Add any type specific cache control directives in the format: + // TypeName: "public, max-age=3", + }, + }), + debugManager: new DebugManager({ + environment: "server", + log: (...args) => { + logger.log(...args) + }, + name: "SERVER", + performance, + }), + requestManager: new Execute({ schema }), + requestParser: new RequestParser({ schema }), + }), +}) + +// Meanwhile... somewhere else in your code + +app.use("api/graphql", graphqlServer.request()) +``` diff --git a/src/content/code/language-support/javascript/server/graphql-helix.md b/src/content/code/language-support/javascript/server/graphql-helix.md new file mode 100644 index 0000000000..29b528b7ed --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-helix.md @@ -0,0 +1,84 @@ +--- +name: GraphQL Helix +description: A collection of utility functions for building your own GraphQL HTTP server. You can check out [Building a GraphQL server with GraphQL Helix](https://dev.to/danielrearden/building-a-graphql-server-with-graphql-helix-2k44) on DEV for a detailed tutorial on getting started. +url: https://github.com/contra/graphql-helix +github: contra/graphql-helix +npm: "graphql-helix" +--- + +To run a hello world server with GraphQL Helix: + +```bash +npm install graphql graphql-helix express +``` + +Then run `node server.js` with this code in `server.js`: + +```js +const express = require('express') +const { + GraphQLObjectType, + GraphQLSchema, + GraphQLString +} = require('graphql'); +const { + getGraphQLParameters, + processRequest, + renderGraphiQL, + shouldRenderGraphiQL +} = require('graphql-helix'); + +const schema = new GraphQLSchema({ + query: new GraphQLObjectType({ + name: 'Query', + fields: { + hello: { + type: GraphQLString, + resolve: () => 'Hello world!', + }, + }, + }), +}); + +const app = express(); + +app.use(express.json()); + +app.use('/graphql', async (req, res) => { + const request = { + body: req.body, + headers: req.headers, + method: req.method, + query: req.query, + }; + + if (shouldRenderGraphiQL(request)) { + res.send(renderGraphiQL()); + } else { + const { operationName, query, variables } = getGraphQLParameters(request); + + const result = await processRequest({ + operationName, + query, + variables, + request, + schema, + }); + + if (result.type === 'RESPONSE') { + result.headers.forEach(({ name, value }) => res.setHeader(name, value)); + res.status(result.status); + res.json(result.payload); + } else { + // graphql-helix also supports subscriptions and incremental delivery (i.e. @defer and @stream directives) + // out of the box. See the repo for more complete examples that also implement those features. + } + } +}); + +app.listen(4000, () => + console.log('Now browse to http://localhost:4000/graphql'); +) +``` + +This example uses Express, but GraphQL Helix is framework- and runtime-agnostic -- it can run in Node, Deno and the browser. GraphQL Helix provides you with a handful of utility functions to build your own HTTP server but leaves the ultimate implementation details up to you. diff --git a/src/content/code/language-support/javascript/server/graphql-js.md b/src/content/code/language-support/javascript/server/graphql-js.md new file mode 100644 index 0000000000..43225c9d4f --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-js.md @@ -0,0 +1,33 @@ +--- +name: GraphQL.js +description: The reference implementation of the GraphQL specification, designed for running GraphQL in a Node.js environment. +url: /graphql-js/ +github: graphql/graphql-js +npm: "graphql" +--- + +To run a `GraphQL.js` hello world script from the command line: + +```bash +npm install graphql +``` + +Then run `node hello.js` with this code in `hello.js`: + +```js +var { graphql, buildSchema } = require("graphql") + +var schema = buildSchema(` + type Query { + hello: String + } +`) + +var rootValue = { hello: () => "Hello world!" } + +var source = "{ hello }" + +graphql({ schema, source, rootValue }).then(response => { + console.log(response) +}) +``` diff --git a/src/content/code/language-support/javascript/server/graphql-yoga.md b/src/content/code/language-support/javascript/server/graphql-yoga.md new file mode 100644 index 0000000000..efa6a9ca51 --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-yoga.md @@ -0,0 +1,48 @@ +--- +name: graphql-yoga +description: GraphQL Yoga is a batteries-included cross-platform GraphQL over HTTP spec-compliant GraphQL Server using Envelop and GraphQL Tools. +url: https://github.com/dotansimha/graphql-yoga +github: dotansimha/graphql-yoga +npm: "graphql-yoga" +--- + +- Built around the Fetch API `Request` & `Response` objects +- GraphQL over HTTP compliant +- Extensible GraphQL Engine powered by Envelop +- GraphQL Subscriptions over HTTP +- Handle file uploads with GraphQL +- Integrates with AWS Lambda, Cloudflare Workers, Deno, Express, Next.js, SvelteKit, and more. + +To run a hello world server with graphql-yoga: + +```bash +npm install graphql-yoga graphql +``` + +Then create a server using the `createServer` import: + +```js +import { createServer } from "http" +import { createSchema, createYoga } from "graphql-yoga" + +createServer( + createYoga({ + schema: createSchema({ + typeDefs: /* GraphQL */ ` + type Query { + hello: String + } + `, + resolvers: { + Query: { + hello: () => "Hello Hello Hello", + }, + }, + }), + }) +).listen(4000, () => { + console.info("GraphQL Yoga is listening on http://localhost:4000/graphql") +}) +``` + +Depending on your deployment target, you may need to use an additional library. See the [documentation](https://www.graphql-yoga.com/docs) for further details. diff --git a/src/content/code/language-support/javascript/server/mercurius.md b/src/content/code/language-support/javascript/server/mercurius.md new file mode 100644 index 0000000000..4f80d59c0a --- /dev/null +++ b/src/content/code/language-support/javascript/server/mercurius.md @@ -0,0 +1,45 @@ +--- +name: Mercurius +description: Mercurius is a flexible and extendible GraphQL adapter for Fastify, a blazing-fast web framework with the least overhead and a powerful plugin architecture. +url: https://mercurius.dev/ +github: mercurius-js/mercurius +npm: "mercurius" +--- + +To run an hello world script with `mercurius`: + +```bash +npm install fastify mercurius +``` + +Then run `node app.js` with this code in `app.js`: + +```js +const Fastify = require("fastify") +const mercurius = require("mercurius") + +const schema = ` + type Query { + hello(name: String): String! + } +` + +const resolvers = { + Query: { + hello: async (_, { name }) => `hello ${name || "world"}`, + }, +} + +const app = Fastify() +app.register(mercurius, { + schema, + resolvers, +}) + +app.listen(3000) + +// Call IT! +// curl 'http://localhost:3000/graphql' \ +// -H 'content-type: application/json' \ +// --data-raw '{"query":"{ hello(name:\"Marcurius\") }" }' +``` diff --git a/src/content/code/language-support/javascript/tools/brangr.md b/src/content/code/language-support/javascript/tools/brangr.md new file mode 100644 index 0000000000..dcc2f390e4 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/brangr.md @@ -0,0 +1,48 @@ +--- +name: Brangr +description: Browse Any Graph - A user-friendly viewer for any GraphQL service +url: https://github.com/networkimprov/brangr +github: networkimprov/brangr +--- + +**Brangr - *Br*owse *An*y *Gr*aph** + +- Brangr is a simple, unique tool that any web server can host + to provide a user-friendly browser/viewer for any GraphQL service (or many). + +- Brangr formats GraphQL results attractively, via a selection of + user-configurable layouts. + It lets users extract the generated HTML, and its source JSON. + It provides a clever schema browser. + It has built-in docs. + +- Brangr enables sites hosting it to present users with + a collection of pre-fab GraphQL requests, which they can edit if desired, + and let them create their own requests. + And it allows sites to define custom CSS styling for all aspects of the + formatted results. + +- Try it at the + [**public Brangr site**](https://mnmnotmail.org/bgr/brangr.html). + +**Example** + +``` +query { + heroes(_layout:{type:table}) { # _layout arg not sent to service + first + last + } +} +``` + +Brangr renders the above query as follows (though not in a quote block): + +
    heroes... + + + + + +
    First Last
    ArthurDent
    Ford Prefect
    ZaphodBeeblebrox
    +
    diff --git a/src/content/code/language-support/javascript/tools/giraphql.md b/src/content/code/language-support/javascript/tools/giraphql.md new file mode 100644 index 0000000000..f4f2c62c8b --- /dev/null +++ b/src/content/code/language-support/javascript/tools/giraphql.md @@ -0,0 +1,32 @@ +--- +name: GiraphQL +description: A plugin based schema builder for creating code-first GraphQL schemas in typescript +url: https://giraphql.com/ +github: hayes/giraphql +npm: "@giraphql/core" +--- + +GiraphQL makes writing type-safe schemas simple, and works without a code generator, +build process, or extensive manual type definitions. + +```ts +import { ApolloServer } from "apollo-server" +import SchemaBuilder from "@giraphql/core" + +const builder = new SchemaBuilder({}) + +builder.queryType({ + fields: t => ({ + hello: t.string({ + args: { + name: t.arg.string({}), + }, + resolve: (parent, { name }) => `hello, ${name || "World"}`, + }), + }), +}) + +new ApolloServer({ + schema: builder.toSchema({}), +}).listen(3000) +``` diff --git a/src/content/code/language-support/javascript/tools/graphiql.md b/src/content/code/language-support/javascript/tools/graphiql.md new file mode 100644 index 0000000000..80555a81f1 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphiql.md @@ -0,0 +1,7 @@ +--- +name: GraphiQL +description: An interactive in-browser GraphQL IDE. +url: https://github.com/graphql/graphiql +github: graphql/graphiql +npm: "graphiql" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-cli.md b/src/content/code/language-support/javascript/tools/graphql-cli.md new file mode 100644 index 0000000000..f5276a1bcd --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-cli.md @@ -0,0 +1,7 @@ +--- +name: GraphQL CLI +description: A command line tool for common GraphQL development workflows. +url: https://graphql-cli.com +github: Urigo/graphql-cli +npm: "graphql-cli" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-code-generator.md b/src/content/code/language-support/javascript/tools/graphql-code-generator.md new file mode 100644 index 0000000000..1ba0a96afb --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-code-generator.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Code Generator +description: GraphQL code generator with flexible support for custom plugins and templates like Typescript (frontend and backend), React Hooks, resolvers signatures and more. +url: https://graphql-code-generator.com +github: dotansimha/graphql-code-generator +npm: "@graphql-codegen/cli" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-config.md b/src/content/code/language-support/javascript/tools/graphql-config.md new file mode 100644 index 0000000000..05fb937d2c --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-config.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Config +description: One configuration for all your GraphQL tools (supported by most tools, editors & IDEs). +url: https://graphql-config.com +github: kamilkisiela/graphql-config +npm: "graphql-config" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-eslint.md b/src/content/code/language-support/javascript/tools/graphql-eslint.md new file mode 100644 index 0000000000..4e6e5772e7 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-eslint.md @@ -0,0 +1,7 @@ +--- +name: GraphQL-ESLint +description: GraphQL-ESLint integrates GraphQL AST in the ESLint core (as a parser). +url: https://github.com/dotansimha/graphql-eslint/ +github: dotansimha/graphql-eslint/ +npm: "@graphql-eslint/eslint-plugin" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-inspector.md b/src/content/code/language-support/javascript/tools/graphql-inspector.md new file mode 100644 index 0000000000..5a0ca86175 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-inspector.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Inspector +description: Compare schemas, validate documents, find breaking changes, find similar types, schema coverage, and more. +url: https://graphql-inspector.com/ +github: kamilkisiela/graphql-inspector +npm: "@graphql-inspector/cli" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-language-service.md b/src/content/code/language-support/javascript/tools/graphql-language-service.md new file mode 100644 index 0000000000..345dbb2b60 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-language-service.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Language Service +description: An interface for building GraphQL language services for IDEs (diagnostics, autocomplete etc). +url: https://github.com/graphql/graphql-language-service +github: graphql/graphql-language-service +npm: "graphql-language-service" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-live-query.md b/src/content/code/language-support/javascript/tools/graphql-live-query.md new file mode 100644 index 0000000000..71b6d48fd4 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-live-query.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Live Query +description: Real-Time with GraphQL for any GraphQL schema or transport. +url: https://github.com/n1ru4l/graphql-live-query +github: n1ru4l/graphql-live-query +npm: "@n1ru4l/graphql-live-query" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-mesh.md b/src/content/code/language-support/javascript/tools/graphql-mesh.md new file mode 100644 index 0000000000..323b5319be --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-mesh.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Mesh +description: GraphQL Mesh allows you to use GraphQL query language to access data in remote APIs that don't run GraphQL (and also ones that do run GraphQL). It can be used as a gateway to other services, or run as a local GraphQL schema that aggregates data from remote APIs. +url: https://graphql-mesh.com +github: Urigo/graphql-mesh +npm: "@graphql-mesh/cli" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-middleware.md b/src/content/code/language-support/javascript/tools/graphql-middleware.md new file mode 100644 index 0000000000..da383e75a9 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-middleware.md @@ -0,0 +1,65 @@ +--- +name: GraphQLMiddleware +description: Split up your GraphQL resolvers in middleware functions. +url: https://github.com/maticzav/graphql-middleware +github: maticzav/graphql-middleware +npm: "graphql-middleware" +--- + +GraphQL Middleware is a schema wrapper which allows you to manage additional functionality across multiple resolvers efficiently. + +## Features + +💡 Easy to use: An intuitive, yet familiar API that you will pick up in a second. +💪 Powerful: Allows complete control over your resolvers (Before, After). +🌈 Compatible: Works with any GraphQL Schema. + +## Example + +```ts +const { ApolloServer } = require("apollo-server") +const { makeExecutableSchema } = require("@graphql-tools/schema") + +const typeDefs = ` +type Query { + hello(name: String): String + bye(name: String): String +} +` +const resolvers = { + Query: { + hello: (root, args, context, info) => { + console.log(`3. resolver: hello`) + return `Hello ${args.name ? args.name : "world"}!` + }, + bye: (root, args, context, info) => { + console.log(`3. resolver: bye`) + return `Bye ${args.name ? args.name : "world"}!` + }, + }, +} + +const logInput = async (resolve, root, args, context, info) => { + console.log(`1. logInput: ${JSON.stringify(args)}`) + const result = await resolve(root, args, context, info) + console.log(`5. logInput`) + return result +} + +const logResult = async (resolve, root, args, context, info) => { + console.log(`2. logResult`) + const result = await resolve(root, args, context, info) + console.log(`4. logResult: ${JSON.stringify(result)}`) + return result +} + +const schema = makeExecutableSchema({ typeDefs, resolvers }) + +const schemaWithMiddleware = applyMiddleware(schema, logInput, logResult) + +const server = new ApolloServer({ + schema: schemaWithMiddleware, +}) + +await server.listen({ port: 8008 }) +``` diff --git a/src/content/code/language-support/javascript/tools/graphql-modules.md b/src/content/code/language-support/javascript/tools/graphql-modules.md new file mode 100644 index 0000000000..d0d6270e44 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-modules.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Modules +description: GraphQL Modules lets you separate your backend implementation to small, reusable, easy-to-implement and easy-to-test pieces. +url: https://graphql-modules.com +github: Urigo/graphql-modules +npm: "graphql-modules" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-scalars.md b/src/content/code/language-support/javascript/tools/graphql-scalars.md new file mode 100644 index 0000000000..f10142b5cd --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-scalars.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Scalars +description: A library of custom GraphQL scalar types for creating precise, type-safe GraphQL schemas. +url: https://github.com/Urigo/graphql-scalars +github: Urigo/graphql-scalars +npm: "graphql-scalars" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-shield.md b/src/content/code/language-support/javascript/tools/graphql-shield.md new file mode 100644 index 0000000000..43a14952c5 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-shield.md @@ -0,0 +1,60 @@ +--- +name: GraphQLShield +description: A GraphQL tool to ease the creation of permission layer. +url: https://github.com/maticzav/graphql-shield +github: maticzav/graphql-shield +npm: "graphql-shield" +--- + +GraphQL Shield helps you create a permission layer for your application. Using an intuitive rule-API, you'll gain the power of the shield engine on every request and reduce the load time of every request with smart caching. This way you can make sure your application will remain quick, and no internal data will be exposed. + +```ts +import { rule, shield, and, or, not } from "graphql-shield" + +// Rules + +const isAuthenticated = rule({ cache: "contextual" })( + async (parent, args, ctx, info) => { + return ctx.user !== null + } +) + +const isAdmin = rule({ cache: "contextual" })( + async (parent, args, ctx, info) => { + return ctx.user.role === "admin" + } +) + +const isEditor = rule({ cache: "contextual" })( + async (parent, args, ctx, info) => { + return ctx.user.role === "editor" + } +) + +// Permissions + +const permissions = shield({ + Query: { + frontPage: not(isAuthenticated), + fruits: and(isAuthenticated, or(isAdmin, isEditor)), + customers: and(isAuthenticated, isAdmin), + }, + Mutation: { + addFruitToBasket: isAuthenticated, + }, + Fruit: isAuthenticated, + Customer: isAdmin, +}) + +// Server + +const server = new GraphQLServer({ + typeDefs, + resolvers, + middlewares: [permissions], + context: req => ({ + ...req, + user: getUser(req), + }), +}) +``` diff --git a/src/content/code/language-support/javascript/tools/graphql-sse.md b/src/content/code/language-support/javascript/tools/graphql-sse.md new file mode 100644 index 0000000000..8e5a18b26a --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-sse.md @@ -0,0 +1,7 @@ +--- +name: GraphQL-SSE +description: Zero-dependency, HTTP/1 safe, simple, GraphQL over Server-Sent Events Protocol server and client. +url: https://github.com/enisdenjo/graphql-sse +github: enisdenjo/graphql-sse +npm: "graphql-sse" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-tools.md b/src/content/code/language-support/javascript/tools/graphql-tools.md new file mode 100644 index 0000000000..af2e896ec7 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-tools.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Tools +description: A set of utils for faster development of GraphQL tools (Schema and documents loading, Schema merging and more). +url: https://graphql-tools.com +github: ardatan/graphql-tools +npm: "graphql-tools" +--- diff --git a/src/content/code/language-support/javascript/tools/graphql-ws.md b/src/content/code/language-support/javascript/tools/graphql-ws.md new file mode 100644 index 0000000000..c5ecd502ab --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-ws.md @@ -0,0 +1,7 @@ +--- +name: GraphQL-WS +description: Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client. +url: https://github.com/enisdenjo/graphql-ws +github: enisdenjo/graphql-ws +npm: "graphql-ws" +--- diff --git a/src/content/code/language-support/javascript/tools/microfiber.md b/src/content/code/language-support/javascript/tools/microfiber.md new file mode 100644 index 0000000000..1cb3f2e6ac --- /dev/null +++ b/src/content/code/language-support/javascript/tools/microfiber.md @@ -0,0 +1,33 @@ +--- +name: Microfiber +description: A library to query and manipulate GraphQL Introspection Query results. +url: https://github.com/anvilco/graphql-introspection-tools +github: anvilco/graphql-introspection-tools +npm: "microfiber" +--- + +Microfiber is a JavaScript library that allows: + +- Digging through your Introspection Query Results for a specific Query, Mutation, Type, Field, Argument or Subscription. +- Removing a specific Query, Mutation, Type, Field/InputField, Argument or Subscription from your Introspection Query Results. +- Removing Queries, Mutations, Fields/InputFields or Arguments that refer to Type that does not exist in - or has been removed from - your Introspection Query Results. + +```sh +npm install microfiber +# OR +yarn add microfiber +``` + +Then in JS: + +```js +import { Microfiber } from 'microfiber' + +const introspectionQueryResults = {...} + +const microfiber = new Microfiber(introspectionQueryResults) + +// ...do some things to your schema with `microfiber` + +const cleanedIntrospectonQueryResults = microfiber.getResponse() +``` diff --git a/src/content/code/language-support/javascript/tools/postgraphile.md b/src/content/code/language-support/javascript/tools/postgraphile.md new file mode 100644 index 0000000000..2d25254918 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/postgraphile.md @@ -0,0 +1,7 @@ +--- +name: Postgraphile +description: builds a powerful, extensible and performant GraphQL API from a PostgreSQL schema in seconds; saving you weeks if not months of development time. +url: https://www.graphile.org/postgraphile +github: graphile/postgraphile +npm: "postgraphile" +--- diff --git a/src/content/code/language-support/javascript/tools/sofa.md b/src/content/code/language-support/javascript/tools/sofa.md new file mode 100644 index 0000000000..4be7ae4ef3 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/sofa.md @@ -0,0 +1,7 @@ +--- +name: SOFA +description: Generate REST API from your GraphQL API. +url: https://sofa-api.com/ +github: Urigo/SOFA +npm: "sofa-api" +--- diff --git a/src/content/code/language-support/javascript/tools/spectaql.md b/src/content/code/language-support/javascript/tools/spectaql.md new file mode 100644 index 0000000000..2d1c261e73 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/spectaql.md @@ -0,0 +1,26 @@ +--- +name: SpectaQL +description: SpectaQL generates static HTML documentation from a GraphQL schema. +url: https://github.com/anvilco/spectaql +github: anvilco/spectaql +npm: "spectaql" +--- + +SpectaQL is a Node.js library that generates static documentation for a GraphQL schema using a variety of options: + +- From a live endpoint using the introspection query. +- From a file containing an introspection query result. +- From a file, files or glob leading to the schema definitions in SDL. + +Out of the box, SpectaQL generates a single 3-column HTML page and lets you choose between a couple built-in themes. A main goal of the project is to be easily and extremely customizable--it is themeable and just about everything can be overridden or customized. + +```sh +npm install --dev spectaql +# OR +yarn add -D spectaql + +# Then generate your docs +npm run spectaql my-config.yml +# OR +yarn spectaql my-config.yml +``` diff --git a/src/content/code/language-support/julia/client/diana-jl.md b/src/content/code/language-support/julia/client/diana-jl.md new file mode 100644 index 0000000000..2746976260 --- /dev/null +++ b/src/content/code/language-support/julia/client/diana-jl.md @@ -0,0 +1,6 @@ +--- +name: Diana.jl +description: A Julia GraphQL server implementation. +url: https://github.com/neomatrixcode/Diana.jl +github: neomatrixcode/Diana.jl +--- diff --git a/src/content/code/language-support/julia/client/graphqlclient-jl.md b/src/content/code/language-support/julia/client/graphqlclient-jl.md new file mode 100644 index 0000000000..a0062c6660 --- /dev/null +++ b/src/content/code/language-support/julia/client/graphqlclient-jl.md @@ -0,0 +1,51 @@ +--- +name: GraphQLClient.jl +description: A Julia GraphQL client for seamless integration with a GraphQL server +url: https://github.com/DeloitteDigitalAPAC/GraphQLClient.jl +github: DeloitteDigitalAPAC/GraphQLClient.jl +--- + +- **Querying**, **mutating** and **subscribing** without manual writing of query strings (unless you want to!) +- Deserializing responses directly into Julia types +- **Construction of Julia types** from GraphQL objects +- Using **introspection** to help with querying + +### Quickstart + +Install with Julia's package manager + +``` +using Pkg; Pkg.add("GraphQLClient") +using GraphQLClient +``` + +Connect to a server + +```julia +client = Client("https://countries.trevorblades.com") +``` + +Build a Julia type from a GraphQL object + +```julia +Country = GraphQLClient.introspect_object(client, "Country") +``` + +And query the server, deserializing the response into this new type + +```julia +response = query(client, "countries", Vector{Country}, output_fields="name") +``` + +Alternatively write the query string manually + +```julia +query_string = """ + { + countries{ + name + } +}""" + +response = GraphQLClient.execute(client, query_string) +``` diff --git a/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md b/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md new file mode 100644 index 0000000000..c8032f79c3 --- /dev/null +++ b/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md @@ -0,0 +1,6 @@ +--- +name: ocaml-graphql-server +description: GraphQL server library for OCaml and Reason +url: https://github.com/andreas/ocaml-graphql-server +github: andreas/ocaml-graphql-server +--- diff --git a/src/content/code/language-support/perl/server/graphql-perl.md b/src/content/code/language-support/perl/server/graphql-perl.md new file mode 100644 index 0000000000..b6e627a10e --- /dev/null +++ b/src/content/code/language-support/perl/server/graphql-perl.md @@ -0,0 +1,14 @@ +--- +name: graphql-perl +description: A Perl port of GraphQL reference implementation +url: https://github.com/graphql-perl/graphql-perl +github: graphql-perl/graphql-perl +--- + +- [MetaCPAN documentation](https://metacpan.org/pod/GraphQL) + + - [Mojolicious-Plugin-GraphQL](https://github.com/graphql-perl/Mojolicious-Plugin-GraphQL) - connect your GraphQL service to a Mojolicious app + + - [GraphQL-Plugin-Convert-DBIC](https://github.com/graphql-perl/GraphQL-Plugin-Convert-DBIC) - automatically connect your DBIx::Class schema to GraphQL + + - [GraphQL-Plugin-Convert-OpenAPI](https://github.com/graphql-perl/GraphQL-Plugin-Convert-OpenAPI) - automatically connect any OpenAPI service (either local Mojolicious one, or remote) to GraphQL diff --git a/src/content/code/language-support/php/server/api-platform.md b/src/content/code/language-support/php/server/api-platform.md new file mode 100644 index 0000000000..533db54b6c --- /dev/null +++ b/src/content/code/language-support/php/server/api-platform.md @@ -0,0 +1,41 @@ +--- +name: API Platform +description: API Platform is a fully-featured, flexible and extensible API framework built on top of Symfony. +url: https://api-platform.com +github: api-platform/api-platform +--- + +The following class is enough to create both a Relay-compatible GraphQL server and a hypermedia API supporting modern REST formats (JSON-LD, JSONAPI...): + +```php +__('Representation of a user', 'users'); + } + + public function getID(object $user) + { + return $user->ID; + } + + public function getTypeDataLoaderClass(): string + { + return UserTypeDataLoader::class; + } +} +``` + +Please notice how the `TypeResolver` does not indicate which are its fields. It also does not load the objects from the database, but instead delegates this task to a `TypeDataLoader`. + +Adding fields to the type is done via a `FieldResolver`: + +```php +class UserFieldResolver extends AbstractDBDataFieldResolver +{ + public static function getClassesToAttachTo(): array + { + return [ + UserTypeResolver::class, + ]; + } + + public static function getFieldNamesToResolve(): array + { + return [ + 'username', + 'email', + 'url', + ]; + } + + public function getSchemaFieldDescription( + TypeResolverInterface $typeResolver, + string $fieldName + ): ?string { + $translationAPI = TranslationAPIFacade::getInstance(); + $descriptions = [ + 'username' => $translationAPI->__("User's username handle", "users"), + 'email' => $translationAPI->__("User's email", "users"), + 'url' => $translationAPI->__("URL of the user's profile in the website", "users"), + ]; + return $descriptions[$fieldName]; + } + + public function getSchemaFieldType( + TypeResolverInterface $typeResolver, + string $fieldName + ): ?string { + $types = [ + 'username' => SchemaDefinition::TYPE_STRING, + 'email' => SchemaDefinition::TYPE_EMAIL, + 'url' => SchemaDefinition::TYPE_URL, + ]; + return $types[$fieldName]; + } + + public function resolveValue( + TypeResolverInterface $typeResolver, + object $user, + string $fieldName, + array $fieldArgs = [] + ) { + switch ($fieldName) { + case 'username': + return $user->user_login; + + case 'email': + return $user->user_email; + + case 'url': + $userService = UserServiceFacade::getInstance(); + return $userService->getUserProfileURL($user->ID); + } + + return null; + } +} +``` + +The definition of a field for the GraphQL schema, and its resolution, is split into a multitude of functions from the `FieldResolver`: + +- `getSchemaFieldDescription` +- `getSchemaFieldType` +- `resolveValue` +- `getSchemaFieldArgs` +- `isSchemaFieldResponseNonNullable` +- `getImplementedInterfaceClasses` +- `resolveFieldTypeResolverClass` +- `resolveFieldMutationResolverClass` + +This code is more legible than if all functionality is satisfied through a single function, or through a configuration array, making it easier to implement and maintain the resolvers. diff --git a/src/content/code/language-support/php/server/graphql-php.md b/src/content/code/language-support/php/server/graphql-php.md new file mode 100644 index 0000000000..8e79239ffc --- /dev/null +++ b/src/content/code/language-support/php/server/graphql-php.md @@ -0,0 +1,6 @@ +--- +name: graphql-php +description: A PHP port of GraphQL reference implementation +url: https://github.com/webonyx/graphql-php +github: webonyx/graphql-php +--- diff --git a/src/content/code/language-support/php/server/graphql-relay-php.md b/src/content/code/language-support/php/server/graphql-relay-php.md new file mode 100644 index 0000000000..e0d3c31ee9 --- /dev/null +++ b/src/content/code/language-support/php/server/graphql-relay-php.md @@ -0,0 +1,6 @@ +--- +name: graphql-relay-php +description: A library to help construct a graphql-php server supporting react-relay. +url: https://github.com/ivome/graphql-relay-php +github: ivome/graphql-relay-php +--- diff --git a/src/content/code/language-support/php/server/graphqlbundle.md b/src/content/code/language-support/php/server/graphqlbundle.md new file mode 100644 index 0000000000..6f22b64677 --- /dev/null +++ b/src/content/code/language-support/php/server/graphqlbundle.md @@ -0,0 +1,6 @@ +--- +name: GraphQLBundle +description: A GraphQL server for Symfony +url: https://github.com/overblog/GraphQLBundle +github: overblog/GraphQLBundle +--- diff --git a/src/content/code/language-support/php/server/graphqlite.md b/src/content/code/language-support/php/server/graphqlite.md new file mode 100644 index 0000000000..e52d94638b --- /dev/null +++ b/src/content/code/language-support/php/server/graphqlite.md @@ -0,0 +1,39 @@ +--- +name: GraphQLite +description: GraphQLite is a library that offers an annotations-based syntax for GraphQL schema definition. +url: https://graphqlite.thecodingmachine.io +github: thecodingmachine/graphqlite +--- + +It is framework agnostic with bindings available for Symfony and Laravel. +This code declares a "product" query and a "Product" Type: + +```php +class ProductController +{ + /** + * @Query() + */ + public function product(string $id): Product + { + // Some code that looks for a product and returns it. + } +} + +/** + * @Type() + */ +class Product +{ + /** + * @Field() + */ + public function getName(): string + { + return $this->name; + } + // ... +} +``` + +Other GraphQLite features include validation, security, error handling, loading via data-loader pattern... diff --git a/src/content/code/language-support/php/server/lighthouse.md b/src/content/code/language-support/php/server/lighthouse.md new file mode 100644 index 0000000000..d7b240239e --- /dev/null +++ b/src/content/code/language-support/php/server/lighthouse.md @@ -0,0 +1,6 @@ +--- +name: Lighthouse +description: A GraphQL server for Laravel +url: https://github.com/nuwave/lighthouse +github: nuwave/lighthouse +--- diff --git a/src/content/code/language-support/php/server/railt.md b/src/content/code/language-support/php/server/railt.md new file mode 100644 index 0000000000..12f871d955 --- /dev/null +++ b/src/content/code/language-support/php/server/railt.md @@ -0,0 +1,6 @@ +--- +name: Railt +description: A PHP GraphQL Framework. +url: https://github.com/railt/railt +github: railt/railt +--- diff --git a/src/content/code/language-support/php/server/serge.md b/src/content/code/language-support/php/server/serge.md new file mode 100644 index 0000000000..b1ba50b83c --- /dev/null +++ b/src/content/code/language-support/php/server/serge.md @@ -0,0 +1,6 @@ +--- +name: serge +description: Use GraphQL to define your Domain Model for CQRS/ES and let serge generate code to handle GraphQL requests. +url: https://github.com/kepawni/serge +github: kepawni/serge +--- diff --git a/src/content/code/language-support/php/server/siler.md b/src/content/code/language-support/php/server/siler.md new file mode 100644 index 0000000000..5abe714068 --- /dev/null +++ b/src/content/code/language-support/php/server/siler.md @@ -0,0 +1,44 @@ +--- +name: Siler +description: Siler is a PHP library powered with high-level abstractions to work with GraphQL. +url: https://siler.leocavalcante.com/graphql/ +github: leocavalcante/siler +--- + +To run a Siler hello world script: + +```graphql +type Query { + hello: String +} +``` + +```php + [ + 'hello' => 'world', + ], +]; +$schema = Graphqlschema($typeDefs, $resolvers); + +echo "Server running at http://127.0.0.1:8080"; + +Httpserver(Graphqlpsr7($schema), function (Throwable $err) { + var_dump($err); + return Diactorosjson([ + 'error' => true, + 'message' => $err->getMessage(), + ]); +})()->run(); +``` + +It also provides functionality for the construction of a WebSocket Subscriptions Server based on how Apollo works. diff --git a/src/content/code/language-support/php/server/wpgraphql.md b/src/content/code/language-support/php/server/wpgraphql.md new file mode 100644 index 0000000000..b6d6a433f9 --- /dev/null +++ b/src/content/code/language-support/php/server/wpgraphql.md @@ -0,0 +1,6 @@ +--- +name: WPGraphQL +description: A free, open-source WordPress plugin that provides an extendable GraphQL schema and API for any WordPress site +url: https://github.com/wp-graphql/wp-graphql +github: wp-graphql/wp-graphql +--- diff --git a/src/content/code/language-support/python/client/ariadne-codegen.md b/src/content/code/language-support/python/client/ariadne-codegen.md new file mode 100644 index 0000000000..f962b746ff --- /dev/null +++ b/src/content/code/language-support/python/client/ariadne-codegen.md @@ -0,0 +1,55 @@ +--- +name: Ariadne Codegen +description: Generate fully typed Python GraphQL client from any schema and queries. +url: https://github.com/mirumee/ariadne-codegen +github: mirumee/ariadne-codegen +--- + +Install Ariadne Codegen: + +``` +$ pip install ariadne-codegen +``` + +Create `queries.graphql` file: + +```graphql +mutation CreateToken($username: String!, $password: String!) { + createToken(username: $username, password: $password) { + token + errors { + field + message + } + } +} +``` + +Add `[ariadne-codegen]` section to your `pyproject.toml`: + +``` +[ariadne-codegen] +queries_path = "queries.graphql" +remote_schema_url = "http://example.com/graphql/" +``` + +Generate client: + +``` +$ ariadne-codegen +``` + +And use it in your Python projects: + +```python +from graphql_client import Client + +with Client("http://example.com/graphql/") as client: + result = client.create_token(username="Admin", password="Example123) + + if result.errors: + error = result.errors[0] + raise ValidationError({error.field: error.message}) + + auth_token = result.token +``` diff --git a/src/content/code/language-support/python/client/gql.md b/src/content/code/language-support/python/client/gql.md new file mode 100644 index 0000000000..70f49af635 --- /dev/null +++ b/src/content/code/language-support/python/client/gql.md @@ -0,0 +1,6 @@ +--- +name: GQL +description: A GraphQL client in Python. +url: https://github.com/graphql-python/gql +github: graphql-python/gql +--- diff --git a/src/content/code/language-support/python/client/graphql-query.md b/src/content/code/language-support/python/client/graphql-query.md new file mode 100644 index 0000000000..3f1d4e80b9 --- /dev/null +++ b/src/content/code/language-support/python/client/graphql-query.md @@ -0,0 +1,103 @@ +--- +name: graphql-query +description: Complete GraphQL query string generation for python. +url: https://denisart.github.io/graphql-query/ +github: denisart/graphql-query +--- + +**graphql_query** is complete GraphQL query string builder for python. With **graphql_query** +you can The documentation for **graphql_query** can be found at [https://denisart.github.io/graphql-query/](https://denisart.github.io/graphql-query/). + +``` +$ pip install graphql_query +``` + +Code for the simple query + +```graphql +{ + hero { + name + } +} +``` + +it is + +```python +from graphql_query import Operation, Query + +hero = Query(name="hero", fields=["name"]) +operation = Operation(type="query", queries=[hero]) + +print(operation.render()) +""" +query { + hero { + name + } +} +""" +``` + +For generation of the following query + +```graphql +query Hero($episode: Episode, $withFriends: Boolean!) { + hero(episode: $episode) { + name + friends @include(if: $withFriends) { + name + } + } +} +``` + +we have + +```python +from graphql_query import Argument, Directive, Field, Operation, Query, Variable + +episode = Variable(name="episode", type="Episode") +withFriends = Variable(name="withFriends", type="Boolean!") + +arg_episode = Argument(name="episode", value=episode) +arg_if = Argument(name="if", value=withFriends) + +hero = Query( + name="hero", + arguments=[arg_episode], + fields=[ + "name", + Field( + name="friends", + fields=["name"], + directives=[Directive(name="include", arguments=[arg_if])] + ) + ] +) +operation = Operation( + type="query", + name="Hero", + variables=[episode, withFriends], + queries=[hero] +) +print(operation.render()) +""" +query Hero( + $episode: Episode + $withFriends: Boolean! +) { + hero( + episode: $episode + ) { + name + friends @include( + if: $withFriends + ) { + name + } + } +} +""" +``` diff --git a/src/content/code/language-support/python/client/python-graphql-client.md b/src/content/code/language-support/python/client/python-graphql-client.md new file mode 100644 index 0000000000..eb0c7979ef --- /dev/null +++ b/src/content/code/language-support/python/client/python-graphql-client.md @@ -0,0 +1,6 @@ +--- +name: python-graphql-client +description: Simple GraphQL client for Python 2.7+. +url: https://github.com/prisma/python-graphql-client +github: prisma-labs/python-graphql-client +--- diff --git a/src/content/code/language-support/python/client/qlient.md b/src/content/code/language-support/python/client/qlient.md new file mode 100644 index 0000000000..8ec8b4ded9 --- /dev/null +++ b/src/content/code/language-support/python/client/qlient.md @@ -0,0 +1,40 @@ +--- +name: Qlient +description: A fast and modern graphql client designed with simplicity in mind. +url: https://github.com/qlient-org/python-qlient +github: qlient-org/python-qlient +--- + +Here's an example of a qlient hello world. + +first install the library: + +```bash +pip install qlient +``` + +Create a `swapi_client_example.py` file with this content: + +```python +from qlient.http import HTTPClient, GraphQLResponse + +client = HTTPClient("https://swapi-graphql.netlify.app/.netlify/functions/index") + +res: GraphQLResponse = client.query.film( + # swapi graphql input fields + id="ZmlsbXM6MQ==", + + # qlient specific + _fields=["id", "title", "episodeID"] +) + +print(res.request.query) # query film($id: ID) { film(id: $id) { id title episodeID } } +print(res.request.variables) # {'id': 'ZmlsbXM6MQ=='} +print(res.data) # {'film': {'id': 'ZmlsbXM6MQ==', 'title': 'A New Hope', 'episodeID': 4}} +``` + +Close the file and run it using python: + +```bash +python swapi_client_example.py +``` diff --git a/src/content/code/language-support/python/client/sgqlc.md b/src/content/code/language-support/python/client/sgqlc.md new file mode 100644 index 0000000000..897bb840d4 --- /dev/null +++ b/src/content/code/language-support/python/client/sgqlc.md @@ -0,0 +1,6 @@ +--- +name: sgqlc +description: A simple Python GraphQL client. Supports generating code generation for types defined in a GraphQL schema. +url: https://github.com/profusion/sgqlc +github: profusion/sgqlc +--- diff --git a/src/content/code/language-support/python/server/ariadne.md b/src/content/code/language-support/python/server/ariadne.md new file mode 100644 index 0000000000..92e9654527 --- /dev/null +++ b/src/content/code/language-support/python/server/ariadne.md @@ -0,0 +1,44 @@ +--- +name: Ariadne +description: Ariadne is a Python library for implementing GraphQL servers using schema-first approach. It supports both synchronous and asynchronous query execution, ships with batteries included for common GraphQL server problems like query cost validation or performance tracing and has simple API that is easy to extend or replace. +url: https://ariadnegraphql.org +github: mirumee/ariadne +--- + +Ariadne can be installed with pip: + +```bash +$ pip install ariadne +``` + +Minimal "Hello world" server example: + +```python +from ariadne import ObjectType, gql, make_executable_schema +from ariadne.asgi import GraphQL + +type_defs = gql( + """ + type Query { + hello: String! + } + """ +) + +query_type = ObjectType("Query") + +@query_type.field("hello") +def resolve_hello(*_): + return "Hello world!" + +schema = make_executable_schema(type_defs, query_type) + +app = GraphQL(schema, debug=True) +``` + +Run the server with uvicorn: + +``` +$ pip install uvicorn +$ uvicorn example:app +``` diff --git a/src/content/code/language-support/python/server/django-graphbox.md b/src/content/code/language-support/python/server/django-graphbox.md new file mode 100644 index 0000000000..3dcfa2cccc --- /dev/null +++ b/src/content/code/language-support/python/server/django-graphbox.md @@ -0,0 +1,94 @@ +--- +name: Django Graphbox +description: Package for easy building a GraphQL API with basic CRUD operations for Django models. +url: https://90horasporsemana.com/graphbox/ +github: yefeza/django-graphbox +--- + +A Quickstart for Django Graphbox: + +1. Install the package: + +```bash +pip install django-graphbox +``` + +2. Create a new Django project: + +```bash +django-admin startproject myproject +``` + +3. Create a new Django app: + +```bash +cd myproject +python manage.py startapp myapp +``` + +4. Define your Django models in `myapp/models.py`: + +```python +from django.db import models + +class MyModel(models.Model): + name = models.CharField(max_length=100) +``` + +5. Create and run migrations: + +```bash +python manage.py makemigrations +python manage.py migrate +``` + +6. Configure and Build your GraphQL Schema in `myapp/schema.py`: + +```python +from django_graphbox.builder import SchemaBuilder +from myapp.models import MyModel + +builder = SchemaBuilder() +builder.add_model(MyModel) + +query_class = builder.build_schema_query() +mutation_class = builder.build_schema_mutation() +``` + +7. Create a main Schema in `myproject/schema.py` (In this main schema you can add your own queries and mutations): + +```python +import graphene +from myapp.schema import query_class, mutation_class + +class Query(query_class, graphene.ObjectType): + pass + +class Mutation(mutation_class, graphene.ObjectType): + pass + +schema = graphene.Schema(query=Query, mutation=Mutation) +``` + +8. Add the GraphQL view to your `myproject/urls.py`: + +```python +from django.urls import path +from graphene_file_upload.django import FileUploadGraphQLView +from django.views.decorators.csrf import csrf_exempt +from myproject.schema import schema + +urlpatterns = [ + path('graphql/', csrf_exempt(FileUploadGraphQLView.as_view(graphiql=True, schema=schema))), +] +``` + +9. Run the server: + +```bash +python manage.py runserver +``` + +10. Open the GraphiQL interface at `http://localhost:8000/graphql/` and start querying your API! + +You can find advanced examples with authentication, filters, validations and more on github or pypi. diff --git a/src/content/code/language-support/python/server/graphene.md b/src/content/code/language-support/python/server/graphene.md new file mode 100644 index 0000000000..772aaabc70 --- /dev/null +++ b/src/content/code/language-support/python/server/graphene.md @@ -0,0 +1,30 @@ +--- +name: Graphene +description: A Python library for building GraphQL APIs. +url: http://graphene-python.org/ +github: graphql-python/graphene +--- + +To run a Graphene hello world script: + +```bash +pip install graphene +``` + +Then run `python hello.py` with this code in `hello.py`: + +```python +import graphene + +class Query(graphene.ObjectType): + hello = graphene.String(name=graphene.String(default_value="World")) + + def resolve_hello(self, info, name): + return 'Hello ' + name + +schema = graphene.Schema(query=Query) +result = schema.execute('{ hello }') +print(result.data['hello']) # "Hello World" +``` + +There are also nice bindings for [Relay](https://facebook.github.io/relay/), Django, SQLAlchemy, and Google App Engine. diff --git a/src/content/code/language-support/python/server/strawberry.md b/src/content/code/language-support/python/server/strawberry.md new file mode 100644 index 0000000000..b12260ed80 --- /dev/null +++ b/src/content/code/language-support/python/server/strawberry.md @@ -0,0 +1,32 @@ +--- +name: Strawberry +description: Strawberry is a Python library for implementing code first GraphQL servers using modern Python features like type hints. +url: https://strawberry.rocks +github: strawberry-graphql/strawberry +--- + +Here's an example of a Strawberry hello world, first install the library: + +```bash +pip install strawberry-graphql +``` + +Create an `app.py` file with this content: + +```python +import strawberry + +@strawberry.type +class Query: + @strawberry.field + def hello(self, name: str = "World") -> str: + return f"Hello {name}" + +schema = strawberry.Schema(query=Query) +``` + +Then run `strawberry server app` and you will have a basic schema server +running on `http://localhost:8000/`. + +Strawberry also has views for ASGI, Flask and Django and provides utilities +like dataloaders and tracing. diff --git a/src/content/code/language-support/python/server/tartiflette.md b/src/content/code/language-support/python/server/tartiflette.md new file mode 100644 index 0000000000..2554612c79 --- /dev/null +++ b/src/content/code/language-support/python/server/tartiflette.md @@ -0,0 +1,38 @@ +--- +name: Tartiflette +description: A Python 3.6+ _(asyncio)_ library for building GraphQL APIs. +url: https://tartiflette.io +github: tartiflette/tartiflette +--- + +To run a tartiflette hello world script: + +```bash +pip install tartiflette +``` + +Then run `python hello.py` with this code in `hello.py`: + +```python +import asyncio +from tartiflette import Engine, Resolver +@Resolver("Query.hello") +async def resolver_hello(parent, args, ctx, info): + return "hello " + args["name"] +async def run(): + tftt_engine = Engine(""" + type Query { + hello(name: String): String + } + """) + result = await tftt_engine.execute( + query='query { hello(name: "Chuck") }' + ) + print(result) + # {'data': {'hello': 'hello Chuck'}} +if __name__ == "__main__": + loop = asyncio.get_event_loop() + loop.run_until_complete(run()) +``` + +There is also a nice [HTTP wrapper](https://github.com/dailymotion/tartiflette-aiohttp). diff --git a/src/content/code/language-support/r/server/ghql.md b/src/content/code/language-support/r/server/ghql.md new file mode 100644 index 0000000000..e22c9464b3 --- /dev/null +++ b/src/content/code/language-support/r/server/ghql.md @@ -0,0 +1,6 @@ +--- +name: ghql +description: General purpose GraphQL R client +url: https://github.com/ropensci/ghql +github: ropensci/ghql +--- diff --git a/src/content/code/language-support/ruby/server/agoo.md b/src/content/code/language-support/ruby/server/agoo.md new file mode 100644 index 0000000000..be7b315dd5 --- /dev/null +++ b/src/content/code/language-support/ruby/server/agoo.md @@ -0,0 +1,37 @@ +--- +name: Agoo +description: A high performance web server with support for GraphQL. Agoo strives for a simple, easy to use API for GraphQL. +url: https://github.com/ohler55/agoo +github: ohler55/agoo +gem: agoo +--- + +```ruby +require 'agoo' + +class Query + def hello + 'hello' + end +end + +class Schema + attr_reader :query + + def initialize + @query = Query.new() + end +end + +Agoo::Server.init(6464, 'root', thread_count: 1, graphql: '/graphql') +Agoo::Server.start() +Agoo::GraphQL.schema(Schema.new) { + Agoo::GraphQL.load(%^type Query { hello: String }^) +} +sleep + +# To run this GraphQL example type the following then go to a browser and enter +# a URL of localhost:6464/graphql?query={hello} +# +# ruby hello.rb +``` diff --git a/src/content/code/language-support/ruby/server/graphql-ruby.md b/src/content/code/language-support/ruby/server/graphql-ruby.md new file mode 100644 index 0000000000..de7a25dace --- /dev/null +++ b/src/content/code/language-support/ruby/server/graphql-ruby.md @@ -0,0 +1,35 @@ +--- +name: graphql-ruby +description: A Ruby library for building GraphQL APIs. +url: https://github.com/rmosolgo/graphql-ruby +github: rmosolgo/graphql-ruby +gem: graphql +--- + +To run a hello world script with `graphql-ruby`: + +```bash +gem install graphql +``` + +Then run `ruby hello.rb` with this code in `hello.rb`: + +```ruby +require 'graphql' + +class QueryType < GraphQL::Schema::Object + field :hello, String + + def hello + "Hello world!" + end +end + +class Schema < GraphQL::Schema + query QueryType +end + +puts Schema.execute('{ hello }').to_json +``` + +There are also nice bindings for Relay and Rails. diff --git a/src/content/code/language-support/ruby/server/rails-graphql.md b/src/content/code/language-support/ruby/server/rails-graphql.md new file mode 100644 index 0000000000..6adebdf042 --- /dev/null +++ b/src/content/code/language-support/ruby/server/rails-graphql.md @@ -0,0 +1,21 @@ +--- +name: Rails GraphQL +description: A Fresh new GraphQL server for Rails applications, with a focus on natural and Ruby-like DSL +url: https://www.rails-graphql.dev/ +github: virtualshield/rails-graphql +gem: rails-graphql +--- + +```ruby +require 'rails-graphql' + +class GraphQL::AppSchema < GraphQL::Schema + query_fields do + field(:hello).resolve { 'Hello World!' } + end +end + +puts GraphQL::AppSchema.execute('{ hello }') +``` + +Less is more! Please check it out the [docs](https://www.rails-graphql.dev/?utm_source=graphql_org). diff --git a/src/content/code/language-support/rust/client/cynic.md b/src/content/code/language-support/rust/client/cynic.md new file mode 100644 index 0000000000..f1680b6945 --- /dev/null +++ b/src/content/code/language-support/rust/client/cynic.md @@ -0,0 +1,61 @@ +--- +name: cynic +description: A bring your own types GraphQL client for Rust +url: https://cynic-rs.dev +github: obmarg/cynic +--- + +A client library for rust that generates queries from types you provide, +verifying that the types match the shape of your schema. + +It provides [a generator](https://generator.cynic-rs.dev) to bootstrap types +from existing GraphQL queries. + +Usage example: + +```rust +#[derive(cynic::QueryFragment, Debug)] +#[cynic( + schema_path = "../schemas/starwars.schema.graphql", + query_module = "query_dsl", + graphql_type = "Root", + argument_struct = "FilmArguments" +)] +struct FilmDirectorQuery { + #[arguments(id = &args.id)] + film: Option, +} + +#[derive(cynic::QueryFragment, Debug)] +#[cynic( + schema_path = "../schemas/starwars.schema.graphql", + query_module = "query_dsl", + graphql_type = "Film" +)] +struct Film { + title: Option, + director: Option, +} + +#[derive(cynic::FragmentArguments)] +struct FilmArguments { + id: Option, +} + +fn main() { + use cynic::{QueryBuilder, http::ReqwestBlockingExt}; + + let query = FilmDirectorQuery::build(&FilmArguments { + id: Some("ZmlsbXM6MQ==".into()), + }) + + reqwest::blocking::Client::new() + .post("https://swapi-graphql.netlify.com/.netlify/functions/index") + .run_graphql(query) + .unwrap() +} + +mod query_dsl { + cynic::query_dsl!("../schemas/starwars.schema.graphql"); +} +``` diff --git a/src/content/code/language-support/rust/client/gql_client.md b/src/content/code/language-support/rust/client/gql_client.md new file mode 100644 index 0000000000..ffc56c15e7 --- /dev/null +++ b/src/content/code/language-support/rust/client/gql_client.md @@ -0,0 +1,33 @@ +--- +name: gql_client +description: Minimal GraphQL client for Rust +url: https://github.com/arthurkhlghatyan/gql-client-rs +github: arthurkhlghatyan/gql-client-rs +--- + +Usage example + +```rust +use gql_client::Client; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let endpoint = "https://graphqlzero.almansi.me/api"; + let query = r#" + query AllPostsQuery { + posts { + data { + id + } + } + } + "#; + + let client = Client::new(endpoint); + let data: AllPosts = client.query::(query).await.unwrap(); + + println!("{:?}" data); + + Ok(()) +} +``` diff --git a/src/content/code/language-support/rust/server/async-graphql.md b/src/content/code/language-support/rust/server/async-graphql.md new file mode 100644 index 0000000000..d355b49458 --- /dev/null +++ b/src/content/code/language-support/rust/server/async-graphql.md @@ -0,0 +1,18 @@ +--- +name: Async-graphql +description: Async-graphql is a high-performance server-side library that supports all GraphQL specifications. +url: https://github.com/async-graphql/async-graphql +github: async-graphql/async-graphql +--- + +```rust + use async_graphql::*; + struct Query; + #[Object] + impl Query { + /// Returns the sum of a and b + async fn add(&self, a: i32, b: i32) -> i32 { + a + b + } + } +``` diff --git a/src/content/code/language-support/rust/server/graphql-rust-juniper.md b/src/content/code/language-support/rust/server/graphql-rust-juniper.md new file mode 100644 index 0000000000..c3a96721ea --- /dev/null +++ b/src/content/code/language-support/rust/server/graphql-rust-juniper.md @@ -0,0 +1,6 @@ +--- +name: graphql-rust/juniper +description: GraphQL server library for Rust +url: https://github.com/graphql-rust/juniper +github: graphql-rust/juniper +--- diff --git a/src/content/code/language-support/scala/client/caliban.md b/src/content/code/language-support/scala/client/caliban.md new file mode 100644 index 0000000000..6713604fd2 --- /dev/null +++ b/src/content/code/language-support/scala/client/caliban.md @@ -0,0 +1,6 @@ +--- +name: Caliban +description: Functional GraphQL library for Scala, with client code generation and type-safe queries. +url: https://ghostdogpr.github.io/caliban/ +github: ghostdogpr/caliban +--- diff --git a/src/content/code/language-support/scala/server/caliban.md b/src/content/code/language-support/scala/server/caliban.md new file mode 100644 index 0000000000..83409d0a09 --- /dev/null +++ b/src/content/code/language-support/scala/server/caliban.md @@ -0,0 +1,30 @@ +--- +name: Caliban +description: Caliban is a purely functional library for building GraphQL servers and clients in Scala +url: https://ghostdogpr.github.io/caliban/ +github: ghostdogpr/caliban +--- + +An example of a GraphQL schema and query with `caliban`: + +```scala +import caliban.GraphQL.graphQL +import caliban.RootResolver + +case class Character(name: String, age: Int) + +def getCharacters(): List[Character] = ??? + +// schema +case class Queries(characters: List[Character]) + +// resolver +val queries = Queries(getCharacters) + +val api = graphQL(RootResolver(queries)) + +for { + interpreter <- api.interpreter + result <- interpreter.execute("{ characters { name } }") +} yield result +``` diff --git a/src/content/code/language-support/scala/server/sangria.md b/src/content/code/language-support/scala/server/sangria.md new file mode 100644 index 0000000000..63a94527a9 --- /dev/null +++ b/src/content/code/language-support/scala/server/sangria.md @@ -0,0 +1,24 @@ +--- +name: Sangria +description: A Scala GraphQL library that supports [Relay](https://facebook.github.io/relay/). +url: https://sangria-graphql.github.io/ +github: sangria-graphql/sangria +--- + +An example of a hello world GraphQL schema and query with `sangria`: + +```scala +import sangria.schema._ +import sangria.execution._ +import sangria.macros._ + +val QueryType = ObjectType("Query", fields[Unit, Unit]( + Field("hello", StringType, resolve = _ ⇒ "Hello world!") +)) + +val schema = Schema(QueryType) + +val query = graphql"{ hello }" + +Executor.execute(schema, query) map println +``` diff --git a/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md b/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md new file mode 100644 index 0000000000..c000c73537 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md @@ -0,0 +1,6 @@ +--- +name: Apollo iOS +description: A GraphQL client for iOS that returns results as query-specific Swift types, and integrates with Xcode to show your Swift source and GraphQL side by side, with inline validation errors. +url: https://www.apollographql.com/docs/ios/ +github: apollographql/apollo-ios +--- diff --git a/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md b/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md new file mode 100644 index 0000000000..bbe1a7d9a4 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md @@ -0,0 +1,6 @@ +--- +name: Graphaello +description: A Tool for Writing Declarative, Type-Safe and Data-Driven Applications in SwiftUI using GraphQL and Apollo +url: https://github.com/nerdsupremacist/Graphaello +github: nerdsupremacist/Graphaello +--- diff --git a/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md b/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md new file mode 100644 index 0000000000..2f3e7c7157 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md @@ -0,0 +1,6 @@ +--- +name: GraphQL iOS +description: An Objective-C GraphQL client for iOS. +url: https://github.com/funcompany/graphql-ios +github: funcompany/graphql-ios +--- diff --git a/src/content/code/language-support/swift-objective-c-ios/client/graphqlite-ios.md b/src/content/code/language-support/swift-objective-c-ios/client/graphqlite-ios.md new file mode 100644 index 0000000000..242540c244 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/graphqlite-ios.md @@ -0,0 +1,6 @@ +--- +name: GraphQLite iOS +description: GraphQLite iOS SDK is a toolkit to work with GraphQL servers easily. It also provides several other features to make life easier during iOS application development. +url: https://graphqlite.com/sdk-ios +github: relatedcode/GraphQLite +--- diff --git a/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md b/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md new file mode 100644 index 0000000000..67989649e7 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md @@ -0,0 +1,48 @@ +--- +name: SwiftGraphQL +description: A GraphQL client that lets you forget about GraphQL. +url: https://github.com/maticzav/swift-graphql +github: maticzav/swift-graphql +--- + +SwiftGraphQL is a Swift code generator and a lightweight GraphQL client. It lets you create queries using Swift, and guarantees that every query you create is valid. + +The library is centered around three core principles: + +🚀 If your project compiles, your queries work. +🦉 Use Swift in favour of GraphQL wherever possible. +🌳 Your application model should be independent of your schema. + +Here's a short preview of the SwiftGraphQL code + +```swift +import SwiftGraphQL + +// Define a Swift model. +struct Human: Identifiable { + let id: String + let name: String + let homePlanet: String? +} + +// Create a selection. +let human = Selection.Human { + Human( + id: try $0.id(), + name: try $0.name(), + homePlanet: try $0.homePlanet() + ) +} + +// Construct a query. +let query = Selection.Query { + try $0.humans(human.list) +} + +// Perform the query. +send(query, to: "http://swift-graphql.heroku.com") { result in + if let data = try? result.get() { + print(data) // [Human] + } +} +``` diff --git a/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md b/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md new file mode 100644 index 0000000000..6a626d9390 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md @@ -0,0 +1,6 @@ +--- +name: Graphiti +description: Swift library for building GraphQL schemas/types fast, safely and easily. +url: https://github.com/GraphQLSwift/Graphiti +github: GraphQLSwift/Graphiti +--- diff --git a/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md b/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md new file mode 100644 index 0000000000..488553003c --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md @@ -0,0 +1,6 @@ +--- +name: GraphZahl +description: Swift library for writing Declarative, Type-Safe GraphQL APIs with Zero Boilerplate. +url: https://github.com/nerdsupremacist/GraphZahl +github: nerdsupremacist/GraphZahl +--- diff --git a/src/content/code/services/altair.md b/src/content/code/services/altair.md new file mode 100644 index 0000000000..ff359cc4c4 --- /dev/null +++ b/src/content/code/services/altair.md @@ -0,0 +1,6 @@ +--- +name: Altair +description: An alternative to Postman that supports editing GraphQL queries directly and autoload your GraphQL schema. +url: https://altair.sirmuel.design/ +github: altair-graphql/altair +--- diff --git a/src/content/code/services/apideck.md b/src/content/code/services/apideck.md new file mode 100644 index 0000000000..034483f787 --- /dev/null +++ b/src/content/code/services/apideck.md @@ -0,0 +1,5 @@ +--- +name: Apideck +description: A GraphQL API to query and mutate data across APIs like Salesforce, HubSpot, Microsoft Dynamics, Pipedrive, and many more. +url: https://www.apideck.com/products/graphql/ +--- diff --git a/src/content/code/services/apisix.md b/src/content/code/services/apisix.md new file mode 100644 index 0000000000..4f8fc4ecdd --- /dev/null +++ b/src/content/code/services/apisix.md @@ -0,0 +1,6 @@ +--- +name: Apache APISIX +description: Apache APISIX is a dynamic, real-time, high-performance API gateway providing rich traffic management features such as load balancing, dynamic upstream, canary release, observability, etc. As a cloud-native API gateway, Apache APISIX already can support GraphQL syntax at the beginning of its design. Efficiently matching GraphQL statements carried in requests can filter out abnormal traffic to further ensure security. For more information, please visit [How to Use GraphQL with API Gateway Apache APISIX](https://apisix.apache.org/blog/2022/03/02/apisix-integration-graphql-plugin/) +url: https://apisix.apache.org/ +github: apache/apisix +--- diff --git a/src/content/code/services/apollo-studio.md b/src/content/code/services/apollo-studio.md new file mode 100644 index 0000000000..5807a1f694 --- /dev/null +++ b/src/content/code/services/apollo-studio.md @@ -0,0 +1,6 @@ +--- +name: Apollo Studio +description: A cloud service that helps you build, validate, monitor and secure your organizations data graph. +url: https://www.apollographql.com/docs/studio/ +github: apollographql/apollo-studio-community +--- diff --git a/src/content/code/services/aws-appsync.md b/src/content/code/services/aws-appsync.md new file mode 100644 index 0000000000..c489d392a9 --- /dev/null +++ b/src/content/code/services/aws-appsync.md @@ -0,0 +1,5 @@ +--- +name: AWS AppSync +description: Fully managed GraphQL service with realtime subscriptions, offline programming & synchronization, and enterprise security features as well as fine grained authorization controls. +url: https://aws.amazon.com/appsync/ +--- diff --git a/src/content/code/services/back4app.md b/src/content/code/services/back4app.md new file mode 100644 index 0000000000..da93824784 --- /dev/null +++ b/src/content/code/services/back4app.md @@ -0,0 +1,5 @@ +--- +name: Back4App +description: Fully managed GraphQL backend based on open source Parse Platform. Store and query relational data, run cloud functions and more over GraphQL API. Free to get started. +url: https://www.back4app.com/docs/parse-graphql/graphql-getting-started +--- diff --git a/src/content/code/services/bananacakepop.md b/src/content/code/services/bananacakepop.md new file mode 100644 index 0000000000..4efdc494fe --- /dev/null +++ b/src/content/code/services/bananacakepop.md @@ -0,0 +1,6 @@ +--- +name: Banana Cake Pop +description: A feature-rich GraphQL IDE by [ChilliCream](https://chillicream.com) that let's you explore, manage, and test your GraphQL APIs. Check it out [here](https://bananacakepop.com). +url: https://bananacakepop.com +github: ChilliCream/hotchocolate +--- diff --git a/src/content/code/services/dgraph.md b/src/content/code/services/dgraph.md new file mode 100644 index 0000000000..524b2796c7 --- /dev/null +++ b/src/content/code/services/dgraph.md @@ -0,0 +1,119 @@ +--- +name: Dgraph +description: Dgraph is a native GraphQL database with a graph backend. This means Dgraph is not an interface on top of an existing database like Postgres but is actually designed from the ground-up for GraphQL. It is optimized for speed and performance, depending on multiple computer science breakthroughs to get the best result. Dgraph Cloud is a fully managed GraphQL backend service that lets you iterate faster, without worrying about your infrastructure. +url: https://dgraph.io/graphql +github: dgraph-io/dgraph +--- + +Install Steps if running locally on linux not on Dgraph Cloud: + +```bash +docker pull dgraph/standalone +mkdir -p ~/dgraph +docker run -it -p 5080:5080 -p 6080:6080 -p 8080:8080 \ + -p 9080:9080 -p 8000:8000 -v ~/dgraph:/dgraph --name dgraph \ + dgraph/standalone:master +``` + +Set your GraphQL Schema: + +```bash +touch schema.graphql +nano schema.graphql +``` + +```graphql +type Product { + id: ID! + name: String! @id + reviews: [Review] @hasInverse(field: about) +} + +type Customer { + username: String! @id + reviews: [Review] @hasInverse(field: by) +} + +type Review { + id: ID! + about: Product! + by: Customer! + comment: String @search(by: [fulltext]) + rating: Int @search +} +``` + +```bash +curl -X POST localhost:8080/admin/schema --data-binary '@schema.graphql' +``` + +Fire up your favorite GraphQL Client pointed at `http://localhost:8080/graphql` and run mutations and queries + +```graphql +mutation { + addProduct(input: [{ name: "Dgraph" }, { name: "Dgraph Cloud" }]) { + product { + id + name + } + } + addCustomer(input: [{ username: "TonyStark" }]) { + customer { + username + } + } +} +``` + +```graphql +mutation { + addReview( + input: [ + { + by: { username: "TonyStark" } + about: { name: "Dgraph" } + comment: "Fantastic, easy to install, worked great. Best GraphQL server available" + rating: 10 + } + ] + ) { + review { + id + comment + rating + by { + username + } + about { + id + name + } + } + } +} +``` + +``` +query { + queryReview(filter: { comment: { alloftext: "server easy install" }, rating: { gt: 5 } }) { + comment + by { + username + reviews(order: { desc: rating }, first: 10) { + about { + name + reviews(order: { asc: rating, first: 5 }) { + by { username } + comment + rating + } + } + rating + } + } + about { + name + } + } +} +``` diff --git a/src/content/code/services/elide.md b/src/content/code/services/elide.md new file mode 100644 index 0000000000..1dcb448fb3 --- /dev/null +++ b/src/content/code/services/elide.md @@ -0,0 +1,6 @@ +--- +name: Elide +description: A Java library that can expose a JPA annotated data model as a GraphQL service over any relational database. +url: https://elide.io +github: yahoo/elide +--- diff --git a/src/content/code/services/escape.md b/src/content/code/services/escape.md new file mode 100644 index 0000000000..e9bf0b6f50 --- /dev/null +++ b/src/content/code/services/escape.md @@ -0,0 +1,5 @@ +--- +name: Escape – GraphQL Security +description: Live GraphQL Security & Compliance. Ensure your GraphQL endpoints are production-ready. During development. Without needed configuration. Supports every language and framework. Free to get started. +url: https://escape.tech/ +--- diff --git a/src/content/code/services/faunadb.md b/src/content/code/services/faunadb.md new file mode 100644 index 0000000000..f966250dd3 --- /dev/null +++ b/src/content/code/services/faunadb.md @@ -0,0 +1,5 @@ +--- +name: FaunaDB +description: Create an instant GraphQL backend by importing a gql schema. The database will create relations and indexes for you, so you'll be ready to query in seconds, without writing any database code. Serverless pricing, free to get started. +url: https://docs.fauna.com/fauna/current/graphql +--- diff --git a/src/content/code/services/grafbase.md b/src/content/code/services/grafbase.md new file mode 100644 index 0000000000..78dd9406ea --- /dev/null +++ b/src/content/code/services/grafbase.md @@ -0,0 +1,5 @@ +--- +name: Grafbase +description: GraphQL backends made easy. Build your backend declaratively using a schema-first approach. Accelerate development and reduce boilerplate code by leveraging powerful directives and scalars. +url: https://grafbase.com +--- diff --git a/src/content/code/services/graphapi.md b/src/content/code/services/graphapi.md new file mode 100644 index 0000000000..eb469660f0 --- /dev/null +++ b/src/content/code/services/graphapi.md @@ -0,0 +1,6 @@ +--- +name: graphapi® +description: graphapi® is a secure low-code GraphQL-as-a-service platform. Based on the input data model, it auto-generates the GraphQL schema, all resolvers, and the database stack. Additionally, it provides a user interface allowing teams to manage their data. For more information, go to https://graphapi.com. +url: https://graphapi.com/docs +github: graphapi-io/resources +--- diff --git a/src/content/code/services/graphql.security.md b/src/content/code/services/graphql.security.md new file mode 100644 index 0000000000..9f745d97ad --- /dev/null +++ b/src/content/code/services/graphql.security.md @@ -0,0 +1,5 @@ +--- +name: GraphQL.Security +description: Fast and free security scan to run a dozen of tests on a GraphQL endpoint. No login is required. +url: https://graphql.security/ +--- diff --git a/src/content/code/services/hasura.md b/src/content/code/services/hasura.md new file mode 100644 index 0000000000..56e9fd0d91 --- /dev/null +++ b/src/content/code/services/hasura.md @@ -0,0 +1,6 @@ +--- +name: Hasura +description: Hasura connects to your databases & microservices and instantly gives you a production-ready GraphQL API. +url: https://hasura.io +github: hasura/graphql-engine +--- diff --git a/src/content/code/services/hygraph.md b/src/content/code/services/hygraph.md new file mode 100644 index 0000000000..09c79e592d --- /dev/null +++ b/src/content/code/services/hygraph.md @@ -0,0 +1,5 @@ +--- +name: Hygraph +description: Hygraph is the federated content platform that allows true composability of your stack. Integrate all your services with a unique content federation approach and distribute content from anywhere - to anywhere using a single, powerful GraphQL API. +url: https://hygraph.com/ +--- diff --git a/src/content/code/services/insomnia.md b/src/content/code/services/insomnia.md new file mode 100644 index 0000000000..e0456997df --- /dev/null +++ b/src/content/code/services/insomnia.md @@ -0,0 +1,6 @@ +--- +name: Insomnia +description: Insomnia is an open-source, cross-platform API Client for GraphQL, REST, and gRPC. Insomnia combines an easy-to-use interface with advanced functionality like authentication helpers, code generation, and environment variables. +url: https://docs.insomnia.rest/insomnia/graphql-queries +github: Kong/insomnia +--- diff --git a/src/content/code/services/lexascms.md b/src/content/code/services/lexascms.md new file mode 100644 index 0000000000..401ac753e8 --- /dev/null +++ b/src/content/code/services/lexascms.md @@ -0,0 +1,5 @@ +--- +name: LexasCMS +description: A headless CMS (Content Management System) that combines powerful content personalisation and scheduling capabilities with a modern content editing experience and a blazing fast GraphQL/REST content delivery API. +url: https://www.lexascms.com +--- diff --git a/src/content/code/services/moesif-api-analytics.md b/src/content/code/services/moesif-api-analytics.md new file mode 100644 index 0000000000..267efe4a0d --- /dev/null +++ b/src/content/code/services/moesif-api-analytics.md @@ -0,0 +1,5 @@ +--- +name: Moesif API Analytics +description: A GraphQL analaytics and monitoring Service to find functional and performance issues. +url: https://www.moesif.com/features/graphql-analytics +--- diff --git a/src/content/code/services/postman.md b/src/content/code/services/postman.md new file mode 100644 index 0000000000..07ff166dcd --- /dev/null +++ b/src/content/code/services/postman.md @@ -0,0 +1,6 @@ +--- +name: Postman +description: An HTTP Client that supports editing GraphQL queries. +url: https://learning.postman.com/docs/sending-requests/supported-api-frameworks/graphql/ +github: postmanlabs/postman-app-support +--- diff --git a/src/content/code/services/prisma.md b/src/content/code/services/prisma.md new file mode 100644 index 0000000000..9daa18587e --- /dev/null +++ b/src/content/code/services/prisma.md @@ -0,0 +1,6 @@ +--- +name: Prisma +description: Next-generation Node.js and TypeScript ORM with a built-in data loader, which can be used when building GraphQL backends. For more information, go to https://www.prisma.io/graphql +url: https://www.prisma.io +github: prisma/prisma +--- diff --git a/src/content/code/services/stepzen.md b/src/content/code/services/stepzen.md new file mode 100644 index 0000000000..c5eebe3de1 --- /dev/null +++ b/src/content/code/services/stepzen.md @@ -0,0 +1,6 @@ +--- +name: StepZen +description: Create a serverless GraphQL API based on your data sources (REST & Databases), Third-Party APIs, or any combination. Instead of writing a GraphQL server yourself, you can define everything declaratively by writing GraphQL schemas. For more information, go to https://www.stepzen.com/. +url: https://stepzen.com/docs/ +github: stepzen-dev/examples +--- diff --git a/src/content/code/services/tipe.md b/src/content/code/services/tipe.md new file mode 100644 index 0000000000..21ab32e01f --- /dev/null +++ b/src/content/code/services/tipe.md @@ -0,0 +1,6 @@ +--- +name: Tipe +description: A SaaS (Software as a Service) content management system that allows you to create your content with powerful editing tools and access it from anywhere with a GraphQL or REST API. +url: https://tipe.io +github: tipeio/tipe +--- diff --git a/src/content/code/services/tyk.md b/src/content/code/services/tyk.md new file mode 100644 index 0000000000..a00e8e23a0 --- /dev/null +++ b/src/content/code/services/tyk.md @@ -0,0 +1,6 @@ +--- +name: Tyk +description: Tyk is a lightweight Open Source API Management Gateway that has built a Full API Life-Cycle Management around GraphQL with its own GraphQL engine that is written in Golang. Tyk supports schema stitching of multiple GraphQL and/or REST APIs through [Universal Data Graph (UDG)](https://tyk.io/docs/universal-data-graph/) as well as [GraphQL Federation](https://tyk.io/docs/getting-started/key-concepts/graphql-federation/) and [GraphQL Subscription](https://tyk.io/docs/getting-started/key-concepts/graphql-subscriptions/). +url: https://tyk.io/ +github: TykTechnologies/tyk +--- diff --git a/src/content/code/services/typetta.md b/src/content/code/services/typetta.md new file mode 100644 index 0000000000..1458357009 --- /dev/null +++ b/src/content/code/services/typetta.md @@ -0,0 +1,7 @@ +--- +name: Typetta +description: Typetta is an open-source ORM written in TypeScript that aims to allow seamless access to data in a typed fashion to all main SQL databases (MySQL, PostgreSQL, Microsoft SQL Server, SQLLite3, CockroachDB, MariaDB, Oracle & Amazon Redshift) and also to the NoSQL database MongoDB. +url: https://twinlogix.github.io/typetta/ +github: twinlogix/typetta +npm: "@twinlogix/typetta" +--- diff --git a/src/content/code/services/webiny.md b/src/content/code/services/webiny.md new file mode 100644 index 0000000000..f665b145d2 --- /dev/null +++ b/src/content/code/services/webiny.md @@ -0,0 +1,6 @@ +--- +name: Webiny +description: Webiny allows you to quickly build GraphQL APIs on top of AWS Lambda and DynamoDB with built-in scaffolds. Webiny also includes a ready-made headless GraphQL CMS for a no-code experience. +url: https://www.webiny.com +github: webiny/webiny-js +--- diff --git a/src/content/code/slug-map.json b/src/content/code/slug-map.json new file mode 100644 index 0000000000..b2d1a2d7e4 --- /dev/null +++ b/src/content/code/slug-map.json @@ -0,0 +1,40 @@ +{ + "ballerina": "Ballerina", + "c-c": "C / C++", + "c-net": "C# / .NET", + "clojure": "Clojure", + "d": "D", + "elixir": "Elixir", + "elm": "Elm", + "erlang": "Erlang", + "flutter": "Flutter", + "go": "Go", + "groovy": "Groovy", + "haskell": "Haskell", + "java-kotlin-android": "Java / Kotlin", + "javascript": "JavaScript", + "julia": "Julia", + "perl": "Perl", + "php": "PHP", + "python": "Python", + "r": "R", + "ruby": "Ruby", + "rust": "Rust", + "scala": "Scala", + "ocaml-reason": "OCaml / Reason", + "swift-objective-c-ios": "Swift / Objective-C", + "language-support": "Language Support", + "client": "Client", + "server": "Server", + "tools": "Tools", + "services": "Services", + "gqt": "GQT", + "graphql-armor": "Graphql-Armor", + "graphql-code-generator": "GraphQL Code Generator", + "microcks": "Microcks", + "quicktype": "QuickType", + "schemathesis": "Schemathesis", + "gateways-supergraphs": "GatewaysAndSupergraphs", + "general": "General", + "wundergraph": "WunderGraph" +} diff --git a/src/content/code/tools/gqt/general/gqt.md b/src/content/code/tools/gqt/general/gqt.md new file mode 100644 index 0000000000..a540b6fe7d --- /dev/null +++ b/src/content/code/tools/gqt/general/gqt.md @@ -0,0 +1,14 @@ +--- +name: gqt +description: Build and execute GraphQL queries in the terminal. +url: https://github.com/eerimoq/gqt +github: eerimoq/gqt +--- + +Run `gqt` against your GraphQL endpoint. Build your query in an +intuitive TUI and execute it. The response from the server is written +to standard output. + +```bash +gqt -e https://your.app.com/graphql +``` diff --git a/src/content/code/tools/graphql-armor/general/graphql-armor.md b/src/content/code/tools/graphql-armor/general/graphql-armor.md new file mode 100644 index 0000000000..8878060dc6 --- /dev/null +++ b/src/content/code/tools/graphql-armor/general/graphql-armor.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Armor +description: The missing GraphQL security layer for Apollo GraphQL and Yoga / Envelop servers. +url: https://github.com/Escape-Technologies/graphql-armor +github: Escape-Technologies/graphql-armor +npm: "@Escape-Technologies/graphql-armor" +--- diff --git a/src/content/code/tools/graphql-code-generator/general/graphql-code-generator.md b/src/content/code/tools/graphql-code-generator/general/graphql-code-generator.md new file mode 100644 index 0000000000..1ba0a96afb --- /dev/null +++ b/src/content/code/tools/graphql-code-generator/general/graphql-code-generator.md @@ -0,0 +1,7 @@ +--- +name: GraphQL Code Generator +description: GraphQL code generator with flexible support for custom plugins and templates like Typescript (frontend and backend), React Hooks, resolvers signatures and more. +url: https://graphql-code-generator.com +github: dotansimha/graphql-code-generator +npm: "@graphql-codegen/cli" +--- diff --git a/src/content/code/tools/microcks/general/microcks.md b/src/content/code/tools/microcks/general/microcks.md new file mode 100644 index 0000000000..20a3e02907 --- /dev/null +++ b/src/content/code/tools/microcks/general/microcks.md @@ -0,0 +1,10 @@ +--- +name: Microcks +description: Open source Kubernetes-native tool for API Mocking and Testing +url: https://microcks.io +github: microcks/microcks +--- + +Microcks is a platform for turning your API and microservices assets - _GraphQL schemas_, _OpenAPI specs_, _AsyncAPI specs_, _gRPC protobuf_, _Postman collections_, _SoapUI projects_\_ - into live simulations in seconds. + +It also reuses these assets for running compliance and non-regression tests against your API implementation. We provide integrations with _Jenkins_, _GitHub Actions_, _Tekton_ and many others through a simple CLI. diff --git a/src/content/code/tools/quicktype/general/quicktype.md b/src/content/code/tools/quicktype/general/quicktype.md new file mode 100644 index 0000000000..d7a4ec4eff --- /dev/null +++ b/src/content/code/tools/quicktype/general/quicktype.md @@ -0,0 +1,7 @@ +--- +name: quicktype +description: Generate types for GraphQL queries in TypeScript, Swift, golang, C#, C++, and more. +url: https://quicktype.io/ +github: quicktype/quicktype +npm: "quicktype" +--- diff --git a/src/content/code/tools/schemathesis/general/schemathesis.md b/src/content/code/tools/schemathesis/general/schemathesis.md new file mode 100644 index 0000000000..ae938f1336 --- /dev/null +++ b/src/content/code/tools/schemathesis/general/schemathesis.md @@ -0,0 +1,42 @@ +--- +name: Schemathesis +description: A modern API testing tool for web applications built with Open API and GraphQL specifications. +url: https://github.com/schemathesis/schemathesis +github: schemathesis/schemathesis +--- + +Run Schemathesis via Docker against your GraphQL endpoint: + +```bash +docker run schemathesis/schemathesis \ + run https://your.app.com/graphql +``` + +Schemathesis will generate queries matching your GraphQL schema and catch server crashes automatically. +Generated queries have arbitrary depth and may contain any subset of GraphQL types defined in the input schema. +They expose edge cases in your code that are unlikely to be found otherwise. + +Note that you can write your app in any programming language; the tool will communicate with it over HTTP. + +For example, running the command above against `https://bahnql.herokuapp.com/graphql` uncovers that running the `{ search(searchTerm: "") { stations { name } } }` query leads to a server error: + +``` +{ + "errors": [ + { + "message": "Cannot read property 'city' of undefined", + "locations": [ + { + "line": 1, + "column": 28 + } + ], + "path": [ + "search", + "stations" + ] + } + ], + "data": null +} +``` diff --git a/src/content/code/tools/wundergraph/gateways-supergraphs/wundergraph.md b/src/content/code/tools/wundergraph/gateways-supergraphs/wundergraph.md new file mode 100644 index 0000000000..4ed57a1e4b --- /dev/null +++ b/src/content/code/tools/wundergraph/gateways-supergraphs/wundergraph.md @@ -0,0 +1,87 @@ +--- +name: WunderGraph +description: WunderGraph is an open-source GraphQL Gateway that is able to compose Apollo Federation, GraphQL, REST APIs, Databases, Kafka and more. +url: https://wundergraph.com +github: wundergraph/wundergraph +--- + +[WunderGraph](https://wundergraph.com) composes all your APIs into a single unified GraphQL API and +allows you to expose your Graph as a [secure and type-safe JSON-RPC API](https://docs.wundergraph.com/docs/features/graphql-to-json-rpc-compiler). + +To get started with WunderGraph, you can use `create-wundergraph-app` to bootstrap a new project: + +```bash +npx create-wundergraph-app my-project -E nextjs-swr +``` + +On the client side, WunderGraph's JSON-RPC API integrates very well with frameworks like [Next.js, SWR](https://github.com/wundergraph/wundergraph/tree/main/examples/nextjs-swr) and React Query, +while one the backend, we're able to leverage the power of "Server-Side-Only GraphQL". +Handle authentication, authorization, validation, joins and more right in the Query Layer. + +```graphql +mutation ( + $name: String! @fromClaim(name: NAME) + $email: String! @fromClaim(name: EMAIL) + $message: String! @jsonSchema(pattern: "^[a-zA-Z 0-9]+$") +) { + createOnepost( + data: { + message: $message + user: { + connectOrCreate: { + where: { email: $email } + create: { email: $email, name: $name } + } + } + } + ) { + id + message + user { + id + name + } + } +} +``` + +The Query above requires the user to be authenticated, +injects the user's name and email from the JWT token and validates the message against a JSON Schema. + +Here's another example showcasing how we can use Server-Side GraphQL with WunderGraph's unique [join capabilities](https://docs.wundergraph.com/docs/features/cross-api-joins-to-compose-apis), +composing data from two different APIs into a single GraphQL response. + +```graphql +query ( + $continent: String! + # the @internal directive removes the $capital variable from the public API + # this means, the user can't set it manually + # this variable is our JOIN key + $capital: String! @internal +) { + countries_countries(filter: { continent: { eq: $continent } }) { + code + name + # using the @export directive, we can export the value of the field `capital` into the JOIN key ($capital) + capital @export(as: "capital") + # the _join field returns the type Query! + # it exists on every object type so you can everywhere in your Query documents + _join { + # once we're inside the _join field, we can use the $capital variable to join the weather API + weather_getCityByName(name: $capital) { + weather { + temperature { + max + } + summary { + title + description + } + } + } + } + } +} +``` + +The full [example can be found on GitHub](https://github.com/wundergraph/wundergraph/tree/main/examples/cross-api-joins). diff --git a/src/content/codeofconduct/CodeOfConduct.md b/src/content/codeofconduct/CodeOfConduct.md index 9c4e9a828c..7ac5b6fad7 100644 --- a/src/content/codeofconduct/CodeOfConduct.md +++ b/src/content/codeofconduct/CodeOfConduct.md @@ -15,25 +15,25 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others’ private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities GraphQL Specification members, project participants and contributors (collectively, "participants") are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. -The steering committee of the GraphQL Specification has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any participant for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +The steering committee of the GraphQL Specification has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any participant for other behaviors that they deem inappropriate, threatening, offensive, or harmful. All participants have determined that The Linux Foundation is the most optimal organization to shepherd the development of this project. Participants acknowledge and agree to The Linux Foundation's exclusive right to use "GraphQL" and any other names and trademarks associated with the GraphQL open source project and GraphQL Specification and to authorize others’ use of the marks, establish guidelines for such use, and to delegate these responsibilities. Participants agree not to take any action inconsistent with such rights and to cooperate in any action which The Linux Foundation deems necessary or desirable to prevent confusion or establish or preserve these rights. Participants will not independently adopt, use, or attempt to register any trademarks or trade names that are confusingly similar to these names. @@ -43,7 +43,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Executive Director, or, if the complaint involves the Executive Director, a member of the steering committee. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Participants who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by the steering committee. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Executive Director, or, if the complaint involves the Executive Director, a member of the steering committee. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Participants who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by the steering committee. ## Attribution diff --git a/src/content/community/Community-Developers.md b/src/content/community/Community-Developers.md new file mode 100644 index 0000000000..4120dd1db0 --- /dev/null +++ b/src/content/community/Community-Developers.md @@ -0,0 +1,88 @@ +--- +title: GraphQL for Developers +layout: docs +category: Community +permalink: /community/developers/ +next: /community/project-resources/ +sublinks: How GraphQL is developed,Participating in development,GraphQL project governance +--- + +The following resources are intended to describe how GraphQL development processes work, how to get involved, and where to get help. + +## Essential links + +- The [GraphQL Specification](https://spec.graphql.org) +- GraphQL [reference implementations and tools](/code/) +- The official [GraphQL GitHub org](https://github.com/graphql) +- The official [GraphQL Discord](https://discord.graphql.org) + - We're in the process of moving our official chat to Discord, but you may still find historical discussion at ~~the official [GraphQL Slack](https://slack.graphql.org)~~. +- Instructions on how to sign the [GraphQL Specification Membership Agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership) +- The [GraphQL project calendar](https://calendar.graphql.org) +- Meeting replays on the [GraphQL YouTube channel](https://youtube.graphql.org) +- The [GraphQL Community Grant](/foundation/community-grant/) program + +## How GraphQL is developed + +At its core, the GraphQL project is organized around the [specification](https://spec.graphql.org), with a wide variety of supporting implementations and tools. + +GraphQL has an active and mutually beneficial relationship with its many implementations. The GraphQL specification is continuously evolving under the care of the [GraphQL Working Group](https://github.com/graphql/graphql-wg), which consists of GraphQL spec experts, contributors to public [reference implementations](/code/), and implementers. At any given time, GraphQL specification updates are a combination of anticipatory planning with documentation of patterns and behaviors that are already proven in production, sometimes at very large scale. + +### Working groups + +The GraphQL specification, sub-specifications, and official reference implementations are developed using the working group model. The working groups meet monthly or as-needed in order to review ideas and plan their work. + +#### The GraphQL Working Group + +The [GraphQL Working Group](https://github.com/graphql/graphql-wg) is the main group that plans and implements changes to the [GraphQL specification](https://spec.graphql.org). It meets actively and is the default place for discussion for topics which do not have a separate breakout working group (breakout working groups include the [Input Union WG](https://github.com/graphql/graphql-spec/blob/main/rfcs/InputUnion.md) and the [GraphQL-over-HTTP WG](https://github.com/graphql/graphql-over-http)). + +- **GitHub**: [github.com/graphql/graphql-wg](https://github.com/graphql/graphql-wg) +- **Meeting frequency:** Monthly, generally the first Thursday ([calendar](https://calendar.graphql.org)) +- **Agenda:** [GitHub](https://github.com/graphql/graphql-wg/tree/main/agendas) +- **Recordings:** [YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb) + +#### GraphQL.js Working Group + +The [GraphQL.js Working Group](https://github.com/graphql/graphql-js-wg) works on one of the main reference implementations, [graphql.js](https://github.com/graphql/graphql-js). + +- **GitHub**: [github.com/graphql/graphql-js-wg](https://github.com/graphql/graphql-wg) +- **Meeting frequency:** Monthly, generally the last Wednedsay ([calendar](https://calendar.graphql.org)) +- **Agenda:** [GitHub](https://github.com/graphql/graphql-js-wg/tree/main/agendas) +- **Recordings:** [YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foHghwopNuQM7weyP5jR147I) + +If you would like to set up a working group around a specific topic, please join a [GraphQL Working Group meeting](https://github.com/graphql/graphql-wg) and present your idea. + +## Participating in development + +GraphQL is developed in the open, through [GitHub](https://github.com/graphql) and working group meetings that are open for anyone to attend (so long as they are covered under the [free membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership)). In addition, anybody is welcome to view the [recordings of our meetings on YouTube](https://youtube.graphql.org) + +### First steps + +If you want to get involved in GraphQL, add yourself to the meeting agenda for one of our [working groups or implementations](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project), sign the document if you haven't already, and show up! Or, if you prefer, just open a PR against our projects as this will also initiate the spec membership signature process. + +We welcome your participation! + +### Getting up to speed + +All of our work [happens in the open](https://github.com/graphql). In addition, we record our workgroups' meetings on [YouTube](https://youtube.graphql.org). If you are interested in quickly getting up to speed on what's happening in a working group, the meeting minutes and [replays](https://youtube.graphql.org) are a great place to begin. + +### Asking questions + +The best place to ask a development-related question is in a working group meeting, or by opening a GitHub issue. Please note that if you have an implementation question, you may get a faster answer by [asking in one of the channels more geared toward users](/community/users/#where-to-ask-questions). + +## GraphQL project governance + +GraphQL was open sourced by Facebook in 2015, and became a neutrally governed project managed by the Linux Foundation in 2019. In keeping with best practices, the technical governance of the GraphQL project is separate and distinct from the financial and policy governance of the [GraphQL Foundation](/foundation/). + +### Technical governance + +The GraphQL project is a chartered under the [Joint Development Foundation](https://www.jointdevelopment.org/) (JDF). JDF is a part of the Linux Foundation family, and is an organization specifically dedicated to making open standards easier to manage. + +The GraphQL specification, the GraphQL Working Group, and all other sub-working groups and implementations in the [GraphQL GitHub organization](https://github.com/graphql) are governed by the [GraphQL project charter](https://technical-charter.graphql.org). + +The [Technical Steering Committee](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md), or TSC, is established in the [technical charter](https://technical-charter.graphql.org) as the top technical decision-making body. It consists of [representatives from the GraphQL technical community](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#tsc-voting-members) and is responsible for overseeing specification and development work, and approving new releases. TSC members serve a two-year term. + +### Financial and policy governance + +The [GraphQL Foundation](/foundation/) provides financial support for the GraphQL project. In keeping with best practices, the Foundation is a separate organization, which helps to ensure that technical decisions are made upon their own merit and independent of financial contributions. The GraphQL Foundation uses the funds raised through [membership dues](/foundation/join/) to support the work of the GraphQL Project through investments in infrastructure, coordination support services, developer grants, and mentorship programs. + +The [GraphQL Foundation](/foundation/) is supported entirely by [membership dues](/foundation/join/), from [companies](/foundation/members/) who wish to support the long-term sustainability of the GraphQL ecosystem. diff --git a/src/content/community/Community-Events.md b/src/content/community/Community-Events.md index 35e6370a3b..ba3e530810 100644 --- a/src/content/community/Community-Events.md +++ b/src/content/community/Community-Events.md @@ -3,26 +3,54 @@ title: Upcoming Events layout: docs category: Community permalink: /community/upcoming-events/ -sublinks: Upcoming Events,Meetups +sublinks: Project meetings,Events,Meetups --- -## Upcoming Events +## Project meetings -### Byteconf GraphQL +All GraphQL technical meetings are open to anyone who is interested, so long as they first complete the [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership). -- **Date:** January 31, 2020 -- **Location:** Streamed online -- **Link:** https://www.bytesized.xyz/graphql-2020 +All GraphQL project meetings should appear on the [GraphQL public calendar](https://calendar.graphql.org). If a project's meeting isn't on the calendar or is incorrect, please email [operations@graphql.org](mailto:operations@graphql.org). -Free GraphQL conference live-streamed on YouTube +- **Who can join GraphQL project meetings:** Anyone who has signed the free [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership). -### GraphQL Asia +- **How to join:** Each GraphQL project must maintain an agenda document for each meeting, and each attendee must add themselves to it prior to attending. To join, open a PR to add your name to the attendee list on an upcoming meeting's agenda (for example, the [GraphQL Working Group](https://github.com/graphql/graphql-wg/tree/HEAD/agendas) or [GraphQL.js](https://github.com/graphql/graphql-js-wg/tree/main/agendas)). The agenda document will have the date, time and Zoom links. -- **Date:** February 20-22, 2020 -- **Location:** Bangalore, India -- **Link:** https://graphql.asia +_IMPORTANT: Your PR against the agenda_ **_must_** _be merged before you can attend. If the EasyCLA bot says you are not covered, you need to follow the links in the bot's comment to sign the [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership) before you can attend._ -GraphQL conference organized by Hasura +If you have questions about this process, please ask [operations@graphql.org](mailto:operations@graphql.org). + +### GraphQL Working Group / TSC meeting + +The [GraphQL Working Group](https://github.com/graphql/graphql-wg) meets on the first Thursday of each month. When there are topics to address, the [GraphQL Technical Steering Committee (TSC)](https://github.com/graphql/graphql-wg/blob/HEAD/GraphQL-TSC.md) may meet briefly prior to the start of the Working Group meeting. + +The goal of the working group meeting is to discuss current work and future plans for the GraphQL specification. The Working Group meeting is also the place to coordinate between other GraphQL working groups and reference implementations. + +To join, add yourself to an [upcoming meeting agenda](https://github.com/graphql/graphql-wg/tree/HEAD/agendas). + +### GraphQL.js Working Group meeting + +The [GraphQL.js working group](https://github.com/graphql/graphql-js-wg) meets the second Tuesday of each month. The goal is to plan development work and resolve issues with [GraphQL.js](https://github.com/graphql/graphql-js). + +To join, add yourself to an [upcoming meeting agenda](https://github.com/graphql/graphql-js-wg/tree/HEAD/agendas). + +## Events + +_None currently scheduled_ + + ## Meetups @@ -45,6 +73,7 @@ GraphQL conference organized by Hasura - [GraphQL By the Bay (San Francisco)](https://www.meetup.com/graphql-by-the-bay/) ### South America + - [GraphQL Florianópolis](https://www.meetup.com/GraphQL-Floripa/) - [GraphQL São Paulo](https://www.meetup.com/Apollo-GraphQL/) - [GraphQL Buenos Aires](https://www.meetup.com/GraphQL-BA/) @@ -66,6 +95,8 @@ GraphQL conference organized by Hasura - [GraphQL Paris 2](https://www.meetup.com/fr-FR/parisgraphql/) - [GraphQL Stockholm](https://www.meetup.com/GraphQL-Stockholm/) - [GraphQL Vienna](https://www.meetup.com/GraphQL-Vienna/) +- [GraphQL Zurich](https://www.meetup.com/graphql-zurich/) +- [GraphQL Wroclaw](https://www.meetup.com/GraphQL-Wroclaw/) ### Australia @@ -80,3 +111,8 @@ GraphQL conference organized by Hasura - [GraphQL Meetup (Bangkok)](https://www.meetup.com/GraphQL-Bangkok/) - [GraphQL Meetup (Singapore)](https://www.meetup.com/GraphQL-SG/) - [GraphQL Meetup (Hong Kong)](https://www.meetup.com/GraphQLHongKong/) +- [GraphQL Korea](https://www.facebook.com/groups/graphql.kr) + +### Africa + +- [GraphQL Nairobi](https://www.meetup.com/Nairobi-GraphQL-Meetup/) diff --git a/src/content/community/Community-Resources.md b/src/content/community/Community-Resources.md index d927da9b82..b122dcf1f1 100644 --- a/src/content/community/Community-Resources.md +++ b/src/content/community/Community-Resources.md @@ -3,123 +3,45 @@ title: Community Resources layout: docs category: Community permalink: /community/ -next: /community/upcoming-events/ -sublinks: Blogs,Videos,Books,More Resources +next: /community/users/ +sublinks: Official channels,GraphQL Trademark,Code of conduct --- -## Stack Overflow - -Many members of the community use Stack Overflow to ask and answer questions. [Read through the existing questions tagged with **graphql** or ask your own!](http://stackoverflow.com/questions/tagged/graphql) - -## Facebook Group - -Join the [GraphQL Facebook Group](https://www.facebook.com/groups/graphql.community/) sharing and discovering new content. The GraphQL Facebook group is the preferred venue for announcements and broader discussion. - -## Twitter - -Use the [**#graphql** hashtag](https://twitter.com/search?q=%23GraphQL&src=tyah) on Twitter to join the conversation. - -Here are some helpful accounts to follow: -- [@GraphQL](https://twitter.com/GraphQL) -- [@graphqlweekly](https://twitter.com/graphqlweekly) -- [@GraphQLStackOverflow](https://twitter.com/GraphQLatSO) -- [@apollographql](https://twitter.com/apollographql) -- [@prisma](https://twitter.com/prisma) -- [@HasuraHQ](https://twitter.com/HasuraHQ) -- [@TheGuildDev](https://twitter.com/TheGuildDev) - -## IRC - -Chat with GraphQL developers on IRC at the [freenode](https://freenode.net/) server on the #graphql channel. - -## Slack & Discord - -Many GraphQL developers idle in Discord and Slack chatrooms for live -communication and quick questions. - -Join #graphql on the [ReactiFlux Discord](http://join.reactiflux.com/). - -### Slack Communities: - -- [**#general** on GraphQL](https://graphql.slack.com/messages/general/). [Get your invite here!](https://graphql-slack.herokuapp.com/) -- [Apollo Slack](http://apollostack.com/#slack) -- [Graphcool Slack](https://slack.graph.cool/) - -## Blogs - -Here are a list of notable blog posts to help you better understand GraphQL: - -- [GraphQL: A data query language](/blog/graphql-a-query-language/) - Lee Byron -- [Subscriptions in GraphQL and Relay](/blog/subscriptions-in-graphql-and-relay/) - Dan Schafer and Laney Kuenzel -- [Mocking your server is easy with GraphQL](/blog/mocking-with-graphql/) - Jonas Helfer -- [Wrapping a REST API in GraphQL](/blog/rest-api-graphql-wrapper/) - Steven Luscher -- [Leaving technical preview](/blog/production-ready/) - Lee Byron -- [Relicensing the GraphQL specification](https://medium.com/@leeb/relicensing-the-graphql-specification-e7d07a52301b) - Lee Byron -- [GraphQL Introduction](https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html) - Nick Schrock -- [From REST to GraphQL](https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.tag7nzkrb) - Jacob Gillespie -- [GraphQL Explained](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer -- [GraphQL Concepts Visualized](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya -- [Building the f8 App: Using GraphQL & Relay](http://makeitopen.com/docs/en/1-A2-relay.html) -- [Your First GraphQL Server](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp -- [Tutorial: Kick start a JS API with Apollo-server, Dataloader and Knex](https://bamtech.gitbook.io/dev-standards/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo) - Thomas Pucci -- [Tutorial: How to Build a GraphQL Server](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer -- [Designing Powerful APIs with GraphQL Query Parameters](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling -- [GraphQL and the amazing Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans -- [GraphQL Server Basics (Part I): The Schema](https://blog.graph.cool/graphql-server-basics-the-schema-ac5e2950214e) - Nikolas Burk -- [GraphQL Server Basics (Part II): The Network Layer](https://blog.graph.cool/graphql-server-basics-the-network-layer-51d97d21861) - Nikolas Burk -- [GraphQL Server Basics (Part III): Demystifying the `info` argument in GraphQL resolvers](https://blog.graph.cool/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a) - Nikolas Burk -- [A Beginner’s Guide to GraphQL](https://www.freecodecamp.org/news/a-beginners-guide-to-graphql-86f849ce1bec/) - Leonardo Maldonado -- [Architecture of a high performance GraphQL to SQL engine](https://blog.hasura.io/architecture-of-a-high-performance-graphql-to-sql-server-58d9944b8a87) - Hasura - -## Videos - -Developers inside and outside of Facebook have given talks about GraphQL at conferences and meetups around the world. Here are some of our favorites: - -- [Exploring GraphQL](https://www.youtube.com/watch?v=WQLzZf34FJ8) - Lee Byron, React Europe 2015 -- [From Zero to GraphQL in 30 Minutes](https://www.youtube.com/watch?v=UBGzsb2UkeY) - Steve Luscher -- [Exploring GraphQL](https://www.youtube.com/watch?v=_9RgHXqH8J0) - Nick Schrock, @Scale 2015 -- [GraphQL Servers](https://www.youtube.com/watch?v=KOudxKJXsjc) - Nick Schrock, React Rally 2015 -- [GraphQL at Facebook](https://www.youtube.com/watch?v=etax3aEe2dA) - Dan Schafer, React Europe 2016 -- [GraphQL Source Code Overview](https://www.youtube.com/watch?v=IqtYr6RX32Q) - Lee Byron -- [GraphQL Future](https://www.youtube.com/watch?v=ViXL0YQnioU) - Lee Byron & Laney Kuenzel -- [Apollo Client: Put GraphQL Data in Your UI](https://www.youtube.com/watch?v=u1E0CbGeICo) - Sashko Stubailo -- [Relay 2 - simpler, faster, and more predictable](https://www.youtube.com/watch?v=OEfUBN9dAI8) - Greg Hurrell -- [Build a GraphQL server for Node.js, using PostgreSQL/MySQL](https://www.youtube.com/watch?v=DNPVqK_woRQ) - Lee Benson -- [A GraphQL Framework for Non-JS Servers](https://www.youtube.com/watch?v=RNoyPSrQyPs) - Syrus Akbary -- [Modernize Your Angular App with GraphQL](https://www.youtube.com/watch?v=E8feZBidZcs) - Uri Goldshtein, AngularCamp 2016 -- [GraphQL server tutorial for Node.js with SQL, MongoDB and REST ](https://www.youtube.com/watch?v=PHabPhgRUuU) - Jonas Helfer -- [Building Native Mobile Apps with GraphQL](https://www.youtube.com/watch?v=z5rz3saDPJ8) - Martjin Walraven, React Europe 2016 -- [GraphQL in native applications](https://atscaleconference.com/videos/graphql-in-native-applications-at-scale/) - Igor Canadi & Alex Langenfeld, @Scale 2016 -- [Build a GraphQL Backend with the Serverless Framework](https://acloud.guru/learn/serverless-with-graphql) - Ryan Brown -- [Build a Full GraphQL Backend in Under 5 Minutes](https://www.youtube.com/watch?v=bJ8pnYd6jPQ) - Michael Paris -- [GraphQL: From Zero to Scala](https://www.youtube.com/watch?v=6ttypoLyRaU) - Jérémie Astori, Northeast Scala Symposium 2017 -- [GraphQL in Production: Backend as a Service](https://www.youtube.com/watch?v=U2NKoStGBvE) - Michael Paris & Vince Ning, GraphQL in Production Meetup SF August 2016 -- [Development of real-time apps with GraphQL Node.js](https://youtu.be/yh_A6CEqsSM) - Vince Ning & Michael Paris, SF Node Meetup February 2017 -- [Unleashing the power of GraphQL using Angular 2](https://www.youtube.com/watch?v=VYpJ9pfugM8) - Gerard Sans, NG-BE 2016 -- [Webinar Series: GraphQL Around The World](https://graphql-world.com/webinar) - Vince Ning & Michael Paris -- [All Talks from GraphQL Europe](https://www.youtube.com/playlist?list=PLn2e1F9Rfr6n_WFm9fPE-_wYPrYvSTySt) - Lee Byron, Sashko Stubailo, Dan Schafer, Johannes Schickling and many more -- [Learning GraphQL with React and Relay](https://www.packtpub.com/application-development/learning-graphql-react-and-relay-video) by Divyendu Singh -- [Hands-on GraphQL for Better RESTful Web Services (Video)](https://www.packtpub.com/application-development/hands-graphql-better-restful-web-services-video) by Ashwin Hegde -- [A PostgreSQL backed GraphQL BaaS](https://www.youtube.com/watch?v=neIZcc8y3B0) by Tanmai Gopal - -## Books - -- [The GraphQL Guide](https://graphql.guide) by John Resig and Loren Sands-Ramshaw -- [Learning GraphQL](https://www.amazon.com/Learning-GraphQL-Declarative-Fetching-Modern/dp/1492030716/) by Eve Porcello and Alex Banks -- [Fullstack GraphQL](https://www.graphql.college/fullstack-graphql) by Julian Mayorga -- [Craft GraphQL APIs in Elixir with Absinthe](https://pragprog.com/book/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe) by Bruce Williams and Ben Wilson -- [Learning GraphQL and Relay](https://www.packtpub.com/web-development/learning-graphql-and-relay) by Samer Buna -- [Hands-on Full-Stack Web Development with GraphQL and React](https://www.packtpub.com/web-development/hands-full-stack-web-development-graphql-and-react) by Sebastian Grebe -- [The Road to GraphQL](https://www.robinwieruch.de/the-road-to-graphql-book/) by Robin Wieruch -- [Production Ready GraphQL](https://book.productionreadygraphql.com/) by Marc-Andre Giroux - -## More Resources - -To explore other community-developed resources and content about GraphQL, take a look at these sites: - -- [Exploring GraphQL: A Query Language For APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis): A free 7 week edX course -- [How to GraphQL](https://www.howtographql.com): The Fullstack Tutorial for GraphQL -- [Building Apollo](https://blog.apollographql.com) -- [awesome-graphql](https://github.com/chentsulin/awesome-graphql): A fantastic community maintained collection of libraries, resources, and more. -- [graphql-apis](https://github.com/APIs-guru/graphql-apis): A collective list of public GraphQL APIs. -- [Basically, Full-stack GraphQL](https://github.com/TejasQ/basically-fullstack-graphql): A code-based introduction to working with GraphQL on the client _and_ server in plain English +The GraphQL community is worldwide, and includes developers, users, supporters, and fans from around the globe. You are welcome to join us! + +If you're new to the community, here are a few things to get you started. + +## Official channels + +The GraphQL community is active and has created a tremendous amount of valuable content, but we maintain a number of primary collaboration channels for the project. + +Please follow these channels for updates and information: + +
    + +- **Twitter:** [@graphql](https://twitter.com/graphql) +- **GitHub:** [github.com/graphql](https://github.com/graphql) +- **Discord** [discord.graphql.org](https://discord.graphql.org) +- **Facebook Group:** [fb.com/groups/graphql.community/](https://www.facebook.com/groups/graphql.community/) +- **Google Calendar:** [calendar.graphql.org](https://calendar.graphql.org) +- **Blog:** [graphql.org/blog](/blog/) + +
    + +## Community Grant program + +The [GraphQL Foundation](/foundation) funds a [Community Grant](/foundation/community-grant/) program that is administered by the [GraphQL TSC](/community/developers/#technical-governance). The goal of the community grant program is to provide support to individuals working on initiatives that benefit the core technical project and the community at large. + +## GraphQL Logo & Trademark + +The GraphQL name and logo are registered trademarks, and are neutrally held by The Linux Foundation. You may use the GraphQL mark so long as you adhere to the [trademark policy](https://lfprojects.org/policies/trademark-policy/). + +Download the GraphQL logo and find guidelines for its use in the [brand guidelines](/brand). + +## Code of conduct + +The [GraphQL Code of Conduct](/codeofconduct/) applies both within project spaces and in public spaces when an individual is representing the project or its community. + +## More information + +Keep reading to find [resources for users](/community/users/), [information for developers](/community/developers/), and [upcoming GraphQL-related events](/community/upcoming-events/). \ No newline at end of file diff --git a/src/content/community/Community-RunningProjects.md b/src/content/community/Community-RunningProjects.md new file mode 100644 index 0000000000..6e7759eaba --- /dev/null +++ b/src/content/community/Community-RunningProjects.md @@ -0,0 +1,77 @@ +--- +title: Project resources +layout: docs +category: Community +permalink: /community/project-resources/ +next: /community/upcoming-events/ +sublinks: Types of GraphQL projects,Running project meetings,Resources for projects +--- + +The following resources are intended to help official GraphQL projects understand what resources are available to them, and how to correctly run meetings.. + +## Types of GraphQL projects + +The GraphQL community is incredibly broad, with a large number of reference implementations which are developed and evolving in parallel to the GraphQL project. Many of them are listed [here](/code/). + +The primary distinction between official GraphQL projects and other implementations is that GraphQL projects are managed under the [GraphQL technical charter](https://technical-charter.graphql.org) and [GraphQL Code of Conduct](https://code-of-conduct.graphql.org). + +We welcome and encourage community members and third-parties to maintain their own implementations. + +> ### Making an independent project official +> +> If you maintain a tool or reference implementation that you'd like to transfer to the [GraphQL GitHub org](https://github.com/graphql), or if you are planning to start a new workgroup or implementation within the official GraphQL project, please add your name to the agenda of an upcoming [GraphQL Working Group meeting](https://github.com/graphql/graphql-wg/tree/HEAD/agendas) to introduce your idea. +> +> Should your proposal meet with approval, a few things will then need to happen. For example, we will work with you to adopt our policies and neutral governance, and help you transfer the project and its assets (generally the domain name and any trademarks) so that they are neutrally held at the Linux Foundation. If you'd like to explore the idea before making a proposal, please reach out to [operations@graphql.org](mailto:operations@graphql.org) + +## Running project meetings + +Because GraphQL is a [Joint Development Foundation](https://www.jointdevelopment.org/) project, all meeting participants and contributors must complete the GraphQL specification membership agreement prior to participating. + +Each **technical meeting** must: + +- Have an agenda Markdown document in the project repo published at least a week before the call. +- Have an "Attendees" section where people can open a PR and add their own names in advance. +- Optional, but encouraged: Use the GraphQL Zoom account so that we can easily post the meeting recording to [YouTube](https://youtube.graphql.org). + +Each **attendee** must: + +- Add their name to the agenda prior to the meeting. +- Pass the EasyCLA check by signing the agreement as an individual, or asking their company to add them to the list. + +The **person running the call** must: + +- Merge all appropriate attendance and agenda PRs with passing checks prior to the meeting. +- Verify that everyone who connects to the meeting appears on the list. +- If someone joins who is not on the list, they need to disconnect until they can PR themselves onto the attendee list with all checks passing. +- Notify all attendees the meeting is being recorded, and record to the cloud. +- Keep minutes, or have a volunteer to write them. Minutes should be published to the project repo. + +## Resources for projects + +### Zoom + +Official GraphQL projects and workgroups are welcome and encouraged to use the GraphQL zoom. Please contact [operations@graphql.org](mailto:operations@graphql.org) to get the credentials. + +### GitHub + +Official GraphQL projects can host their repos in the [graphql organization](https://github.com/graphql). This includes code repos, spec repos, and workgroup coordination repos. Please contact [operations@graphql.org](mailto:operations@graphql.org) for details. + +### YouTube playlist + +Wherever possible, we record meetings and post them to a playlist on the [GraphQL YouTube channel](https://youtube.graphql.org). If your project does not have a playlist, please contact [operations@graphql.org](mailto:operations@graphql.org) and we can set you up. + +### GraphQL calendar + +Project meetings should be added to the [GraphQL calendar](https://calendar.graphql.org), so that people can easily find them. + +### GraphQL domain registration and DNS management + +The Linux Foundation holds the top-level graphql.org domain, and a number of others. If you need to register a domain for your project (particularly if it includes the word "graphql") or need to manage DNS for a registered domain, please contact [operations@graphql.org](mailto:operations@graphql.org). + +### Trademark guidance + +The GraphQL trademark is managed by LF Projects. GraphQL projects are able to use the GraphQL name and marks in accordance with the [trademark policy](https://lfprojects.org/policies/trademark-policy/). If your project has questions about how you or others can use the mark, please contact [trademark@graphql.org](mailto:trademark@graphql.org). + +### All other questions + +If you have a question not covered here, please reach out to [operations@graphql.org](mailto:operations@graphql.org). diff --git a/src/content/community/Community-Users.md b/src/content/community/Community-Users.md new file mode 100644 index 0000000000..6fdc2cff40 --- /dev/null +++ b/src/content/community/Community-Users.md @@ -0,0 +1,153 @@ +--- +title: GraphQL for Users +layout: docs +category: Community +permalink: /community/users/ +next: /community/developers/ +sublinks: Training courses,Where to ask questions,Blogs,Videos,Books,More resources +--- + +The following resources are intended to help users and implementers. Find something useful? Please add it to the list! + +_Please note that the GraphQL Foundation does not provide support or services, and cannot recommend one vendor's product over another._ + +## Training courses + +A number of GraphQL training courses are available. + +- [Exploring GraphQL: A Query Language For APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis): A free 7 week edX course, developed by [Linux Foundation Training](https://training.linuxfoundation.org) +- [How to GraphQL](https://www.howtographql.com): The Fullstack Tutorial for GraphQL +- [Apollo Odyssey](https://apollographql.com/tutorials/): Interactive courses for building GraphQL applications with Apollo's toolset +- [Yoga GraphQL Server Tutorial](https://the-guild.dev/graphql/yoga-server/tutorial): Open source tutorial for creating modern GraphQL Servers in Node, CF Workers, Deno and others +- [GraphQL Tutorials](https://hasura.io/learn/): Real World Fullstack GraphQL tutorials for developers by Hasura + +## Where to ask questions + +### Stack Overflow + +Many members of the community use Stack Overflow to ask and answer questions. If you're running into an implementation issue or having trouble with a query, this is the best place to start. + +[Read through the existing questions tagged with **graphql** or ask your own!](http://stackoverflow.com/questions/tagged/graphql) + +### Live discussion + +Many GraphQL developers idle in Discord, Slack, and IRC for live +communication and can answer quick questions. + +Please be patient and polite. These are not explicitly user support channels, although they're likely a good place to find someone who can answer your question if you ask nicely. + +
    + +- [GraphQL Foundation Discord](https://discord.graphql.org) +- [GraphQL Reddit Community](https://www.reddit.com/r/graphql/) +- [GraphQL Community Facebook Group](https://www.facebook.com/groups/graphql.community/) +- [#help-graphql on the ReactiFlux Discord](http://join.reactiflux.com/) +- [#graphql on freenode IRC](https://freenode.net/) + +
    + +### Vendor channels + +The following channels are maintained by vendors, and may be a good place to find help on their products. + +- [Apollo Slack](http://apollostack.com/#slack) +- [ChilliCream Slack](http://slack.chillicream.com/) +- [Graphile Discord](https://discord.gg/graphile) +- [Prisma Slack](https://slack.prisma.io/) +- [Stellate Discord](https://go.stellate.co/community) + +## Blogs and Newsletters + +Popular sources to learn and keep track of the GraphQL Ecosystem + +- [Official GraphQL Blog](https://graphql.org/blog/) +- [Apollo's Blog](https://www.apollographql.com/blog/) +- [ChilliCream's Blog](https://chillicream.com/blog) +- [DEV.to GraphQL tag](https://dev.to/t/graphql) +- [Escape Security Blog](https://escape.tech/blog/) +- [GraphQL Editor Blog](https://blog.graphqleditor.com/) +- [GraphQL WTF Episodes Feed](https://graphql.wtf/) +- [GraphQL Weekly](https://www.graphqlweekly.com/) +- [Hasura's Blog](https://hasura.io/blog/) +- [Inigo's Security Blog](https://inigo.io/blog) +- [StepZen's Blog](https://stepzen.com/blog) +- [The Guild's Blog](https://the-guild.dev/blog) +- [The Guild's Newsletter](https://www.getrevue.co/profile/TheGuild) +- [WunderGraph's Blog](https://wundergraph.com/blog) + +### Individual Posts + +Here are a list of notable blog posts to help you better understand GraphQL: + +- [GraphQL: A data query language](/blog/graphql-a-query-language/) - Lee Byron +- [Subscriptions in GraphQL and Relay](/blog/subscriptions-in-graphql-and-relay/) - Dan Schafer and Laney Kuenzel +- [Mocking your server is easy with GraphQL](/blog/mocking-with-graphql/) - Jonas Helfer +- [Wrapping a REST API in GraphQL](/blog/rest-api-graphql-wrapper/) - Steven Luscher +- [Leaving technical preview](/blog/production-ready/) - Lee Byron +- [Relicensing the GraphQL specification](https://medium.com/@leeb/relicensing-the-graphql-specification-e7d07a52301b) - Lee Byron +- [GraphQL Introduction](https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html) - Nick Schrock +- [From REST to GraphQL](https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.tag7nzkrb) - Jacob Gillespie +- [GraphQL Explained](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer +- [GraphQL Concepts Visualized](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya +- [Building the f8 App: Using GraphQL & Relay](http://makeitopen.com/docs/en/1-A2-relay.html) +- [Your First GraphQL Server](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp +- [Tutorial: Kick start a JS API with Apollo-server, Dataloader and Knex](https://bamtech.gitbook.io/dev-standards/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo) - Thomas Pucci +- [Tutorial: How to Build a GraphQL Server](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer +- [Designing Powerful APIs with GraphQL Query Parameters](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling +- [GraphQL and the amazing Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans +- [GraphQL Server Basics (Part I): The Schema](https://blog.graph.cool/graphql-server-basics-the-schema-ac5e2950214e) - Nikolas Burk +- [GraphQL Server Basics (Part II): The Network Layer](https://blog.graph.cool/graphql-server-basics-the-network-layer-51d97d21861) - Nikolas Burk +- [GraphQL Server Basics (Part III): Demystifying the `info` argument in GraphQL resolvers](https://blog.graph.cool/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a) - Nikolas Burk +- [A Beginner’s Guide to GraphQL](https://www.freecodecamp.org/news/a-beginners-guide-to-graphql-86f849ce1bec/) - Leonardo Maldonado +- [Architecture of a high performance GraphQL to SQL engine](https://blog.hasura.io/architecture-of-a-high-performance-graphql-to-sql-server-58d9944b8a87) - Hasura + +## Videos + +Developers inside and outside of Facebook have given talks about GraphQL at conferences and meetups around the world. Here are some of our favorites: + +- [Exploring GraphQL](https://www.youtube.com/watch?v=WQLzZf34FJ8) - Lee Byron, React Europe 2015 +- [From Zero to GraphQL in 30 Minutes](https://www.youtube.com/watch?v=UBGzsb2UkeY) - Steve Luscher +- [Exploring GraphQL](https://www.youtube.com/watch?v=_9RgHXqH8J0) - Nick Schrock, @Scale 2015 +- [GraphQL Servers](https://www.youtube.com/watch?v=KOudxKJXsjc) - Nick Schrock, React Rally 2015 +- [GraphQL at Facebook](https://www.youtube.com/watch?v=etax3aEe2dA) - Dan Schafer, React Europe 2016 +- [GraphQL Source Code Overview](https://www.youtube.com/watch?v=IqtYr6RX32Q) - Lee Byron +- [GraphQL Future](https://www.youtube.com/watch?v=ViXL0YQnioU) - Lee Byron & Laney Kuenzel +- [Apollo Client: Put GraphQL Data in Your UI](https://www.youtube.com/watch?v=u1E0CbGeICo) - Sashko Stubailo +- [Relay 2 - simpler, faster, and more predictable](https://www.youtube.com/watch?v=OEfUBN9dAI8) - Greg Hurrell +- [Build a GraphQL server for Node.js, using PostgreSQL/MySQL](https://www.youtube.com/watch?v=DNPVqK_woRQ) - Lee Benson +- [A GraphQL Framework for Non-JS Servers](https://www.youtube.com/watch?v=RNoyPSrQyPs) - Syrus Akbary +- [Modernize Your Angular App with GraphQL](https://www.youtube.com/watch?v=E8feZBidZcs) - Uri Goldshtein, AngularCamp 2016 +- [GraphQL server tutorial for Node.js with SQL, MongoDB and REST ](https://www.youtube.com/watch?v=PHabPhgRUuU) - Jonas Helfer +- [Building Native Mobile Apps with GraphQL](https://www.youtube.com/watch?v=z5rz3saDPJ8) - Martjin Walraven, React Europe 2016 +- [GraphQL in native applications](https://atscaleconference.com/videos/graphql-in-native-applications-at-scale/) - Igor Canadi & Alex Langenfeld, @Scale 2016 +- [Build a GraphQL Backend with the Serverless Framework](https://acloud.guru/learn/serverless-with-graphql) - Ryan Brown +- [Build a Full GraphQL Backend in Under 5 Minutes](https://www.youtube.com/watch?v=bJ8pnYd6jPQ) - Michael Paris +- [GraphQL: From Zero to Scala](https://www.youtube.com/watch?v=6ttypoLyRaU) - Jérémie Astori, Northeast Scala Symposium 2017 +- [GraphQL in Production: Backend as a Service](https://www.youtube.com/watch?v=U2NKoStGBvE) - Michael Paris & Vince Ning, GraphQL in Production Meetup SF August 2016 +- [Development of real-time apps with GraphQL Node.js](https://youtu.be/yh_A6CEqsSM) - Vince Ning & Michael Paris, SF Node Meetup February 2017 +- [Unleashing the power of GraphQL using Angular 2](https://www.youtube.com/watch?v=VYpJ9pfugM8) - Gerard Sans, NG-BE 2016 +- [Webinar Series: GraphQL Around The World](https://graphql-world.com/webinar) - Vince Ning & Michael Paris +- [All Talks from GraphQL Europe](https://www.youtube.com/playlist?list=PLn2e1F9Rfr6n_WFm9fPE-_wYPrYvSTySt) - Lee Byron, Sashko Stubailo, Dan Schafer, Johannes Schickling and many more +- [Learning GraphQL with React and Relay](https://www.packtpub.com/application-development/learning-graphql-react-and-relay-video) by Divyendu Singh +- [Hands-on GraphQL for Better RESTful Web Services (Video)](https://www.packtpub.com/application-development/hands-graphql-better-restful-web-services-video) by Ashwin Hegde +- [A PostgreSQL backed GraphQL BaaS](https://www.youtube.com/watch?v=neIZcc8y3B0) by Tanmai Gopal + +## Books + +- [The GraphQL Guide](https://graphql.guide) by John Resig and Loren Sands-Ramshaw +- [Learning GraphQL](https://www.amazon.com/Learning-GraphQL-Declarative-Fetching-Modern/dp/1492030716/) by Eve Porcello and Alex Banks +- [Fullstack GraphQL](https://www.graphql.college/fullstack-graphql) by Julian Mayorga +- [Craft GraphQL APIs in Elixir with Absinthe](https://pragprog.com/book/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe) by Bruce Williams and Ben Wilson +- [Learning GraphQL and Relay](https://www.packtpub.com/web-development/learning-graphql-and-relay) by Samer Buna +- [Hands-on Full-Stack Web Development with GraphQL and React](https://www.packtpub.com/web-development/hands-full-stack-web-development-graphql-and-react) by Sebastian Grebe +- [The Road to GraphQL](https://www.robinwieruch.de/the-road-to-graphql-book/) by Robin Wieruch +- [Production Ready GraphQL](https://book.productionreadygraphql.com/) by Marc-Andre Giroux + +## More Resources + +To explore other community-developed resources and content about GraphQL, take a look at these sites: + +- [Building Apollo](https://blog.apollographql.com) +- [awesome-graphql](https://github.com/chentsulin/awesome-graphql): A fantastic community maintained collection of libraries, resources, and more. +- [graphql-apis](https://github.com/APIs-guru/graphql-apis): A collective list of public GraphQL APIs. +- [GraphQL Screencasts](https://graphql.wtf): Learn something new with GraphQL, every week. diff --git a/src/content/faq/BestPractices.md b/src/content/faq/BestPractices.md new file mode 100644 index 0000000000..f4ec70cf41 --- /dev/null +++ b/src/content/faq/BestPractices.md @@ -0,0 +1,60 @@ +--- +title: Best Practices +layout: faq +permalink: /faq/best-practices +position: 3 +--- + +### Is GraphQL scalable? + +Yes, GraphQL is designed to be scalable and is used by many companies in production under a very high load. + +GraphQL comes with some [built-in performance boosts](#how-does-graphql-affect-my-product-s-performance) that can help. But once you push it to production, you're responsible for scaling it across instances and monitoring performance. + +### Does GraphQL support offline usage? + +No, or at least not natively. But there are [GraphQL clients](#what-is-a-graphql-client-and-why-would-i-need-one) that enable you to build offline-first. They use features designed to perform data operations while offline, such as caching and service workers. + +You can find a list of GraphQL clients in various languages on our [Code page](/code/). + +### What are the security concerns with GraphQL? + +Most of the security concerns associated with GraphQL are typical for any API or service. A few examples: SQL injections, Denial of Service (DoS) attacks, or someone abusing flawed authentication. But there are also some attacks specific to GraphQL. For instance, [batching attacks](https://cheatsheetseries.owasp.org/cheatsheets/GraphQL_Cheat_Sheet.html#batching-attacks). These attacks can happen as a result of GraphQL allowing you to batch multiple queries (or requests for multiple object instances) in a single network call. + +No matter the concern, it’s important to be proactive. There are many ways to securing your GraphQL server. Using a timeout, setting a maximum depth for queries, and throttling queries based on the server time it needs to complete are all potential approaches. + +For an overview of common security concerns and how to address them, check out the [Security tutorial on How to GraphQL](https://www.howtographql.com/advanced/4-security/) and [OWASP’s GraphQL Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/GraphQL_Cheat_Sheet.html). + +### How can I set up authorization with GraphQL? + +We recommend enforcing authorization behavior in the [business logic layer](/learn/thinking-in-graphs/#business-logic-layer). That way, you have a single source of truth for authorization. + +For a more detailed explanation, go to our [Authorization documentation](/learn/authorization/). + +### How does authentication work with GraphQL? + +You can implement authentication with common patterns, such as [OAuth](https://oauth.net/) or [JWT](https://jwt.io/). There’s nothing special about authentication within the GraphQL specification. + +Some [GraphQL libraries](/code/#language-support) include a specific protocol for authentication as well. Although if you’re working with a pipeline model, we recommend that [GraphQL be placed after all authentication middleware](/learn/serving-over-http/#web-request-pipeline). + +If you’re using [GraphQL.js](/graphql-js/) to build your API server, we have documentation on [handling authentication with Express middleware](/graphql-js/authentication-and-express-middleware/). + +### Is GraphQL the right fit for designing a microservice architecture? + +Yes, it can be. If you’re integrating GraphQL into your microservice architecture, we’d recommend having one GraphQL schema as an API gateway rather than having your client talk to multiple GraphQL services. This way, you can split your backend into microservices, but then still aggregate all your data to the frontend from a single API. + +There are many ways to create an API gateway. The benefit of using GraphQL is that you can take advantage of features like [caching](/learn/caching/), request budgeting, and planning out query schedules. + +### How does versioning work in GraphQL? + +There’s nothing that will prevent a GraphQL service from being versioned like any other REST API. That said, GraphQL avoids versioning by design. + +Instead, GraphQL provides the tools to continually build and evolve your schema. For example, GraphQL only returns the data that’s explicitly requested. This means that you can add new features (and all the associated types and fields) without creating a breaking change or bloating results for existing queries. + +You can read more about [how versioning works in GraphQL](/learn/best-practices/#versioning) in our Best Practices section. + +### How can I document my GraphQL API? + +One of the benefits of GraphQL is that it's inherently self-documenting. This means that when you use an interactive tool like [GraphiQL](https://github.com/graphql/graphiql), you’re able to explore what data is exposed by your GraphQL API. This includes the [fields](/learn/queries/#fields), [types](/learn/schema/#type-system), and more. You can also add a [description field](https://spec.graphql.org/draft/#sec-Documentation) to provide supplementary notes about your endpoint. This description field supports strings and Markdown. + +For many, this provides enough API reference documentation. But it doesn’t reduce the need for other forms of documentation. You'll likely still need to create guides that explain how the general concepts tie into your specific use case. diff --git a/src/content/faq/Foundation.md b/src/content/faq/Foundation.md new file mode 100644 index 0000000000..76cfc3879e --- /dev/null +++ b/src/content/faq/Foundation.md @@ -0,0 +1,54 @@ +--- +title: GraphQL Foundation +layout: faq +permalink: /faq/graphql-foundation +position: 6 +--- + +### What does the GraphQL Foundation do? + +The primary responsibility of the Foundation is to set policy and allocate the budget to maximize the sustainability of the GraphQL community. Members participate on a governing board that meets monthly and decides how to allocate its funding. + +### Where does the funding go when I become a member? + +The GraphQL Foundation is funded exclusively through the support of our members. The governing board sets an annual budget to use the dues to the maximum benefit of the community. +Ways the Foundation distributes the money raised through memberships include: + +- Providing grants and sponsorship to core community developers who are working in neutral roles. +- Funding core community IT infrastructure. +- Funding coordination, financial, and legal support programs for the Foundation and the GraphQL project ecosystem. +- Other community and developer support programs. + +The GraphQL Foundation budget is realigned as the needs of the community change. + +### How are decisions made? + +As with other Linux Foundation projects, the governing board makes decisions through votes. Every vote is equal and no members have special voting rights or privileges. The charter currently limits the governing board to 25 members. + +### Who can join the GraphQL Foundation? + +GraphQL Foundation membership is open to companies who wish to support the GraphQL ecosystem. As the GraphQL Foundation is hosted at the [Linux Foundation](https://linuxfoundation.org), members must also join the Linux Foundation. + +### Do I need to join the Foundation to participate in GraphQL development? + +No, Foundation membership is separate from the technical development community. There is no cost to participate in GraphQL development, although you must sign the [free GraphQL Specification membership agreement](https://github.com/graphql/graphql-wg/tree/main/membership) in order to participate. These two things are different from each other. + +Members join the Foundation in order to provide essential funding and participate in the decisions on how it is used. Developers join the GraphQL Specification in order to contribute ideas, code, and other content. Many companies do both. + +### How do I participate in technical development? + +We would love to have you! The best place to get started is the [GraphQL Working Group](https://github.com/graphql/graphql-wg/tree/HEAD/membership), which meets monthly. Open a PR to add yourself to the agenda, and you are welcome to join. + +Otherwise, you can get involved in [any of our other projects](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project). + +### Who founded the organization? + +The GraphQL Foundation was founded by Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and Thicit. + +### Who is currently a member? + +You can learn more about our membership on the [GraphQL Foundation membership page](/foundation/members/). + +### How do we join? + +You can become a member of GraphQL Foundation and the Linux Foundation by completing our [membership application form](https://join.graphql.org). diff --git a/src/content/faq/Frontend.md b/src/content/faq/Frontend.md new file mode 100644 index 0000000000..1d3de9e230 --- /dev/null +++ b/src/content/faq/Frontend.md @@ -0,0 +1,12 @@ +--- +title: Frontend +layout: faq +permalink: /faq/frontend +position: 5 +--- + +### Does GraphQL replace Redux or other state management libraries? + +No, GraphQL isn’t a state management library - but it can reduce the need for one. + +One benefit of state management libraries like Redux is that they can manipulate API responses into a format that your application understands. With GraphQL, you have control over [what data you request](/learn/queries/#fields) and typically results are formatted in a client-friendly way by the graph design. So this benefit is already built-in. Many [client libraries](#what-is-a-graphql-client-and-why-would-i-need-one) can also be used to manage state and have features like caching built-in. You may still decide to implement a state management library, but using it to format response data is generally not necessary. diff --git a/src/content/faq/General.md b/src/content/faq/General.md new file mode 100644 index 0000000000..1072910a9e --- /dev/null +++ b/src/content/faq/General.md @@ -0,0 +1,58 @@ +--- +title: General +layout: faq +permalink: /faq/general +position: 2 +--- + +### Is GraphQL frontend or backend? + +Both. GraphQL specifies how you can [exchange information between client and server](https://www.howtographql.com/basics/3-big-picture/). This includes how the server can indicate [what data and operations are available](/learn/introspection/), how the client should [format requests](/learn/queries/), how the server should [execute these queries](/learn/execution/), and what the client will [receive in response](/learn/serving-over-http/#response). + +### Does GraphQL use HTTP? + +Yes, [GraphQL is typically served over HTTP](/learn/best-practices/#http). This is largely due to how pervasive the HTTP protocol is in our industry. But it helps that you can try out GraphQL by creating [a single HTTP request](#why-should-i-use-graphql). Guidelines for setting up a GraphQL server to operate over HTTP are available in our [Serving over HTTP](/learn/serving-over-http/) documentation. + +While HTTP is the most common choice for client-server protocol, it’s not the only one. GraphQL is agnostic to the transport layer. So, for example, you could use [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) for GraphQL subscriptions instead of HTTP to consume realtime data. + +### How does GraphQL affect my product’s performance? + +On a typical GraphQL backend, every field on every type has a focused, single-purpose function for resolving that value. Also, instead of trying to handle data batching on the client, [GraphQL moves that logic to the server](/learn/best-practices/#server-side-batching-caching). As a result, there are some inherent performance benefits. Minimizing over-fetching and making [fewer roundtrips to the server](/learn/queries/#fields) are two of them. + +Other performance factors should be considered when building out your GraphQL implementation. For example, it’s possible for a GraphQL service to be ‘chatty’ and repeatedly load data from your database. This is commonly solved by [implementing a batching technique](/learn/best-practices/#server-side-batching-caching) or [utilizing a tool like DataLoader](https://github.com/graphql/dataloader). + +### What is a GraphQL client and why would I use one? + +GraphQL clients can help you handle [queries, mutations,](/learn/queries/) and [subscriptions](https://spec.graphql.org/draft/#sec-Subscription) to a [GraphQL server](https://www.howtographql.com/advanced/1-server/). They use the underlying structure of a GraphQL API to automate certain processes. This includes batching, UI updates, build-time schema validation, and more. + +A list of GraphQL clients in various languages is available on our [Code page](/code/). There’s also an [in-depth explanation of their benefits](https://www.howtographql.com/advanced/0-clients/) on How To GraphQL. + +You don't need a specific client to work with GraphQL, though. You might want to start out by [issuing GraphQL results with a regular HTTP client](/learn/serving-over-http/). Then later switch to a GraphQL-optimized client as your application grows in complexity. + +### Does GraphQL replace ORMs? + +No, GraphQL is a specification typically used for remote client-server communications. It's [agnostic to the data source(s) used](#is-graphql-a-database-language-like-sql) and doesn’t implement an object-relational mapping technique. But there are ORMs built specifically for GraphQL. A few of those are listed under the [Services section of our Code page](/code/#services). + +### Is GraphQL owned by Facebook? + +No, GraphQL is governed by the [GraphQL Foundation](#what-is-the-graphql-foundation). + +That said, the specification was originally developed at Facebook and [Facebook is a member](https://foundation.graphql.org/members/) of the GraphQL Foundation. You might notice that some of our [GitHub repositories](https://github.com/graphql/) still have the license listed under Facebook Inc. We're updating those and have already converted major projects, like [GraphiQL](https://github.com/graphql/graphiql/blob/main/LICENSE) and [DataLoader](https://github.com/graphql/dataloader/blob/master/LICENSE), to the the new copyright: "Copyright (c) 2020 GraphQL Contributors." + +### Who is behind GraphQL? + +Many people! The [GraphQL specification and all related projects](http://github.com/graphql/) are open source, so anyone is welcome to [contribute](#how-can-i-contribute-to-the-specification). That said, there is a structure in place behind the repositories. This exists to resolve conflicts within the community and guiding technical decisions. + +The [GraphQL Foundation](#what-is-the-graphql-foundation) provides most of the oversight for GraphQL. It's made up of [representatives from dozens of different companies](https://foundation.graphql.org/members/). + +There are also monthly virtual [GraphQL Working Group (WG)](https://github.com/graphql/graphql-wg) meetings managed by the GraphQL Foundation. These meetings are designed to bring together maintainers of commonly used GraphQL libraries and tools, as well as significant contributors to the GraphQL community. The WG meetings are completely open. Anyone is able to join and [propose items to the agenda](https://github.com/graphql/graphql-wg/blob/main/agendas/). + +In the [November 2020 WG meeting](https://www.youtube.com/watch?v=UybZp9O24Ow), it was announced that GraphQL will have a Technical Steering Committee (TSC) going forward. More on that coming soon. + +If this is confusing, don’t worry - there’s a lot going on. To get a more visual, high-level overview, check out the [GraphQL Landscape](https://landscape.graphql.org/). + +### What is the GraphQL Foundation? + +The [GraphQL Foundation](https://foundation.graphql.org/faq/) is a neutral foundation that provides governance for GraphQL. This includes vendor-neutral oversight of open-source repositories, funding, events, and more. It's hosted under the [Linux Foundation](https://www.linuxfoundation.org/) and consists of [representatives from dozens of different companies](https://foundation.graphql.org/members/). The idea is that it’s an impartial and open home for the GraphQL community. + +You can find out more by visiting [foundation.graphql.org](https://foundation.graphql.org/). diff --git a/src/content/faq/GettingStarted.md b/src/content/faq/GettingStarted.md new file mode 100644 index 0000000000..8a8630af4f --- /dev/null +++ b/src/content/faq/GettingStarted.md @@ -0,0 +1,50 @@ +--- +title: Getting Started +layout: faq +permalink: /faq/getting-started +position: 1 +--- + +### Why should I use GraphQL? + +It depends on your use case, but in general, GraphQL has a few key features that stand out. For example, GraphQL enables you to: + +- Aggregate data from [multiple UI components](/learn/queries/#fragments). +- Create a representation of your data that feels familiar and natural ([a graph](/learn/thinking-in-graphs/#it-s-graphs-all-the-way-down)). +- Ensure that all of your data is [statically typed](/learn/schema/) and these types inform [what queries the schema supports](/learn/introspection/). +- [Reduce the need for breaking changes](/learn/best-practices/#versioning), but utilize a [built-in mechanism for deprecations](https://spec.graphql.org/draft/#sec--deprecated) when you need to. +- Access to a [powerful tooling ecosystem](/code/#generic-tools) with GUIs, editor integrations, code generation, linting, analytics, and more. + +[Our homepage](/) outlines even more reasons to use GraphQL. + +You can try out GraphQL without rewriting your entire application. For instance, starting with a single HTTP request that wraps an existing REST call. Your [GraphQL schema](/learn/thinking-in-graphs/#shared-language) and [business domain model](/learn/thinking-in-graphs/#business-logic-layer) can expand gradually. We recommend focusing on one use case at first and only building the part of the schema needed for that. + +### Does GraphQL replace REST? + +No, not necessarily. They both handle APIs and can [serve similar purposes](/learn/thinking-in-graphs/#business-logic-layer) from a business perspective. GraphQL is often considered an alternative to REST, but it’s not a definitive replacement. + +GraphQL and REST can actually co-exist in your stack. For example, you can abstract REST APIs behind a [GraphQL server](https://www.howtographql.com/advanced/1-server/). This can be done by masking your REST endpoint into a GraphQL endpoint using [root resolvers](/learn/execution/#root-fields-resolvers). + +For an opinionated perspective on how GraphQL compares to REST, check out [How To GraphQL](https://www.howtographql.com/basics/1-graphql-is-the-better-rest/). + +### Is GraphQL a database language like SQL? + +No, but this is a common misconception. + +GraphQL is a specification typically used for remote client-server communications. Unlike SQL, GraphQL is agnostic to the data source(s) used to retrieve data and persist changes. Accessing and manipulating data is performed with arbitrary functions called [resolvers](/learn/execution/). GraphQL coordinates and aggregates the data from these resolver functions, then returns the result to the client. Generally, these resolver functions should delegate to a [business logic layer](/learn/thinking-in-graphs/#business-logic-layer) responsible for communicating with the various underlying data sources. These data sources could be remote APIs, databases, [local cache](/learn/caching/), and nearly anything else your programming language can access. + +For more information on how to get GraphQL to interact with your database, check out our [documentation on resolvers](/learn/execution/#root-fields-resolvers). + +### How can I learn GraphQL? + +There are many resources available to help you learn GraphQL, including this website. In [our documentation](/learn/), you’ll find a series of articles that explain essential GraphQL concepts and how they work. Our [Community page](/community) is full of resources to reference and groups to join. + +For more practical guides, visit the [How to GraphQL](https://www.howtographql.com/) fullstack tutorial website. We also have a free online course with edX, [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis). + +Before you start your learning journey, make sure you know [what an API is](https://www.codenewbie.org/blogs/an-intro-to-apis) and how communication generally works between client and server. + +### Is GraphQL only for React or JavaScript developers? + +No, not at all. [GraphQL is a specification](https://spec.graphql.org/) that can be [implemented in any language](/learn/schema/#type-language). Our [Code page](/code/) contains a long list of libraries in many different programming languages to help with that. + +It’s understandable why you’d think this, though. GraphQL was introduced at a [React conference](https://www.youtube.com/watch?v=9sc8Pyc51uU) and [GraphQL.js](/graphql-js/) is one of the most widely used implementations to date. We know this can be confusing, so we’re working to improve our documentation and add more code samples that aren’t written in JavaScript. diff --git a/src/content/faq/Specification.md b/src/content/faq/Specification.md new file mode 100644 index 0000000000..4a21c82964 --- /dev/null +++ b/src/content/faq/Specification.md @@ -0,0 +1,32 @@ +--- +title: Specification +layout: faq +permalink: /faq/specification +position: 4 +--- + +### What is the best way to follow specification releases? + +The latest working draft release of the GraphQL specification can be found at [spec.graphql.org/draft](https://spec.graphql.org/draft/). Previous editions are also available at permalinks that match their [release tag](https://github.com/graphql/graphql-spec/releases). + +The entire process behind each release is open source. You can monitor specification proposals by following [pull requests in the graphql-spec repository](https://github.com/graphql/graphql-spec/pulls). You can also watch past GraphQL Working Group discussions about various proposals on [YouTube](https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA). + +### How can I contribute to the GraphQL specification? + +GraphQL is still evolving and contributions are very welcome! The specification (including the [latest working draft](https://spec.graphql.org/)) is open source. [Contributor guidelines](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md) are available on GitHub. + +There are more ways to get involved with GraphQL beyond the specification though. Updating the content on [this website and the documentation](https://github.com/graphql/graphql.github.io), for example. Or contributing to [graphql-js](https://github.com/graphql/graphql-js), [express-graphql](https://github.com/graphql/express-graphql), [GraphiQL](https://github.com/graphql/graphiql), or [one of the many other projects](https://github.com/graphql/) maintained by the [GraphQL Foundation](#what-is-the-graphql-foundation). + +### What is GraphQL Specification membership? + +The [GraphQL Specification](https://specification.graphql.org) and the associated reference implementations are a Joint Development Foundation project (also part of the Linux Foundation family). Individual or corporate contributors sign a document at no cost that they agree their contributions are under the open source licenses of the project. Because this is not GraphQL Foundation membership, specification members do not decide how to spend the budget. + +To sign the [GraphQL Specification membership document](https://github.com/graphql/graphql-wg/tree/HEAD/membership), open a PR against any [GraphQL repo on GitHub](https://github.com/graphql). + +If your organization uses and benefits from GraphQL, please consider becoming a member of both by opening a PR on behalf of your company and [joining the GraphQL Foundation](https://join.graphql.org). + +### Where is the documentation for subscriptions? + +It's not on this website yet, but we're working on it. If you'd like to help write guides on subscriptions, please [let us know](https://github.com/graphql/graphql.github.io/issues/993). + +For now, the specification includes details for [how to write and execute subscriptions](https://spec.graphql.org/draft/#sec-Subscription). diff --git a/src/content/foundation/About.md b/src/content/foundation/About.md new file mode 100644 index 0000000000..f2347d12ed --- /dev/null +++ b/src/content/foundation/About.md @@ -0,0 +1,32 @@ +--- +title: What is the GraphQL Foundation? +sidebarTitle: About the Foundation +heroText: An open and neutral home for the GraphQL community, dedicated to promoting widespread adoption and accelerating development of the surrounding ecosystem +layout: foundation +category: GraphQL Foundation +permalink: /foundation/ +next: /foundation/join/ +--- + +The **GraphQL Foundation** is a neutral foundation founded by global technology and application development companies. The GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for GraphQL. + +GraphQL was created in 2012 and open sourced by Facebook in 2015. In 2019, Facebook and others [created the GraphQL Foundation](https://foundation.graphql.org/news/2019/03/12/the-graphql-foundation-announces-collaboration-with-the-joint-development-foundation-to-drive-open-source-and-open-standards/) as a neutral, non-profit home for the GraphQL assets and ongoing collaboration, and hosted by [The Linux Foundation](https://linuxfoundation.org). The GraphQL Foundation is a fully neutral home for the GraphQL trademark, and provides a means of collecting and distributing membership dues to support core community infrastructure and programs. + +## The GraphQL Foundation supports the community + +The primary mission of the GraphQL Foundation is to ensure that the GraphQL community is able to focus on the continued evolution of the [specification](https://spec.graphql.org) and [reference implementations](/code/). We accomplish this through a number of core activities: + +- Funding grants for project maintainers and community gardeners. +- Coordinating and funding mentorship programs. +- Providing collaboration infrastructure. +- Managing the GraphQL trademark and related policies. +- Providing legal support for projects. +- Operational and logistical support through The Linux Foundation. + +The GraphQL Foundation works in close collaboration with the [GraphQL Working Group](https://github.com/graphql/graphql-wg/) and the [GraphQL TSC](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). + +## Members support the GraphQL Foundation + +The GraphQL Foundation would like to thank [our current members](/foundation/members/) for their ongoing support to ensure the sustainability of the GraphQL ecosystem. Learn more about how your company can demonstrate its commitment to GraphQL by [becoming a member of the GraphQL Foundation](https://graphql.org/foundation/join). + +If you have questions, you can reach out to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/foundation/AnnualReports.md b/src/content/foundation/AnnualReports.md new file mode 100644 index 0000000000..c6890df0fb --- /dev/null +++ b/src/content/foundation/AnnualReports.md @@ -0,0 +1,19 @@ +--- +title: Annual Reports +sidebarTitle: Annual Reports +heroText: Reflecting upon our accomplishments, anticipating our future +layout: foundation +category: GraphQL Foundation +permalink: /foundation/annual-reports/ +next: /foundation/members/ +--- + +The GraphQL annual reports are a celebration of the ongoing work happening in the GraphQL technical community, the GraphQL Foundation, and our members. + +If you have an item you'd like to add to the annual report, please contact [operations@graphql.org](mailto:operations@graphql.org). + +## 2019 + +The GraphQL Foundation was founded in 2019, to support and sustain the GraphQL ecosystem. We had a busy first year! + +[Read the 2019 Annual Report »](/foundation/annual-reports/2019/) diff --git a/src/content/foundation/CommunityGrantProgram.md b/src/content/foundation/CommunityGrantProgram.md new file mode 100644 index 0000000000..2afa9cbde1 --- /dev/null +++ b/src/content/foundation/CommunityGrantProgram.md @@ -0,0 +1,72 @@ +--- +title: GraphQL Community Grant +sidebarTitle: Community Grant +heroText: The GraphQL Community Grant program helps the GraphQL Foundation invest directly into the success, health, and sustainability of our ecosystem. +layout: foundation +category: GraphQL Foundation +permalink: /foundation/community-grant/ +sublinks: How to apply,FAQs +next: /foundation/contact/ +--- + +The GraphQL Community Grant program is funded by the GraphQL Foundation and administered by the [GraphQL Technical Steering Committee (TSC)](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). The goal of the program is to provide financial support and incentives for key technical and community initiatives. + +The GraphQL Community Grant program accepts applications on a quarterly cycle. Grant applications are reviewed by the TSC based upon funding that is received as membership dues for the GraphQL Foundation. This is one way in which the GraphQL Foundation directly supports the ongoing health of the GraphQL developer ecosystem. + +We would like to encourage you to be creative in your grant application, and propose tasks that are straightforward to articulate, achievable in three months, and bounded in scope. + +Examples include: + +- Finishing an outstanding feature that has been untended +- Community gardening, such as clarifying documentation of community processes, getting started guides for newcomers, maintaining "Good first issue" lists, or organizing a community collaboration. +- Community advocacy, such as writing a deep-dive blog documenting a specific feature, writing a whitepaper, or creating an outreach program. + +## How to apply + +The GraphQL Community Grant Program [accepts applications at any time](https://grant-application.graphql.org), and evaluates all undecided applications four times per year. All applications will be closed after an evaluation cycle has completed. Applicants may re-apply at any point. + +To apply, please complete the [GraphQL Community Grant Program application](https://grant-application.graphql.org). + +## FAQs + +### Do I need to be developing the specification or code to apply? + +While we anticipate most applications will be for new technical development, we also encourage applications for community-building activities. Examples include community gardening and neutral advocacy for GraphQL adoption. + +### What work is expected? + +Applications should describe work that can be completed in two to three months. Additionally, we'll ask you to write a blog post report after three months describing your work and its impact on the GraphQL community. + +### What amount of money is available per grant? + +The grant amount offered will depend on our available funding and the number of approved grants per cycle. Individual grants are expected to be between $1,000 and $10,000 USD. + +### How often can I apply? + +You can apply one time per cycle. You can apply in every cycle regardless of whether you had a past application selected or closed in a prior cycle. + +### Who is eligible? + +Any individual working in the GraphQL developer community who can receive a payment from a US-based +organization. Please note that this program is not work-for-hire, and this is not an employment arrangement. + +_Only individuals are eligible to receive funding._ + +### Are there any restrictions on what I produce? + +Yes. All outcomes from the grant must be for the benefit of the GraphQL community, meaning that code +must be contributed to public repositories under an appropriate open source license (generally MIT). +Publications and documentation should be available to the public and not behind a paywall. We also +expect every recipient to write a blog post summarizing the work they've done and how it benefits +the community at large. + +In summary, the GraphQL Community Grant Program is for the benefit of the GraphQL community. We want +everything that is produced under this program to be usable by our community. + +### Do I have to sign anything? + +Yes, if your proposal is selected you will need to sign the GraphQL Grantee Agreement ([preview](https://grantee-agreement-preview.graphql.org) in order to receive the funding. It is your responsibility to read and understand the contents of the agreement. + +## More information + +If you have questions, please contact [operations@graphql.org](mailto:operations@graphql.org). diff --git a/src/content/foundation/Contact.md b/src/content/foundation/Contact.md new file mode 100644 index 0000000000..65a76a1410 --- /dev/null +++ b/src/content/foundation/Contact.md @@ -0,0 +1,52 @@ +--- +title: Contact the GraphQL Foundation +sidebarTitle: Contact us +heroText: The GraphQL Foundation is here to help. +layout: foundation +category: GraphQL Foundation +permalink: /foundation/contact/ +sublinks: Membership Inquiries,Membership Support,Meeting Logistics,Trademark Requests,Media Inquries,Technical Issues,General +next: /foundation/annual-reports/ +--- + +The GraphQL Foundation is supported by staff from [The Linux Foundation](https://linuxfoundation.org). If you have questions, please reach out to us using the links below. + +_Please note that we do not provide user support for GraphQL. If you have an implementation question, +please use the [relevant community channels](/community/)._ + +## Membership Inquiries + +If you would like to learn more about becoming a GraphQL member, please email +[membership@graphql.org](mailto:membership@graphql.org). + +## Membership Support + +If you are already a member of the [GraphQL Foundation](/foundation/) and you need help with your membership, please file an issue with our [member service desk](https://members.graphql.org). + +## Meeting Logistics + +Governing board and Working Group members who need help with meeting logistics (setting up a Zoom conference, adding or changing a calendar entry, designating an alternate representative, etc.) can reach out through our [member service desk](https://members.graphql.org). + +## Trademark Requests + +For guidance using the GraphQL trademark and brand see our [brand guidelines](/brand). For trademark licensing questions or requests please reach out to [info@graphql.org](mailto:info@graphql.org?subject=Trademark%20Request). + +## Media Inquiries + +For media inquiries, please reach out to [pr@graphql.org](mailto:pr@graphql.org). + +## Technical Issues + +To report a technical issue with GraphQL, please use the [community channels](/community/). + +## General + +For all other inquiries, please email [info@graphql.org](mailto:info@graphql.org). + +Our mailing address is: + +> **GraphQL Foundation** +> 548 Market St +> PMB 57274 +> San Francisco, California +> 94104-5401 US diff --git a/src/content/foundation/GraphQLConf.md b/src/content/foundation/GraphQLConf.md new file mode 100644 index 0000000000..3814fdab2c --- /dev/null +++ b/src/content/foundation/GraphQLConf.md @@ -0,0 +1,31 @@ +--- +title: GraphQL Conf +sidebarTitle: GraphQL Conf +heroText: The official GraphQL conference, hosted by the GraphQL Foundation. +layout: conf +category: GraphQL Foundation +permalink: /foundation/graphql-conf/ +sublinks: GraphQLConf 2023,GraphQLConf 2022 +next: /foundation/community-grant/ +--- + +By the community and for the community, GraphQLConf is a vendor-neutral event that brings together core contributors, community members, open source leaders, academics, vendors, and industry practitioners to discuss recent work, share techniques, and plan for the future. + +## GraphQLConf 2023 + +We're looking forward to [GraphQLConf 2023](/conf/) in SF Bay Area, CA on September 19-21, 2023. + +Join us by [registering](/conf/#register), consider [submitting a talk](/conf/speak/), and help produce an incredible event by [sponsoring us](/conf/sponsor/). + +## GraphQLConf 2022 + +The GraphQL Foundation's inaugural GraphQL Conf was co-located with [OpenJS World](https://events.linuxfoundation.org/openjs-world/) and [cdCon](https://events.linuxfoundation.org/cdcon/) in Austin, TX on June 7-8, 2022. This collaborator summit-style event provided an opportunity for core GraphQL spec and implementation developers to meet in-person, discuss recent work, and plan for the future. All attendees of OpenJS World and cdCon were welcome. + +Talks covered: + +- Recent activity in the GraphQL specification working group, such as Defer and Stream, Input Unions, and Client-Controlled Nullability. +- Downstream implementations of GraphQL +- Security considerations +- Common practices and lessons learned + +Recordings of the sessions are available on [our YouTube channel](https://youtube.graphql.org). diff --git a/src/content/foundation/Join.md b/src/content/foundation/Join.md new file mode 100644 index 0000000000..567db913db --- /dev/null +++ b/src/content/foundation/Join.md @@ -0,0 +1,97 @@ +--- +title: Become a Member +sidebarTitle: Join GraphQL +heroText: GraphQL Foundation members demonstrate their commitment to the ecosystem by providing essential financial support. +layout: foundation +category: GraphQL Foundation +permalink: /foundation/join/ +sublinks: GraphQL Specification,GraphQL Foundation +next: /foundation/graphql-conf/ +--- + +There are two primary ways to support the ongoing development and success of GraphQL. + +- Developers can [join the GraphQL Specification](#graphql-specification), enabling them to contribute code, time, and talent to GraphQL technical projects. This is free for companies and individuals. + +- Organizations can [join the GraphQL Foundation](#graphql-foundation), which is the non-profit that supports the sustainability of the GraphQL community. This is accomplished through annual membership fees, which are allocated by the Governing Board for the benefit of the GraphQL ecosystem. + +If you have a question about which membership is right for you, please reach out to [membership@graphql.org](mailto:membership@graphql.org). + +--- + +## GraphQL Specification + +The GraphQL Specification and its related tools and libraries are developed under the Joint Development Foundation, a non-profit organization focused on open standards that is part of The Linux Foundation family. + +Membership in the GraphQL Specification is free, and is required for all who participate in the development process. This includes direct contributions to the specification, participation in meetings and discussions, and contributions to reference implementations and tooling. Joining is simple and straightforward, and all are welcome as members. + +_Please note that you or your employer must sign a specification membership before you can join GraphQL calls and participate in the technical development process._ + +### [Corporate specification membership](https://corporate-spec-membership.graphql.org) + +If you are planning to work on GraphQL for your employer, please ask an appropriate person to complete the corporate GraphQL Specification Membership application. ([preview](https://preview-spec-membership.graphql.org)) + +To join, please open a PR against a GraphQL repo ([instructions](https://corporate-spec-membership.graphql.org)). + +### [Individual specification membership](https://individual-spec-membership.graphql.org) + +If you are planning to work on GraphQL as an individual or if you are a student, please complete the individual GraphQL Specification Membership application. ([preview](https://preview-spec-membership.graphql.org)) + +To join, please open a PR against a GraphQL repo ([instructions](https://individual-spec-membership.graphql.org)). + +_Please note: If your employer has already signed a specification membership agreement, you do not need to sign a separate agreement as an individual. If your organization is a member of the GraphQL Foundation, you will still need a valid GraphQL Specification membership in order to contribute._ + +--- + +## GraphQL Foundation + +The GraphQL Foundation is a member-supported, non-profit organization whose mission is to support the long-term health and viability of the [GraphQL ecosystem](https://graphql.org). The GraphQL Foundation is hosted by [The Linux Foundation](https://linuxfoundation.org), the 501(c)6 non-profit home of Linux and many other open source collaborative projects. + +The GraphQL Foundation is entirely supported by [end-users, vendors, service providers, and consultants](/foundation/members) who recognize the importance of ensuring the long-term viability of neutral, collaborative development. The GraphQL Foundation is funded through participation fees, which are allocated by the governing board in ways that benefit the development community. + +### Benefits of membership + +The GraphQL Foundation Governing Board is responsible for setting high-level policy and allocating the GraphQL Foundation budget in ways that benefit the technical community. + +The first 20 members of the GraphQL Foundation participate as voting members of the Governing Board. Any additional members vote to select up to five additional seats. + +### How to join + +To [join the GraphQL Foundation](https://join.graphql.org), organizations become a member of the Linux Foundation and sign the GraphQL Foundation participation agreement. The GraphQL Foundation annual fee is received into a fund managed by the GraphQL Foundation Governing Board. + +- [Preview the Linux Foundation membership application »](/files/LF_Membership-Preview.pdf) +- [Preview the GraphQL Foundation participation agreement »](/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf) + +GraphQL Foundation membership fees and Linux Foundation Silver Membership dues are adjusted according to an organization's number of full-time employees. + +### [GraphQL Foundation Membership](https://join.graphql.org) + +| Organization size | Cost | +| :----------------------- | :------ | +| General (5,000+) | $20,000 | +| General (2,000 to 4,999) | $10,000 | +| General (50 to 1,999) | $5,000 | +| General (Up to 49) | $2,000 | + +To join, please complete the [membership application](https://join.graphql.org). + +### [Linux Foundation Membership](https://join.graphql.org) + +| Organization size | Cost | +| :-------------------- | :------- | +| Platinum | $500,000 | +| Gold | $100,000 | +| Silver (5,000+) | $20,000 | +| Silver (500 to 4,999) | $15,000 | +| Silver (100 to 499) | $10,000 | +| Silver (Up to 99) | $5,000 | + +To join, please complete the [membership application](https://join.graphql.org). + +The GraphQL Foundation and the Linux Foundation also offer a no-cost associate membership for pre-approved non-profits, open source projects, and government entities. To learn more about Associate membership, please email [membership@graphql.org](mailto:membership@graphql.org). + +### Support the GraphQL Foundation + +To become a member and demonstrate your organization's support of GraphQL, please [complete the membership application](https://join.graphql.org). + +If you have questions or issues, please email [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/foundation/annual-report/2019.md b/src/content/foundation/annual-report/2019.md new file mode 100644 index 0000000000..78e332e972 --- /dev/null +++ b/src/content/foundation/annual-report/2019.md @@ -0,0 +1,283 @@ +--- +title: 2019 Annual Report +sidebarTitle: "2019" +heroText: 2019 Annual Report +layout: foundation +category: Annual Reports +permalink: /foundation/annual-reports/2019/ +next: /foundation/annual-reports/ +date: 2020-04-02 +--- + +The GraphQL Foundation is a neutral foundation founded by global technology and application development companies. The GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for GraphQL. + +The GraphQL Foundation was formed in March 2019 and has now completed one full year of operation. We are pleased to present this annual report detailing the many things we have accomplished in support of this fast growing and broadly adopted platform. + +Comments and feedback are welcome at [info@graphql.org](mailto:info@graphql.org). + +> "The growth behind the technology and the community supporting GraphQL has been incredible. The GraphQL Foundation has played a critical role in helping to make GraphQL a neutral industry standard and enabling widespread adoption by encouraging contributions, and creating shared tools, and resources." +> +> – _**Lee Byron**, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ + +## A BUSY YEAR FOR GRAPHQL + +- [Who we are](#who-we-are) +- [Cultivating Projects](#cultivating-projects) +- [Growing membership](#growing-membership) +- [Growing The Graphql End User Community](#growing-the-graphql-end-user-community) +- [How Do I Get Involved?](#how-do-i-get-involved) +- [Events 2019](#events-2019) + - [Attendee Feedback](#attendee-feedback) +- [Community Updates](#community-updates) + - [Why Our Members Use GraphQL](#why-our-members-use-graphql) + - [How Our Members Are Using GraphQL](#how-our-members-are-using-graphql) + - [Member Contributions to the GraphQL Ecosystem](#member-contributions-to-the-graphql-ecosystem) + - [Publications From Our Members](#publications-from-our-members) + - [Talks, Papers, and Discussions on GraphQL](#talks-papers-and-discussions-on-graphql) +- [Training](#training) +- [Community Engagement](#community-engagement) +- [GraphQL Landscape](#graphql-landscape) +- [Devstats](#devstats) +- [A Look Ahead to 2020](#a-look-ahead-to-2020) + +## WHO WE ARE + +The [GraphQL Foundation](/) is a neutral foundation created by the founders of [GraphQL](https://graphql.org), along with many organizations who are using GraphQL in production. The GraphQL Foundation encourages contributions, stewardship, and a shared investment by providing vendor-neutral events, documentation, tools, and support for GraphQL. + +## CULTIVATING PROJECTS + +The GraphQL Foundation hosts the [GraphQL specification](https://github.com/graphql/graphql-spec), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/graphql/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool. + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +The GraphQL Foundation also funded community member Ivan Goncharov to work through a variety of GraphQL project issues, from backlog cleanup and more. + +## GROWING MEMBERSHIP + +The GraphQL Foundation +[launched](/news/2019/03/12/the-graphql-foundation-announces-collaboration-with-the-joint-development-foundation-to-drive-open-source-and-open-standards/) with 10 [members](/foundation/members/) and we wrapped the year with 21 members in total, including Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and more. [Join](/join/) your industry peers in helping to shape the GraphQL ecosystem. + +
    Lee presenting
    + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [new member page](/join). If you have questions about membership, please send an email to membership@graphql.org. + +## GROWING THE GRAPHQL END USER COMMUNITY + +We offer multiple opportunities for end users to contribute and have their voices heard. Companies that use GraphQL technologies internally, but do not sell any GraphQL services externally, are eligible to join the end user community. + +Our end user community is growing and we finished 2019 with 83 top companies and startups that are committed to accelerating the adoption of GraphQL and improving the developer experience. Please email us for more information at membership@graphql.org. + +## HOW DO I GET INVOLVED? + +GraphQL is first and foremost an open source project, and developers can contribute to the project at [https://github.com/graphql](https://github.com/graphql). Organizations interested in becoming members of the GraphQL Foundation or participating in development of the GraphQL Specification can learn more on our [new member page](/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). + +## EVENTS 2019 + +In addition to multiple community events, GraphQL Summit 2019 was held in San Francisco, and GraphQL Asia 2019 was held in Bangalore. + +### ATTENDEE FEEDBACK + +
    +
    +
    + + + +
    + +## COMMUNITY UPDATES + +The GraphQL community is fortunate to have an active and engaged group of companies participating in the GraphQL Foundation. + +### WHY OUR MEMBERS USE GRAPHQL + +
    Apollo GraphQL logo
    + +"GraphQL is a transformative technology that saves time and money for every team building rich, user-centric applications. **Apollo** is proud to play a central role in its rapid rise and maturation in 2019. Apollo’s industry-leading open source and cloud services power many of the world’s most significant online properties, including Expedia, Airbnb, PayPal, The New York Times, SurveyMonkey and thousands more. Apollo also hosts the world’s largest event dedicated to this technology - GraphQL Summit - which in 2019 featured more than 1,200 attendees and over 60 technical talks from some of the world’s most recognizable brands that are already benefiting from GraphQL." + +
    AWS logo
    + +"Collaborating with the Open Source community is always special; it has allowed **AWS** to improve and better understand the use cases that customers want to tackle, such as local mocking and testing. In order to move fast and ensure that we were releasing a valuable feature, we worked for several months with community members. We want to give a special thanks to Conduit Ventures for their significant contributions to the new Amplify local mocking environment." + +
    Expedia Group logo
    + +"GraphQL has been a huge accelerator for how **Expedia Group's** web application and service teams build APIs. Being part of the open source community is a priority for us in how we contribute back and learn from others on the same journey." + +
    Hasura logo
    + +"GraphQL is a rare technology that simultaneously improves the communication between _machines_ and between _humans!_ Data becomes easier to explore and consume for humans and GraphQL's spec driven design allows the creation of tools that can automate complex tasks around data fetching on the server and data management on the client. **Hasura's** flagship GraphQL engine automates complex data access work while giving API consumers an API they love using!" + +
    IBM logo
    + +"**IBM** is pleased to be an active member of the Linux Foundation's GraphQL project by participating on its technical working group and as a founding member of its Governing Board. IBM continued its commitment to innovating on key open technologies such as GraphQL in 2019." + +
    Novvum logo
    + +"At **Novvum**, our team is tiny, but we try to contribute to the foundation and open source community whenever possible. A few projects that come to mind are graphql-playground, graphql-weekly, graphql-birdseye, and the graphql edX course. GraphQL enables teams to focus on their bottom line and less on the nuances of software development. It provides the freedom necessary for frontend devs, UI/UX designers, content marketers, etc. to make incredible stuff without compromising the safety, flexibility, and stability desired by backend teams. It's come a long way since the early days. We are not surprised to see so many big named companies adopting it today." + +
    PayPal logo
    + +"GraphQL has been a complete game changer in the way **PayPal** thinks about data, fetch data and build applications." + +
    Salsify logo
    + +"**Salsify** provides a commerce and content platform that enables the world's largest brands to deliver engaging product experiences across the digital shelf. Our GraphQL powered APIs enable us to support a diverse set of integrated use cases on an extensible microservices platform architecture with great developer ergonomics and excellent performance." + +--- + +### HOW OUR MEMBERS ARE USING GRAPHQL + +
    Expedia Group logo
    + +**Expedia Group** continues to rapidly adopt GraphQL. Over the last 2 years we have transitioned our REST APIs to GraphQL – and now over 90% of all customer interactions in web and native[vrbo.com](http://vrbo.com/) apps are powered by GraphQL APIs and over 30% of all customer interactions on Expedia.com as well as other brands such as Hotels.com. + +
    Facebook logo
    + +**Facebook** has used GraphQL to power our production mobile apps for the last 7.5 years, from its creation as an internal API in 2012 to its open sourcing in 2015 and beyond. In 2020, we’re as invested in the community and the technology as ever — we’re [discussing our approach to streaming semantics with the GraphQL working group](https://github.com/graphql/graphql-wg/issues/329), and we’re [powering the new Facebook.com with GraphQL and Relay](https://developers.facebook.com/videos/2019/building-the-new-facebookcom-with-react-graphql-and-relay/). + +
    Novvum logo
    + +**Novvum** had been deploying graphql into production for the majority of our customers since its inception back in 2015. On any project, we find it extremely beneficial to add GraphQL as the primary communication layer between clients and the data that they need. From building car-sharing platforms on a time crunch to architecting fintech infrastructure to scaffolding MVPs for early-stage startups, we've observed many short- and long-term benefits by introducing GraphQL. + +
    PayPal logo
    + +**PayPal** uses GraphQL to power many of our products and user experiences including PayPal Checkout, our flagship product that facilitates payments for millions of merchants and users. + +--- + +### MEMBER CONTRIBUTIONS TO THE GRAPHQL ECOSYSTEM + +Our members have been active and engaged participants in the GraphQL ecosystem. Here are some of the ways in which our ecosystem has been enriched through their participation. + +
    Apollo GraphQL logo
    + +- **[Apollo Graph Manager](https://www.apollographql.com/docs/graph-manager/):** Tools and services for teams collaborating on a data graph, including a central schema registry, data graph analytics, workflows for developing and maintaining agile schemas, and machinery for managing graph security and policy and operations. +- **[Federation](https://www.apollographql.com/docs/apollo-server/federation/introduction/):** An open specification for composing multiple GraphQL services into a single data graph. The specification has been widely supported by the GraphQL community, with JavaScript, Kotlin, Java, Go, Python, Ruby, and PHP servers all adopting the federation programming model. +- **[Apollo Client](https://www.apollographql.com/docs/react/v3.0-beta):** The industry’s most popular open-source library for connecting application UI to a GraphQL service. The upcoming Apollo Client 3, currently in beta, introduces a flexible data cache and brings many improvements to managing both local state and remote data. +- **[Apollo Server](https://www.apollographql.com/docs/apollo-server):** An open-source library for building a data graph in JavaScript that’s incrementally adoptable, production-ready, and compatible with any data source. Apollo Server defines the de-facto standard for GraphQL over HTTP and supports essential features for running GraphQL at scale such as federation, tracing, and caching. +- **[Apollo developer tooling](https://github.com/apollographql/apollo-tooling):** The Apollo tooling repository is home to several open-source GraphQL developer tools, including the Apollo CLI and VS Code extension. These tools connect to the Apollo registry, a central hub for managing your data graph, in order to provide workflows for an excellent developer experience. + +
    Expedia Group logo
    + +- **[GraphQL Kotlin](https://github.com/ExpediaGroup/graphql-kotlin):** Continued work on GraphQL Kotlin libraries for running GraphQL Server, including code first-schema generation and a Spring Boot based Kotlin Graphql Server. This technology powers Expedia.com and its fleet of brands like Orbitz, Wotif, & Travelocity +- **[GraphQL Component](https://github.com/ExpediaGroup/graphql-component):** GraphQL Component is a modular graphql schema framework in javascript being utilized to build APIs for Vrbo travel and owner applications, as well as partner services and public APIs. + +
    Hasura logo
    + +- **[GraphQL Engine](https://github.com/hasura/graphql-engine):** An open-source GraphQL engine for Postgres and other data sources. +- **[GraphQURL](https://github.com/hasura/graphqurl):** A command like utility like curl for GraphQL, with autocomplete and support for subscriptions. +- **[graphql-bench](https://github.com/hasura/graphql-bench):** A GraphQL benchmarking suite to make it easy for developers to test the performance of their GraphQL servers. +- **[learn-graphql](https://github.com/hasura/learn-graphql):** Open-source tutorials for almost all frontend application stacks to get started with GraphQL. + +
    IBM logo
    + +- **[OpenAPI-to-GraphQL](https://github.com/IBM/openapi-to-graphql):** Released the open-source OpenAPI-to-GraphQL library, which generates GraphQL interfaces on top of existing REST APIs. IBM made numerous other contributions to the open source community. +- **[libgraphqlparser](https://github.com/graphql/libgraphqlparser):** Delivered improvements to the open source GraphQL C++ library +- **[Loopback 4 OpenAPI-to-GraphQL](https://loopback.io/doc/en/lb4/exposing-graphql-apis.html):** Released Loopback 4 "OpenAPI-to-GraphQL" module that creates a GraphQL wrapper for REST APIs which are described by an OpenAPI specification + +--- + +### PUBLICATIONS FROM OUR MEMBERS + +
    Apollo GraphQL logo
    + +- [Principled GraphQL, best practices for creating, maintaining, and operating a data graph](https://principledgraphql.com/) +- [Fullstack GraphQL tutorial](https://www.apollographql.com/docs/tutorial/introduction/) + +
    AWS logo
    + +- [Merging GraphQL schema files and more from the CLI](https://aws.amazon.com/blogs/mobile/merging-graphql-schema-files-and-more-with-the-cli/) +- [Developing and testing GraphQL APIs, Storage and Functions with Amplify Framework Local Mocking features](https://aws.amazon.com/blogs/mobile/amplify-framework-local-mocking/) +- [Amplify DataStore – Simplify Development of Offline Apps with GraphQL](https://aws.amazon.com/blogs/aws/amplify-datastore-simplify-development-of-offline-apps-with-graphql/) + +
    Expedia Group logo
    + +- [The Architectural Principles Behind Vrbo’s GraphQL Implementation](https://medium.com/expedia-group-tech/graphql-component-architecture-principles-homeaway-ede8a58d6fde) + +
    Hasura logo
    + +- [Architecture of a high performance GraphQL to SQL engine](https://hasura.io/blog/architecture-of-a-high-performance-graphql-to-sql-server-58d9944b8a87/) +- [Level up your serverless game with a GraphQL data-as-a-service layer](https://hasura.io/blog/level-up-your-serverless-game-with-a-graphql-data-as-a-service-layer/) +- [Fluent GraphQL clients: how to write queries like a boss](https://hasura.io/blog/fluent-graphql-clients-how-to-write-queries-like-a-boss/) + +
    IBM logo
    + +- [An Empirical Study of GraphQL Schemas (at ICSOC conference)](https://arxiv.org/pdf/1907.13012.pdf) +- [An Empirical Study of GraphQL (blog)](https://medium.com/swlh/empirical-study-graphql-icsoc19-29038c48da5) +- [GraphQL API Management](https://www.ibm.com/blogs/research/2019/02/graphql-api-management) + +--- + +### TALKS, PAPERS, AND DISCUSSIONS ON GRAPHQL + +
    Apollo GraphQL logo
    + +- [GraphQL Summit 2019 Keynote, by Matt DeBergalis](https://youtu.be/EDqw-sGVq3k) +- [Migrating to Apollo and GraphQL at Airbnb, by Brie Bunge](https://youtu.be/pywcFELoU8E) +- [The Architecture of Federation, by Jeff Hampton](https://youtu.be/LKQKn1oFXJU) +- [All GraphQL Summit 2019 talks](https://www.youtube.com/playlist?list=PLpi1lPB6opQyraZSmwFre_FpL00_3nTzV) + +
    AWS logo
    + +- Co-organized the [GraphQL London Meetup group](https://www.meetup.com/GraphQL-London) +- Co-organized the [GraphQL San Francisco Meetup group](https://www.meetup.com/GraphQL-SF) +- [Archive of Meetup talks](https://www.youtube.com/c/GraphQLTalks). +- [Building modern APIs with GraphQL](https://www.youtube.com/watch?v=bRnu7xvU1_Y) + +
    Expedia Group logo
    + +- [Creating a federated schema for a global company (GraphQL Summit)](https://www.youtube.com/watch?v=MuD3TAP0D9Y) + +
    Hasura logo
    + +- [Accelerating product and data delivery with GraphQL](https://www.youtube.com/watch?v=znzdocyfZsc) +- [API management and governance for GraphQL](https://www.youtube.com/watch?v=ypEtjxVmgoI) +- [Building a high performance realtime GraphQL API on existing databases](https://www.youtube.com/watch?v=HOKMJkBYaqQ) + +
    IBM logo
    + +- [GraphQL sessions at 2019 API Conference, Berlin](https://apiconference.net/)) +- Demonstrated GraphQL API Management in IBM API Connect and IBM DataPower® Gateway enabling determination of GraphQL query characteristics, advanced threat protection, customized rate limiting, and API plan configuration +- [Conducted IBM Developer Meetups where GraphQL work was highlighted in talks and technical demonstrations](https://www.meetup.com/ibmcodenyc/events/266535427/) + +## TRAINING + +The GraphQL Foundation is proud to offer a new, free course – [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql) – through [edX](https://www.edx.org/) which we have had thousands already sign up for. + +If you are a programmer, this course will help you gain the skills you need to get started using GraphQL for a small project, or professionally in production. We cover a variety of tools to address multiple use cases. + +If you are nontechnical, this course will help you communicate with developers and participate in conversations about GraphQL, and understand when and why to use GraphQL for a project. + +## COMMUNITY ENGAGEMENT + +Want to start a meetup? Drop us a line, we’d love to hear your idea: info@graphql.org. + +## GRAPHQL LANDSCAPE + +The [GraphQL Interactive Landscape](https://landscape.graphql.org/) was recently published by the GraphQL Foundation. + +![GraphQL Landscape](https://landscape.graphql.org/images/landscape.png) + +What is an interactive landscape? The concept started when the CNCF began the process of cataloging different types of tools for building out a cloud native architecture. This led to the creation of the CNCF Interactive Landscape. Turns out this tool became very helpful to all of us sorting out this new and exciting space. In the interest of providing a similar reference, the GraphQL Foundation defined their own version of the interactive landscape, including also adopters of GraphQL technology. + +The landscape is open source, and contributions from the community are welcomed. You can find guidelines for updating the landscape at: [https://github.com/graphql/graphql-landscape](https://github.com/graphql/graphql-landscape). + +## DEVSTATS + +The [DevStats](https://github.com/cncf/devstats) tool, which is open source, downloads data representing every public GitHub action across GraphQL Foundation projects and stores it in a queryable [Postgres](https://www.postgresql.org/) database. DevStats downloads updated data every hour and you can check out the tool here: [https://devstats.graphql.org](https://devstats.graphql.org/) + +## A LOOK AHEAD TO 2020 + +As the Executive Director of the GraphQL project, I hope I can speak for the whole community when I say we are looking forward to another productive year of GraphQL development. We are putting the final touches on the GraphQL 2020 spec release, and continue to make great progress developing new features, stabilizing existing ones, and exploring beyond core GraphQL. + +It has been really encouraging to see GraphQL continue to evolve over the past year as a technology and as a community. GraphQL is being used at scale by not only Facebook but now a great number of organizations large and small. As I said when first introducing the project, GraphQL is unapologetically driven by the needs of the client. This has been a critical aspect of GraphQL's success and it is great to see this principle reflect itself in our community, where those more interested in consuming APIs than producing them have come together to support the ongoing sustainability of the project. + +Since establishing the GraphQL Foundation, we've had an outpouring of support from these companies. This neutral, non-profit home for the GraphQL project has provided a healthy way for users, contributors, and supporters to collaborate and contribute funding in support of our programs and collaborative processes. For example, this support has enabled us to support long-time contributor Ivan Goncharov to focus on crucial development and maintenance of the reference implementation, specification and other community gardening work. It has also allowed us to launch a free GraphQL edX course, and has enabled us to take some first steps toward supporting and producing community events. + +Development of the GraphQL spec has remained open to all contributors. Over the last year we've brought more rigor and clarity to the development process. I've found it encouraging that contributions have been a healthy mix of aspirational new features and iterative improvements to the stable base. This demonstrates that GraphQL is evolving in meaningful ways to address exciting new use cases while also building confidence and stability around what thousands of companies use in production every day. Both of these are essential for GraphQL's long term success. + +Looking ahead, I have great optimism for GraphQL and see huge opportunities. First, we've been hard at work on the 2020 spec and that release is imminent. Spec development continues to accelerate and exciting advancements and improvements are underway for the 2021 release and beyond. Second, we have been accepted to participate in Google Summer of Code and are looking forward to adding these talented students as project collaborators. Third, the communities around the core GraphQL project are collaborating. For example, GraphiQL and Playground recently announced they will be joining efforts to build better tools for us all. + +Thank you again for your involvement in this project and your support of the GraphQL Foundation. I am pleased with our progress and am looking forward to another productive year. + +_– Lee Byron, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ diff --git a/src/content/graphql-js/APIReference-Errors.md b/src/content/graphql-js/APIReference-Errors.md index f772f57740..92fc7861d4 100644 --- a/src/content/graphql-js/APIReference-Errors.md +++ b/src/content/graphql-js/APIReference-Errors.md @@ -11,8 +11,8 @@ The `graphql/error` module is responsible for creating and formatting GraphQL errors. You can import either from the `graphql/error` module, or from the root `graphql` module. For example: ```js -import { GraphQLError } from 'graphql'; // ES6 -var { GraphQLError } = require('graphql'); // CommonJS +import { GraphQLError } from "graphql" // ES6 +var { GraphQLError } = require("graphql") // CommonJS ``` ## Overview diff --git a/src/content/graphql-js/APIReference-Execution.md b/src/content/graphql-js/APIReference-Execution.md index 7fc3c5e319..f52283960c 100644 --- a/src/content/graphql-js/APIReference-Execution.md +++ b/src/content/graphql-js/APIReference-Execution.md @@ -11,8 +11,8 @@ The `graphql/execution` module is responsible for the execution phase of fulfilling a GraphQL request. You can import either from the `graphql/execution` module, or from the root `graphql` module. For example: ```js -import { execute } from 'graphql'; // ES6 -var { execute } = require('graphql'); // CommonJS +import { execute } from "graphql" // ES6 +var { execute } = require("graphql") // CommonJS ``` ## Overview diff --git a/src/content/graphql-js/APIReference-ExpressGraphQL.md b/src/content/graphql-js/APIReference-ExpressGraphQL.md index 231765013b..8c3efca21e 100644 --- a/src/content/graphql-js/APIReference-ExpressGraphQL.md +++ b/src/content/graphql-js/APIReference-ExpressGraphQL.md @@ -10,8 +10,8 @@ next: /graphql-js/graphql/ The `express-graphql` module provides a simple way to create an [Express](https://expressjs.com/) server that runs a GraphQL API. ```js -import { graphqlHTTP } from 'express-graphql'; // ES6 -var { graphqlHTTP } = require('express-graphql'); // CommonJS +import { graphqlHTTP } from "express-graphql" // ES6 +var { graphqlHTTP } = require("express-graphql") // CommonJS ``` ### graphqlHTTP diff --git a/src/content/graphql-js/APIReference-GraphQL.md b/src/content/graphql-js/APIReference-GraphQL.md index 2978b9fa0a..1981cac0d0 100644 --- a/src/content/graphql-js/APIReference-GraphQL.md +++ b/src/content/graphql-js/APIReference-GraphQL.md @@ -11,13 +11,13 @@ The `graphql` module exports a core subset of GraphQL functionality for creation of GraphQL type systems and servers. ```js -import { graphql } from 'graphql'; // ES6 -var { graphql } = require('graphql'); // CommonJS +import { graphql } from "graphql" // ES6 +var { graphql } = require("graphql") // CommonJS ``` ## Overview -*Entry Point* +_Entry Point_
    • @@ -28,7 +28,7 @@ var { graphql } = require('graphql'); // CommonJS
    -*Schema* +_Schema_
    • @@ -39,7 +39,7 @@ var { graphql } = require('graphql'); // CommonJS
    -*Type Definitions* +_Type Definitions_
    • @@ -92,7 +92,7 @@ var { graphql } = require('graphql'); // CommonJS
    -*Scalars* +_Scalars_
    • @@ -127,7 +127,7 @@ var { graphql } = require('graphql'); // CommonJS
    -*Errors* +_Errors_
    • diff --git a/src/content/graphql-js/APIReference-Language.md b/src/content/graphql-js/APIReference-Language.md index e9f8ae2284..f944112469 100644 --- a/src/content/graphql-js/APIReference-Language.md +++ b/src/content/graphql-js/APIReference-Language.md @@ -10,13 +10,13 @@ next: /graphql-js/type/ The `graphql/language` module is responsible for parsing and operating on the GraphQL language. You can import either from the `graphql/language` module, or from the root `graphql` module. For example: ```js -import { Source } from 'graphql'; // ES6 -var { Source } = require('graphql'); // CommonJS +import { Source } from "graphql" // ES6 +var { Source } = require("graphql") // CommonJS ``` ## Overview -*Source* +_Source_
      • @@ -33,7 +33,7 @@ var { Source } = require('graphql'); // CommonJS
      -*Lexer* +_Lexer_
      • @@ -44,7 +44,7 @@ var { Source } = require('graphql'); // CommonJS
      -*Parser* +_Parser_
      • @@ -67,7 +67,7 @@ var { Source } = require('graphql'); // CommonJS
      -*Visitor* +_Visitor_
      • @@ -84,7 +84,7 @@ var { Source } = require('graphql'); // CommonJS
      -*Printer* +_Printer_
      • @@ -224,8 +224,8 @@ var editedAST = visit(ast, { // visitor.BREAK: stop visiting altogether // null: delete this node // any value: replace this node with the returned value - } -}); + }, +}) ``` Alternatively to providing enter() and leave() functions, a visitor can @@ -233,17 +233,17 @@ instead provide functions named the same as the kinds of AST nodes, or enter/leave visitors at a named key, leading to four permutations of visitor API: -1) Named visitors triggered when entering a node a specific kind. +1. Named visitors triggered when entering a node a specific kind. ```js visit(ast, { Kind(node) { // enter the "Kind" node - } + }, }) ``` -2) Named visitors that trigger upon entering and leaving a node of +2. Named visitors that trigger upon entering and leaving a node of a specific kind. ```js @@ -259,7 +259,7 @@ visit(ast, { }) ``` -3) Generic visitors that trigger upon entering and leaving any node. +3. Generic visitors that trigger upon entering and leaving any node. ```js visit(ast, { @@ -268,24 +268,24 @@ visit(ast, { }, leave(node) { // leave any node - } + }, }) ``` -4) Parallel visitors for entering and leaving nodes of a specific kind. +4. Parallel visitors for entering and leaving nodes of a specific kind. ```js visit(ast, { enter: { Kind(node) { // enter the "Kind" node - } + }, }, leave: { Kind(node) { // leave the "Kind" node - } - } + }, + }, }) ``` diff --git a/src/content/graphql-js/APIReference-TypeSystem.md b/src/content/graphql-js/APIReference-TypeSystem.md index 4191d1130a..b27379e520 100644 --- a/src/content/graphql-js/APIReference-TypeSystem.md +++ b/src/content/graphql-js/APIReference-TypeSystem.md @@ -10,13 +10,13 @@ next: /graphql-js/utilities/ The `graphql/type` module is responsible for defining GraphQL types and schema. You can import either from the `graphql/type` module, or from the root `graphql` module. For example: ```js -import { GraphQLSchema } from 'graphql'; // ES6 -var { GraphQLSchema } = require('graphql'); // CommonJS +import { GraphQLSchema } from "graphql" // ES6 +var { GraphQLSchema } = require("graphql") // CommonJS ``` ## Overview -*Schema* +_Schema_
        • @@ -27,7 +27,7 @@ var { GraphQLSchema } = require('graphql'); // CommonJS
        -*Definitions* +_Definitions_
        • @@ -80,7 +80,7 @@ var { GraphQLSchema } = require('graphql'); // CommonJS
        -*Predicates* +_Predicates_
        • @@ -114,7 +114,7 @@ var { GraphQLSchema } = require('graphql'); // CommonJS
        -*Un-modifiers* +_Un-modifiers_
        • @@ -131,7 +131,7 @@ var { GraphQLSchema } = require('graphql'); // CommonJS
        -*Scalars* +_Scalars_
        • @@ -220,19 +220,19 @@ functions used to ensure validity. ```js var OddType = new GraphQLScalarType({ - name: 'Odd', + name: "Odd", serialize: oddValue, parseValue: oddValue, parseLiteral(ast) { if (ast.kind === Kind.INT) { - return oddValue(parseInt(ast.value, 10)); + return oddValue(parseInt(ast.value, 10)) } - return null; - } -}); + return null + }, +}) function oddValue(value) { - return value % 2 === 1 ? value : null; + return value % 2 === 1 ? value : null } ``` @@ -305,7 +305,7 @@ When two types need to refer to each other, or a type needs to refer to itself in a field, you can use a function expression (aka a closure or a thunk) to supply the fields lazily. -Note that resolver functions are provided the `source` object as the first parameter. +Note that resolver functions are provided the `source` object as the first parameter. However, if a resolver function is not provided, then the default resolver is used, which looks for a method on `source` of the same name as the field. If found, the method is called with `(args, context, info)`. Since it is a method on `source`, @@ -315,26 +315,26 @@ that value can always be referenced with `this`. ```js var AddressType = new GraphQLObjectType({ - name: 'Address', + name: "Address", fields: { street: { type: GraphQLString }, number: { type: GraphQLInt }, formatted: { type: GraphQLString, resolve(obj) { - return obj.number + ' ' + obj.street - } - } - } -}); + return obj.number + " " + obj.street + }, + }, + }, +}) var PersonType = new GraphQLObjectType({ - name: 'Person', + name: "Person", fields: () => ({ name: { type: GraphQLString }, bestFriend: { type: PersonType }, - }) -}); + }), +}) ``` ### GraphQLInterfaceType @@ -361,11 +361,11 @@ when the field is resolved. ```js var EntityType = new GraphQLInterfaceType({ - name: 'Entity', + name: "Entity", fields: { - name: { type: GraphQLString } - } -}); + name: { type: GraphQLString }, + }, +}) ``` ### GraphQLUnionType @@ -393,17 +393,17 @@ to determine which type is actually used when the field is resolved. ```js var PetType = new GraphQLUnionType({ - name: 'Pet', - types: [ DogType, CatType ], + name: "Pet", + types: [DogType, CatType], resolveType(value) { if (value instanceof Dog) { - return DogType; + return DogType } if (value instanceof Cat) { - return CatType; + return CatType } - } -}); + }, +}) ``` ### GraphQLEnumType @@ -448,13 +448,13 @@ will be used as its internal value. ```js var RGBType = new GraphQLEnumType({ - name: 'RGB', + name: "RGB", values: { RED: { value: 0 }, GREEN: { value: 1 }, - BLUE: { value: 2 } - } -}); + BLUE: { value: 2 }, + }, +}) ``` ### GraphQLInputObjectType @@ -503,13 +503,13 @@ Using `NonNull` will ensure that a value must be provided by the query ```js var GeoPoint = new GraphQLInputObjectType({ - name: 'GeoPoint', + name: "GeoPoint", fields: { lat: { type: new GraphQLNonNull(GraphQLFloat) }, lon: { type: new GraphQLNonNull(GraphQLFloat) }, alt: { type: GraphQLFloat, defaultValue: 0 }, - } -}); + }, +}) ``` ### GraphQLList @@ -528,12 +528,12 @@ an object type. ```js var PersonType = new GraphQLObjectType({ - name: 'Person', + name: "Person", fields: () => ({ parents: { type: new GraphQLList(PersonType) }, children: { type: new GraphQLList(PersonType) }, - }) -}); + }), +}) ``` ### GraphQLNonNull @@ -554,11 +554,11 @@ usually the id field of a database row will never be null. ```js var RowType = new GraphQLObjectType({ - name: 'Row', + name: "Row", fields: () => ({ id: { type: new GraphQLNonNull(String) }, - }) -}); + }), +}) ``` ## Predicates @@ -628,7 +628,7 @@ non-nullability and list wrappers and returns the underlying type. ### GraphQLInt ```js -var GraphQLInt: GraphQLScalarType; +var GraphQLInt: GraphQLScalarType ``` A `GraphQLScalarType` that represents an int. @@ -636,7 +636,7 @@ A `GraphQLScalarType` that represents an int. ### GraphQLFloat ```js -var GraphQLFloat: GraphQLScalarType; +var GraphQLFloat: GraphQLScalarType ``` A `GraphQLScalarType` that represents a float. @@ -644,7 +644,7 @@ A `GraphQLScalarType` that represents a float. ### GraphQLString ```js -var GraphQLString: GraphQLScalarType; +var GraphQLString: GraphQLScalarType ``` A `GraphQLScalarType` that represents a string. @@ -652,7 +652,7 @@ A `GraphQLScalarType` that represents a string. ### GraphQLBoolean ```js -var GraphQLBoolean: GraphQLScalarType; +var GraphQLBoolean: GraphQLScalarType ``` A `GraphQLScalarType` that represents a boolean. @@ -660,7 +660,7 @@ A `GraphQLScalarType` that represents a boolean. ### GraphQLID ```js -var GraphQLID: GraphQLScalarType; +var GraphQLID: GraphQLScalarType ``` A `GraphQLScalarType` that represents an ID. diff --git a/src/content/graphql-js/APIReference-Utilities.md b/src/content/graphql-js/APIReference-Utilities.md index 0f164b44ae..6be6ba2b10 100644 --- a/src/content/graphql-js/APIReference-Utilities.md +++ b/src/content/graphql-js/APIReference-Utilities.md @@ -11,13 +11,13 @@ The `graphql/utilities` module contains common useful computations to use with the GraphQL language and type objects. You can import either from the `graphql/utilities` module, or from the root `graphql` module. For example: ```js -import { introspectionQuery } from 'graphql'; // ES6 -var { introspectionQuery } = require('graphql'); // CommonJS +import { introspectionQuery } from "graphql" // ES6 +var { introspectionQuery } = require("graphql") // CommonJS ``` ## Overview -*Introspection* +_Introspection_
          • @@ -34,7 +34,7 @@ var { introspectionQuery } = require('graphql'); // CommonJS
          -*Schema Language* +_Schema Language_
          • @@ -75,7 +75,7 @@ var { introspectionQuery } = require('graphql'); // CommonJS
          -*Visitors* +_Visitors_
          • @@ -86,7 +86,7 @@ var { introspectionQuery } = require('graphql'); // CommonJS
          -*Value Validation* +_Value Validation_
          • @@ -192,6 +192,7 @@ function astFromValue( type: GraphQLInputType ): ?Value ``` + Produces a GraphQL Input Value AST given a JavaScript value. Optionally, a GraphQL type may be provided, which will be used to diff --git a/src/content/graphql-js/APIReference-Validation.md b/src/content/graphql-js/APIReference-Validation.md index 6221fd86dc..926ecb1182 100644 --- a/src/content/graphql-js/APIReference-Validation.md +++ b/src/content/graphql-js/APIReference-Validation.md @@ -10,8 +10,8 @@ The `graphql/validation` module fulfills the Validation phase of fulfilling a GraphQL result. You can import either from the `graphql/validation` module, or from the root `graphql` module. For example: ```js -import { validate } from 'graphql/validation'; // ES6 -var { validate } = require('graphql/validation'); // CommonJS +import { validate } from "graphql/validation" // ES6 +var { validate } = require("graphql/validation") // CommonJS ``` ## Overview diff --git a/src/content/graphql-js/Guides-ConstructingTypes.md b/src/content/graphql-js/Guides-ConstructingTypes.md index c042d0aa87..1ef0db65d5 100644 --- a/src/content/graphql-js/Guides-ConstructingTypes.md +++ b/src/content/graphql-js/Guides-ConstructingTypes.md @@ -13,9 +13,9 @@ When you are using the `GraphQLSchema` constructor to create a schema, instead o For example, let's say we are building a simple API that lets you fetch user data for a few hardcoded users based on an id. Using `buildSchema` we could write a server with: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") var schema = buildSchema(` type User { @@ -26,90 +26,96 @@ var schema = buildSchema(` type Query { user(id: String): User } -`); +`) // Maps id to User object var fakeDatabase = { - 'a': { - id: 'a', - name: 'alice', + a: { + id: "a", + name: "alice", }, - 'b': { - id: 'b', - name: 'bob', + b: { + id: "b", + name: "bob", }, -}; +} var root = { - user: ({id}) => { - return fakeDatabase[id]; - } -}; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); + user: ({ id }) => { + return fakeDatabase[id] + }, +} + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` We can implement this same API without using GraphQL schema language: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var graphql = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var graphql = require("graphql") // Maps id to User object var fakeDatabase = { - 'a': { - id: 'a', - name: 'alice', + a: { + id: "a", + name: "alice", }, - 'b': { - id: 'b', - name: 'bob', + b: { + id: "b", + name: "bob", }, -}; +} // Define the User type var userType = new graphql.GraphQLObjectType({ - name: 'User', + name: "User", fields: { id: { type: graphql.GraphQLString }, name: { type: graphql.GraphQLString }, - } -}); + }, +}) // Define the Query type var queryType = new graphql.GraphQLObjectType({ - name: 'Query', + name: "Query", fields: { user: { type: userType, // `args` describes the arguments that the `user` query accepts args: { - id: { type: graphql.GraphQLString } + id: { type: graphql.GraphQLString }, }, - resolve: (_, {id}) => { - return fakeDatabase[id]; - } - } - } -}); - -var schema = new graphql.GraphQLSchema({query: queryType}); - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); + resolve: (_, { id }) => { + return fakeDatabase[id] + }, + }, + }, +}) + +var schema = new graphql.GraphQLSchema({ query: queryType }) + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` When we use this method of creating the API, the root level resolvers are implemented on the `Query` and `Mutation` types rather than on a `root` object. diff --git a/src/content/graphql-js/Tutorial-Authentication.md b/src/content/graphql-js/Tutorial-Authentication.md index 6b227a63f4..e7043f20a0 100644 --- a/src/content/graphql-js/Tutorial-Authentication.md +++ b/src/content/graphql-js/Tutorial-Authentication.md @@ -14,36 +14,39 @@ To use middleware with a GraphQL resolver, just use the middleware like you woul For example, let's say we wanted our server to log the IP address of every request, and we also want to write an API that returns the IP address of the caller. We can do the former with middleware, and the latter by accessing the `request` object in a resolver. Here's server code that implements this: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") var schema = buildSchema(` type Query { ip: String } -`); +`) const loggingMiddleware = (req, res, next) => { - console.log('ip:', req.ip); - next(); + console.log("ip:", req.ip) + next() } var root = { ip: function (args, request) { - return request.ip; - } -}; - -var app = express(); -app.use(loggingMiddleware); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); + return request.ip + }, +} + +var app = express() +app.use(loggingMiddleware) +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` In a REST API, authentication is often handled with a header, that contains an auth token which proves what user is making this request. Express middleware processes these headers and puts authentication data on the Express `request` object. Some middleware modules that handle authentication like this are [Passport](http://passportjs.org/), [express-jwt](https://github.com/auth0/express-jwt), and [express-session](https://github.com/expressjs/session). Each of these modules works with `express-graphql`. diff --git a/src/content/graphql-js/Tutorial-BasicTypes.md b/src/content/graphql-js/Tutorial-BasicTypes.md index 319624de5d..b6b5b0c2c4 100644 --- a/src/content/graphql-js/Tutorial-BasicTypes.md +++ b/src/content/graphql-js/Tutorial-BasicTypes.md @@ -17,9 +17,9 @@ To use a list type, surround the type in square brackets, so `[Int]` is a list o Each of these types maps straightforwardly to JavaScript, so you can just return plain old JavaScript objects in APIs that return these types. Here's an example that shows how to use some of these basic types: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` @@ -28,29 +28,32 @@ var schema = buildSchema(` random: Float! rollThreeDice: [Int] } -`); +`) // The root provides a resolver function for each API endpoint var root = { quoteOfTheDay: () => { - return Math.random() < 0.5 ? 'Take it easy' : 'Salvation lies within'; + return Math.random() < 0.5 ? "Take it easy" : "Salvation lies within" }, random: () => { - return Math.random(); + return Math.random() }, rollThreeDice: () => { - return [1, 2, 3].map(_ => 1 + Math.floor(Math.random() * 6)); + return [1, 2, 3].map(_ => 1 + Math.floor(Math.random() * 6)) }, -}; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); +} + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` If you run this code with `node server.js` and browse to http://localhost:4000/graphql you can try out these APIs. diff --git a/src/content/graphql-js/Tutorial-ExpressGraphQL.md b/src/content/graphql-js/Tutorial-ExpressGraphQL.md index 2a5f32bbd7..4a2abecfa6 100644 --- a/src/content/graphql-js/Tutorial-ExpressGraphQL.md +++ b/src/content/graphql-js/Tutorial-ExpressGraphQL.md @@ -16,32 +16,35 @@ npm install express express-graphql graphql --save Let's modify our “hello world” example so that it's an API server rather than a script that runs a single query. We can use the 'express' module to run a webserver, and instead of executing a query directly with the `graphql` function, we can use the `express-graphql` library to mount a GraphQL API server on the “/graphql” HTTP endpoint: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` type Query { hello: String } -`); +`) // The root provides a resolver function for each API endpoint var root = { hello: () => { - return 'Hello world!'; + return "Hello world!" }, -}; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at http://localhost:4000/graphql'); +} + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at http://localhost:4000/graphql") ``` You can run this GraphQL server with: @@ -50,7 +53,7 @@ You can run this GraphQL server with: node server.js ``` -Since we configured `graphqlHTTP` with `graphiql: true`, you can use the GraphiQL tool to manually issue GraphQL queries. If you navigate in a web browser to `http://localhost:4000/graphql`, you should see an interface that lets you enter queries. It should look like: +Since we configured `graphqlHTTP` with `graphiql: true`, you can use the GraphiQL tool to manually issue GraphQL queries. If you navigate in a web browser to [http://localhost:4000/graphql](http://localhost:4000/graphql), you should see an interface that lets you enter queries. It should look like: ![hello world graphql example](/img/hello.png) diff --git a/src/content/graphql-js/Tutorial-GettingStarted.md b/src/content/graphql-js/Tutorial-GettingStarted.md index 951387226e..e9953ee838 100644 --- a/src/content/graphql-js/Tutorial-GettingStarted.md +++ b/src/content/graphql-js/Tutorial-GettingStarted.md @@ -23,26 +23,30 @@ npm install graphql --save To handle GraphQL queries, we need a schema that defines the `Query` type, and we need an API root with a function called a “resolver” for each API endpoint. For an API that just returns “Hello world!”, we can put this code in a file named `server.js`: ```javascript -var { graphql, buildSchema } = require('graphql'); +var { graphql, buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` type Query { hello: String } -`); +`) -// The root provides a resolver function for each API endpoint -var root = { +// The rootValue provides a resolver function for each API endpoint +var rootValue = { hello: () => { - return 'Hello world!'; + return "Hello world!" }, -}; +} // Run the GraphQL query '{ hello }' and print out the response -graphql(schema, '{ hello }', root).then((response) => { - console.log(response); -}); +graphql({ + schema, + source: "{ hello }", + rootValue, +}).then(response => { + console.log(response) +}) ``` If you run this with: @@ -54,7 +58,11 @@ node server.js You should see the GraphQL response printed out: ```javascript -{ data: { hello: 'Hello world!' } } +{ + data: { + hello: "Hello world!" + } +} ``` Congratulations - you just executed a GraphQL query! diff --git a/src/content/graphql-js/Tutorial-GraphQLClients.md b/src/content/graphql-js/Tutorial-GraphQLClients.md index 70c949da47..dca87529da 100644 --- a/src/content/graphql-js/Tutorial-GraphQLClients.md +++ b/src/content/graphql-js/Tutorial-GraphQLClients.md @@ -28,16 +28,16 @@ If you prefer to use a graphical user interface to send a test query, you can us It's also simple to send GraphQL from the browser. Open up http://localhost:4000/graphql, open a developer console, and paste in: ```javascript -fetch('/graphql', { - method: 'POST', +fetch("/graphql", { + method: "POST", headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', + "Content-Type": "application/json", + Accept: "application/json", }, - body: JSON.stringify({query: "{ hello }"}) + body: JSON.stringify({ query: "{ hello }" }), }) .then(r => r.json()) - .then(data => console.log('data returned:', data)); + .then(data => console.log("data returned:", data)) ``` You should see the data returned, logged in the console: @@ -59,25 +59,25 @@ type Query { You could access this from JavaScript with the code: ```javascript -var dice = 3; -var sides = 6; +var dice = 3 +var sides = 6 var query = `query RollDice($dice: Int!, $sides: Int) { rollDice(numDice: $dice, numSides: $sides) -}`; +}` -fetch('/graphql', { - method: 'POST', +fetch("/graphql", { + method: "POST", headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', + "Content-Type": "application/json", + Accept: "application/json", }, body: JSON.stringify({ query, variables: { dice, sides }, - }) + }), }) .then(r => r.json()) - .then(data => console.log('data returned:', data)); + .then(data => console.log("data returned:", data)) ``` Using this syntax for variables is a good idea because it automatically prevents bugs due to escaping, and it makes it easier to monitor your server. diff --git a/src/content/graphql-js/Tutorial-Mutations.md b/src/content/graphql-js/Tutorial-Mutations.md index b351635909..2d8488a7ed 100644 --- a/src/content/graphql-js/Tutorial-Mutations.md +++ b/src/content/graphql-js/Tutorial-Mutations.md @@ -25,16 +25,16 @@ It's often convenient to have a mutation that maps to a database create or updat Both mutations and queries can be handled by root resolvers, so the root that implements this schema can simply be: ```javascript -var fakeDatabase = {}; +var fakeDatabase = {} var root = { - setMessage: ({message}) => { - fakeDatabase.message = message; - return message; + setMessage: ({ message }) => { + fakeDatabase.message = message + return message }, getMessage: () => { - return fakeDatabase.message; - } -}; + return fakeDatabase.message + }, +} ``` You don't need anything more than this to implement mutations. But in many cases, you will find a number of different mutations that all accept the same input parameters. A common example is that creating an object in a database and updating an object in a database often take the same parameters. To make your schema simpler, you can use “input types” for this, by using the `input` keyword instead of the `type` keyword. @@ -72,9 +72,9 @@ Naming input types with `Input` on the end is a useful convention, because you w Here's some runnable code that implements this schema, keeping the data in memory: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` @@ -97,54 +97,56 @@ var schema = buildSchema(` createMessage(input: MessageInput): Message updateMessage(id: ID!, input: MessageInput): Message } -`); +`) // If Message had any complex fields, we'd put them on this object. class Message { - constructor(id, {content, author}) { - this.id = id; - this.content = content; - this.author = author; + constructor(id, { content, author }) { + this.id = id + this.content = content + this.author = author } } // Maps username to content -var fakeDatabase = {}; +var fakeDatabase = {} var root = { - getMessage: ({id}) => { + getMessage: ({ id }) => { if (!fakeDatabase[id]) { - throw new Error('no message exists with id ' + id); + throw new Error("no message exists with id " + id) } - return new Message(id, fakeDatabase[id]); + return new Message(id, fakeDatabase[id]) }, - createMessage: ({input}) => { + createMessage: ({ input }) => { // Create a random id for our "database". - var id = require('crypto').randomBytes(10).toString('hex'); + var id = require("crypto").randomBytes(10).toString("hex") - fakeDatabase[id] = input; - return new Message(id, input); + fakeDatabase[id] = input + return new Message(id, input) }, - updateMessage: ({id, input}) => { + updateMessage: ({ id, input }) => { if (!fakeDatabase[id]) { - throw new Error('no message exists with id ' + id); + throw new Error("no message exists with id " + id) } // This replaces all old data, but some apps might want partial update. - fakeDatabase[id] = input; - return new Message(id, input); + fakeDatabase[id] = input + return new Message(id, input) }, -}; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000, () => { - console.log('Running a GraphQL API server at localhost:4000/graphql'); -}); +} +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000, () => { + console.log("Running a GraphQL API server at localhost:4000/graphql") +}) ``` To call a mutation, you must use the keyword `mutation` before your GraphQL query. To pass an input type, provide the data written as if it's a JSON object. For example, with the server defined above, you can create a new message and return the `id` of the new message with this operation: @@ -163,19 +165,19 @@ mutation { You can use variables to simplify mutation client logic just like you can with queries. For example, some JavaScript code that calls the server to execute this mutation is: ```javascript -var author = 'andy'; -var content = 'hope is a good thing'; +var author = "andy" +var content = "hope is a good thing" var query = `mutation CreateMessage($input: MessageInput) { createMessage(input: $input) { id } -}`; +}` -fetch('/graphql', { - method: 'POST', +fetch("/graphql", { + method: "POST", headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', + "Content-Type": "application/json", + Accept: "application/json", }, body: JSON.stringify({ query, @@ -183,12 +185,12 @@ fetch('/graphql', { input: { author, content, - } - } - }) + }, + }, + }), }) .then(r => r.json()) - .then(data => console.log('data returned:', data)); + .then(data => console.log("data returned:", data)) ``` One particular type of mutation is operations that change users, like signing up a new user. While you can implement this using GraphQL mutations, you can reuse many existing libraries if you learn about [GraphQL with authentication and Express middleware](/graphql-js/authentication-and-express-middleware/). diff --git a/src/content/graphql-js/Tutorial-ObjectTypes.md b/src/content/graphql-js/Tutorial-ObjectTypes.md index 1d87e8903b..1b2e854096 100644 --- a/src/content/graphql-js/Tutorial-ObjectTypes.md +++ b/src/content/graphql-js/Tutorial-ObjectTypes.md @@ -33,26 +33,26 @@ Instead of a root-level resolver for the `RandomDie` type, we can instead use an ```javascript class RandomDie { constructor(numSides) { - this.numSides = numSides; + this.numSides = numSides } rollOnce() { - return 1 + Math.floor(Math.random() * this.numSides); + return 1 + Math.floor(Math.random() * this.numSides) } - roll({numRolls}) { - var output = []; + roll({ numRolls }) { + var output = [] for (var i = 0; i < numRolls; i++) { - output.push(this.rollOnce()); + output.push(this.rollOnce()) } - return output; + return output } } var root = { - getDie: ({numSides}) => { - return new RandomDie(numSides || 6); - } + getDie: ({ numSides }) => { + return new RandomDie(numSides || 6) + }, } ``` @@ -73,9 +73,9 @@ type Query { Putting this all together, here is some sample code that runs a server with this GraphQL API: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` @@ -88,42 +88,45 @@ var schema = buildSchema(` type Query { getDie(numSides: Int): RandomDie } -`); +`) // This class implements the RandomDie GraphQL type class RandomDie { constructor(numSides) { - this.numSides = numSides; + this.numSides = numSides } rollOnce() { - return 1 + Math.floor(Math.random() * this.numSides); + return 1 + Math.floor(Math.random() * this.numSides) } - roll({numRolls}) { - var output = []; + roll({ numRolls }) { + var output = [] for (var i = 0; i < numRolls; i++) { - output.push(this.rollOnce()); + output.push(this.rollOnce()) } - return output; + return output } } // The root provides the top-level API endpoints var root = { - getDie: ({numSides}) => { - return new RandomDie(numSides || 6); - } + getDie: ({ numSides }) => { + return new RandomDie(numSides || 6) + }, } -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` When you issue a GraphQL query against an API that returns object types, you can call multiple methods on the object at once by nesting the GraphQL field names. For example, if you wanted to call both `rollOnce` to roll a die once, and `roll` to roll a die three times, you could do it with this query: diff --git a/src/content/graphql-js/Tutorial-PassingArguments.md b/src/content/graphql-js/Tutorial-PassingArguments.md index 788c75408d..7c7de7b679 100644 --- a/src/content/graphql-js/Tutorial-PassingArguments.md +++ b/src/content/graphql-js/Tutorial-PassingArguments.md @@ -28,28 +28,28 @@ So far, our resolver functions took no arguments. When a resolver takes argument ```javascript var root = { - rollDice: (args) => { - var output = []; + rollDice: args => { + var output = [] for (var i = 0; i < args.numDice; i++) { - output.push(1 + Math.floor(Math.random() * (args.numSides || 6))); + output.push(1 + Math.floor(Math.random() * (args.numSides || 6))) } - return output; - } -}; + return output + }, +} ``` It's convenient to use [ES6 destructuring assignment](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) for these parameters, since you know what format they will be. So we can also write `rollDice` as ```javascript var root = { - rollDice: ({numDice, numSides}) => { - var output = []; + rollDice: ({ numDice, numSides }) => { + var output = [] for (var i = 0; i < numDice; i++) { - output.push(1 + Math.floor(Math.random() * (numSides || 6))); + output.push(1 + Math.floor(Math.random() * (numSides || 6))) } - return output; - } -}; + return output + }, +} ``` If you're familiar with destructuring, this is a bit nicer because the line of code where `rollDice` is defined tells you about what the arguments are. @@ -57,36 +57,39 @@ If you're familiar with destructuring, this is a bit nicer because the line of c The entire code for a server that hosts this `rollDice` API is: ```javascript -var express = require('express'); -var { graphqlHTTP } = require('express-graphql'); -var { buildSchema } = require('graphql'); +var express = require("express") +var { graphqlHTTP } = require("express-graphql") +var { buildSchema } = require("graphql") // Construct a schema, using GraphQL schema language var schema = buildSchema(` type Query { rollDice(numDice: Int!, numSides: Int): [Int] } -`); +`) // The root provides a resolver function for each API endpoint var root = { - rollDice: ({numDice, numSides}) => { - var output = []; + rollDice: ({ numDice, numSides }) => { + var output = [] for (var i = 0; i < numDice; i++) { - output.push(1 + Math.floor(Math.random() * (numSides || 6))); + output.push(1 + Math.floor(Math.random() * (numSides || 6))) } - return output; - } -}; - -var app = express(); -app.use('/graphql', graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true, -})); -app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); + return output + }, +} + +var app = express() +app.use( + "/graphql", + graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }) +) +app.listen(4000) +console.log("Running a GraphQL API server at localhost:4000/graphql") ``` When you call this API, you have to pass each argument by name. So for the server above, you could issue this GraphQL query to roll three six-sided dice: @@ -104,25 +107,25 @@ When you're passing arguments in code, it's generally better to avoid constructi For example, some JavaScript code that calls our server above is: ```javascript -var dice = 3; -var sides = 6; +var dice = 3 +var sides = 6 var query = `query RollDice($dice: Int!, $sides: Int) { rollDice(numDice: $dice, numSides: $sides) -}`; +}` -fetch('/graphql', { - method: 'POST', +fetch("/graphql", { + method: "POST", headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', + "Content-Type": "application/json", + Accept: "application/json", }, body: JSON.stringify({ query, variables: { dice, sides }, - }) + }), }) .then(r => r.json()) - .then(data => console.log('data returned:', data)); + .then(data => console.log("data returned:", data)) ``` Using `$dice` and `$sides` as variables in GraphQL means we don't have to worry about escaping on the client side. diff --git a/src/content/learn/BestPractice-Authorization.md b/src/content/learn/BestPractice-Authorization.md index 3890981129..ad8d75c6f0 100644 --- a/src/content/learn/BestPractice-Authorization.md +++ b/src/content/learn/BestPractice-Authorization.md @@ -10,7 +10,7 @@ next: /learn/pagination/ Authorization is a type of business logic that describes whether a given user/session/context has permission to perform an action or see a piece of data. For example: -*“Only authors can see their drafts”* +_“Only authors can see their drafts”_ Enforcing this kind of behavior should happen in the [business logic layer](/learn/thinking-in-graphs/#business-logic-layer). It is tempting to place authorization logic in the GraphQL layer like so: diff --git a/src/content/learn/BestPractice-Caching.md b/src/content/learn/BestPractice-Caching.md index 17687d1404..c595b1e055 100644 --- a/src/content/learn/BestPractice-Caching.md +++ b/src/content/learn/BestPractice-Caching.md @@ -16,11 +16,11 @@ One possible pattern for this is reserving a field, like `id`, to be a globally ```graphql # { "graphiql": true } { - starship(id:"3003") { + starship(id: "3003") { id name } - droid(id:"2001") { + droid(id: "2001") { id name friends { @@ -33,7 +33,7 @@ One possible pattern for this is reserving a field, like `id`, to be a globally This is a powerful tool to hand to client developers. In the same way that the URLs of a resource-based API provided a globally unique key, the `id` field in this system provides a globally unique key. -If the backend uses something like UUIDs for identifiers, then exposing this globally unique ID may be very straightforward! If the backend doesn't have a globally unique ID for every object already, the GraphQL layer might have to construct this. Oftentimes, that's as simple as appending the name of the type to the ID and using that as the identifier; the server might then make that ID opaque by base64-encoding it. +If the backend uses something like UUIDs for identifiers, then exposing this globally unique ID may be very straightforward! If the backend doesn't have a globally unique ID for every object already, the GraphQL layer might have to construct this. Oftentimes, that's as simple as appending the name of the type to the ID and using that as the identifier; the server might then make that ID opaque by base64-encoding it. Optionally, this ID can then be used to work with the [Global Object Identification](/learn/global-object-identification)'s `node` pattern. @@ -43,8 +43,8 @@ One concern with using the `id` field for this purpose is how a client using the In these cases, the GraphQL API can expose the previous API's IDs in a separate field. This gives us the best of both worlds: - - GraphQL clients can continue to rely on a consistent mechanism for getting a globally unique ID. - - Clients that need to work with our previous API can also fetch `previousApiId` from the object, and use that. +- GraphQL clients can continue to rely on a consistent mechanism for getting a globally unique ID. +- Clients that need to work with our previous API can also fetch `previousApiId` from the object, and use that. ## Alternatives diff --git a/src/content/learn/BestPractice-Introduction.md b/src/content/learn/BestPractice-Introduction.md index 9b31e1c644..13bc3f42c7 100644 --- a/src/content/learn/BestPractice-Introduction.md +++ b/src/content/learn/BestPractice-Introduction.md @@ -7,20 +7,18 @@ permalink: /learn/best-practices/ next: /learn/thinking-in-graphs/ --- -The GraphQL specification is intentionally silent on a handful of important issues facing APIs such as dealing with the network, authorization, and pagination. This doesn't mean that there aren't solutions for these issues when using GraphQL, just that they're outside the description about what GraphQL *is* and instead just common practice. +The GraphQL specification is intentionally silent on a handful of important issues facing APIs such as dealing with the network, authorization, and pagination. This doesn't mean that there aren't solutions for these issues when using GraphQL, just that they're outside the description about what GraphQL _is_ and instead just common practice. The articles in this section should not be taken as gospel, and in some cases may rightfully be ignored in favor of some other approach. Some articles introduce some of the philosophy developed within Facebook around designing and deploying GraphQL services, while others are more tactical suggestions for solving common problems like serving over HTTP and performing authorization. Following are brief descriptions of some of the more common best practices and opinionated stances held by GraphQL services, however each article in this section will go into more depth on these and other topics. - ### HTTP GraphQL is typically served over HTTP via a single endpoint which expresses the full set of capabilities of the service. This is in contrast to REST APIs which expose a suite of URLs each of which expose a single resource. While GraphQL could be used alongside a suite of resource URLs, this can make it harder to use with tools like [GraphiQL](https://github.com/graphql/graphiql). Read more about this in [Serving over HTTP](/learn/serving-over-http/). - ### JSON (with GZIP) GraphQL services typically respond using JSON, however the GraphQL spec [does not require it](http://spec.graphql.org/draft/#sec-Serialization-Format). JSON may seem like an odd choice for an API layer promising better network performance, however because it is mostly text, it compresses exceptionally well with GZIP. @@ -33,36 +31,32 @@ Accept-Encoding: gzip JSON is also very familiar to client and API developers, and is easy to read and debug. In fact, the GraphQL syntax is partly inspired by the JSON syntax. - ### Versioning While there's nothing that prevents a GraphQL service from being versioned just like any other REST API, GraphQL takes a strong opinion on avoiding versioning by providing the tools for the continuous evolution of a GraphQL schema. -Why do most APIs version? When there's limited control over the data that's returned from an API endpoint, *any change* can be considered a breaking change, and breaking changes require a new version. If adding new features to an API requires a new version, then a tradeoff emerges between releasing often and having many incremental versions versus the understandability and maintainability of the API. +Why do most APIs version? When there's limited control over the data that's returned from an API endpoint, _any change_ can be considered a breaking change, and breaking changes require a new version. If adding new features to an API requires a new version, then a tradeoff emerges between releasing often and having many incremental versions versus the understandability and maintainability of the API. In contrast, GraphQL only returns the data that's explicitly requested, so new capabilities can be added via new types and new fields on those types without creating a breaking change. This has led to a common practice of always avoiding breaking changes and serving a versionless API. - ### Nullability -Most type systems which recognise "null" provide both the common type and the *nullable* version of that type, whereby default types do not include "null" unless explicitly declared. However, in a GraphQL type system, every field is *nullable* by default. This is because there are many things that can go awry in a networked service backed by databases and other services. A database could go down, an asynchronous action could fail, an exception could be thrown. Beyond simply system failures, authorization can often be granular, where individual fields within a request can have different authorization rules. +Most type systems which recognise "null" provide both the common type and the _nullable_ version of that type, whereby default types do not include "null" unless explicitly declared. However, in a GraphQL type system, every field is _nullable_ by default. This is because there are many things that can go awry in a networked service backed by databases and other services. A database could go down, an asynchronous action could fail, an exception could be thrown. Beyond simply system failures, authorization can often be granular, where individual fields within a request can have different authorization rules. -By defaulting every field to *nullable*, any of these reasons may result in just that field returned "null" rather than having a complete failure for the request. Instead, GraphQL provides [non-null](/learn/schema/#lists-and-non-null) variants of types which make a guarantee to clients that if requested, the field will never return "null". Instead, if an error occurs, the previous parent field will be "null" instead. +By defaulting every field to _nullable_, any of these reasons may result in just that field returned "null" rather than having a complete failure for the request. Instead, GraphQL provides [non-null](/learn/schema/#lists-and-non-null) variants of types which make a guarantee to clients that if requested, the field will never return "null". Instead, if an error occurs, the previous parent field will be "null" instead. When designing a GraphQL schema, it's important to keep in mind all the problems that could go wrong and if "null" is an appropriate value for a failed field. Typically it is, but occasionally, it's not. In those cases, use non-null types to make that guarantee. - ### Pagination The GraphQL type system allows for some fields to return [lists of values](/learn/schema/#lists-and-non-null), but leaves the pagination of longer lists of values up to the API designer. There are a wide range of possible API designs for pagination, each of which has pros and cons. Typically fields that could return long lists accept arguments "first" and "after" to allow for specifying a specific region of a list, where "after" is a unique identifier of each of the values in the list. -Ultimately designing APIs with feature-rich pagination led to a best practice pattern called "Connections". Some client tools for GraphQL, such as [Relay](https://facebook.github.io/relay/), know about the Connections pattern and can automatically provide automatic support for client-side pagination when a GraphQL API employs this pattern. +Ultimately designing APIs with feature-rich pagination led to a best practice pattern called "Connections". Some client tools for GraphQL, such as [Relay](https://facebook.github.io/relay/), know about the Connections pattern and can automatically provide support for client-side pagination when a GraphQL API employs this pattern. Read more about this in the article on [Pagination](/learn/pagination/). - ### Server-side Batching & Caching GraphQL is designed in a way that allows you to write clean code on the server, where every field on every type has a focused single-purpose function for resolving that value. However without additional consideration, a naive GraphQL service could be very "chatty" or repeatedly load data from your databases. diff --git a/src/content/learn/BestPractice-NodeInterface.md b/src/content/learn/BestPractice-NodeInterface.md index 0557bb37d5..f53eb0a2cf 100644 --- a/src/content/learn/BestPractice-NodeInterface.md +++ b/src/content/learn/BestPractice-NodeInterface.md @@ -8,12 +8,12 @@ next: /learn/caching/ > Consistent object access enables simple caching and object lookups -To provide options for GraphQL clients to elegantly handle caching and data -refetching, GraphQL servers need to expose object identifiers in a standardized -way. +To provide options for GraphQL clients to elegantly handle caching and data +refetching, GraphQL servers need to expose object identifiers in a standardized +way. -For this to work, a client will need to query via a standard mechanism to -request an object by ID. Then, in the response, the schema will need to provide a +For this to work, a client will need to query via a standard mechanism to +request an object by ID. Then, in the response, the schema will need to provide a standard way of providing these IDs. Because little is known about the object other than its ID, we call these @@ -27,6 +27,7 @@ objects "nodes." Here is an example query for a node: name } } +} ``` - The GraphQL schema is formatted to allow fetching any object via the `node` field on the root query object. This @@ -56,19 +57,19 @@ type User implements Node { # Specification -Everything below describes with more formal requirements a specification around object -identification in order to conform to ensure consistency across server implementations. These -specifications are based on how a server can be compliant with the [Relay][relay] API client, but +Everything below describes with more formal requirements a specification around object +identification in order to conform to ensure consistency across server implementations. These +specifications are based on how a server can be compliant with the [Relay][relay] API client, but can be useful for any client. # Reserved Types A GraphQL server compatible with this spec must reserve certain types and type names -to support the consistent object identification model. In particular, this spec creates +to support the consistent object identification model. In particular, this spec creates guidelines for the following types: - - An interface named `Node`. - - The `node` field on the root query type. +- An interface named `Node`. +- The `node` field on the root query type. # Node Interface @@ -213,15 +214,15 @@ IDs, then the two objects must be equal. For the purposes of this definition, object equality is defined as follows: - - If a field is queried on both objects, the result of querying that field on -the first object must be equal to the result of querying that field on the -second object. - - If the field returns a scalar, equality is defined as is appropriate for - that scalar. - - If the field returns an enum, equality is defined as both fields returning - the same enum value. - - If the field returns an object, equality is defined recursively as per the - above. +- If a field is queried on both objects, the result of querying that field on + the first object must be equal to the result of querying that field on the + second object. + - If the field returns a scalar, equality is defined as is appropriate for + that scalar. + - If the field returns an enum, equality is defined as both fields returning + the same enum value. + - If the field returns an object, equality is defined recursively as per the + above. For example: @@ -267,7 +268,7 @@ might return: "name": "Chris Hughes", "userWithIdOneLess": { "id": "4", - "name": "Mark Zuckerberg", + "name": "Mark Zuckerberg" } } } @@ -295,7 +296,7 @@ might return: ```json { "username": { - "id": "4", + "id": "4" } } ``` @@ -305,7 +306,6 @@ with the request, identifying the object with username "zuck". Now imagine a root field named `usernames`, that takes a list of usernames and returns a list of objects: - ```graphql { usernames(usernames: ["zuck", "moskov"]) { @@ -320,7 +320,7 @@ might return: { "usernames": [ { - "id": "4", + "id": "4" }, { "id": "6" @@ -332,31 +332,31 @@ might return: For clients to be able to link the usernames to the responses, it needs to know that the array in the response will be the same size as the array passed as an argument, and that the order in the response will match the -order in the argument. We call these *plural identifying root fields*, and +order in the argument. We call these _plural identifying root fields_, and their requirements are described below. ## Fields A server compliant with this spec may expose root fields that accept a list of input arguments, and returns a list of responses. For spec-compliant clients to use these fields, -these fields must be *plural identifying root fields*, and obey the following +these fields must be _plural identifying root fields_, and obey the following requirements. -NOTE Spec-compliant servers may expose root fields that are not *plural -identifying root fields*; the spec-compliant client will just be unable to use those +NOTE Spec-compliant servers may expose root fields that are not _plural +identifying root fields_; the spec-compliant client will just be unable to use those fields as root fields in its queries. -*Plural identifying root fields* must have a single argument. The type of that +_Plural identifying root fields_ must have a single argument. The type of that argument must be a non-null list of non-nulls. In our `usernames` example, the field would take a single argument named `usernames`, whose type (using our type system shorthand) would be `[String!]!`. -The return type of a *plural identifying root field* must be a list, or a +The return type of a _plural identifying root field_ must be a list, or a non-null wrapper around a list. The list must wrap the `Node` interface, an object that implements the `Node` interface, or a non-null wrapper around those types. -Whenever the *plural identifying root field* is used, the length of the +Whenever the _plural identifying root field_ is used, the length of the list in the response must be the same as the length of the list in the arguments. Each item in the response must correspond to its item in the input; more formally, if passing the root field an input list `Lin` resulted in output diff --git a/src/content/learn/BestPractice-Pagination.md b/src/content/learn/BestPractice-Pagination.md index 5efd3ff2e2..9319fcbf9e 100644 --- a/src/content/learn/BestPractice-Pagination.md +++ b/src/content/learn/BestPractice-Pagination.md @@ -30,12 +30,11 @@ The simplest way to expose a connection between objects is with a field that ret Quickly, though, we realize that there are additional behaviors a client might want. A client might want to be able to specify how many friends they want to fetch; maybe they only want the first two. So we'd want to expose something like: - ```graphql { hero { name - friends(first:2) { + friends(first: 2) { name } } @@ -48,9 +47,9 @@ But if we just fetched the first two, we might want to paginate through the list There are a number of ways we could do pagination: - - We could do something like `friends(first:2 offset:2)` to ask for the next two in the list. - - We could do something like `friends(first:2 after:$friendId)`, to ask for the next two after the last friend we fetched. - - We could do something like `friends(first:2 after:$friendCursor)`, where we get a cursor from the last item and use that to paginate. +- We could do something like `friends(first:2 offset:2)` to ask for the next two in the list. +- We could do something like `friends(first:2 after:$friendId)`, to ask for the next two after the last friend we fetched. +- We could do something like `friends(first:2 after:$friendCursor)`, where we get a cursor from the last item and use that to paginate. In general, we've found that **cursor-based pagination** is the most powerful of those designed. Especially if the cursors are opaque, either offset or ID-based pagination can be implemented using cursor-based pagination (by making the cursor the offset or the ID), and using cursors gives additional flexibility if the pagination model changes in the future. As a reminder that the cursors are opaque and that their format should not be relied upon, we suggest base64 encoding them. @@ -60,7 +59,7 @@ That leads us to a problem; though; how do we get the cursor from the object? We { hero { name - friends(first:2) { + friends(first: 2) { edges { node { name @@ -80,12 +79,11 @@ Now we have the ability to paginate through the connection using cursors, but ho To solve both of these problems, our `friends` field can return a connection object. The connection object will then have a field for the edges, as well as other information (like total count and information about whether a next page exists). So our final query might look more like: - ```graphql { hero { name - friends(first:2) { + friends(first: 2) { totalCount edges { node { @@ -108,10 +106,10 @@ Note that we also might include `endCursor` and `startCursor` in this `PageInfo` Clearly, this is more complex than our original design of just having a plural! But by adopting this design, we've unlocked a number of capabilities for the client: - - The ability to paginate through the list. - - The ability to ask for information about the connection itself, like `totalCount` or `pageInfo`. - - The ability to ask for information about the edge itself, like `cursor` or `friendshipTime`. - - The ability to change how our backend does pagination, since the user just uses opaque cursors. +- The ability to paginate through the list. +- The ability to ask for information about the connection itself, like `totalCount` or `pageInfo`. +- The ability to ask for information about the edge itself, like `cursor` or `friendshipTime`. +- The ability to change how our backend does pagination, since the user just uses opaque cursors. To see this in action, there's an additional field in the example schema, called `friendsConnection`, that exposes all of these concepts. You can check it out in the example query. Try removing the `after` parameter to `friendsConnection` to see how the pagination will be affected. Also, try replacing the `edges` field with the helper `friends` field on the connection, which lets you get directly to the list of friends without the additional edge layer of indirection, when that's appropriate for clients. @@ -120,7 +118,7 @@ To see this in action, there's an additional field in the example schema, called { hero { name - friendsConnection(first:2 after:"Y3Vyc29yMQ==") { + friendsConnection(first: 2, after: "Y3Vyc29yMQ==") { totalCount edges { node { diff --git a/src/content/learn/BestPractice-ServingOverHTTP.md b/src/content/learn/BestPractice-ServingOverHTTP.md index a67e896e7b..86a7109d70 100644 --- a/src/content/learn/BestPractice-ServingOverHTTP.md +++ b/src/content/learn/BestPractice-ServingOverHTTP.md @@ -9,12 +9,15 @@ next: /learn/authorization/ HTTP is the most common choice for client-server protocol when using GraphQL because of its ubiquity. Here are some guidelines for setting up a GraphQL server to operate over HTTP. ## Web Request Pipeline + Most modern web frameworks use a pipeline model where requests are passed through a stack of middleware (AKA filters/plugins). As the request flows through the pipeline, it can be inspected, transformed, modified, or terminated with a response. GraphQL should be placed after all authentication middleware, so that you have access to the same session and user information you would in your HTTP endpoint handlers. ## URIs, Routes + HTTP is commonly associated with REST, which uses "resources" as its core concept. In contrast, GraphQL's conceptual model is an entity graph. As a result, entities in GraphQL are not identified by URLs. Instead, a GraphQL server operates on a single URL/endpoint, usually `/graphql`, and all GraphQL requests for a given service should be directed at this endpoint. ## HTTP Methods, Headers, and Body + Your GraphQL HTTP server should handle the HTTP GET and POST methods. ### GET request @@ -35,7 +38,7 @@ This request could be sent via an HTTP GET like so: http://myapi/graphql?query={me{name}} ``` -Query variables can be sent as a JSON-encoded string in an additional query parameter called `variables`. If the query contains several named operations, an `operationName` query parameter can be used to control which one should be executed. +Query variables can be sent as a JSON-encoded string in an additional query parameter called `variables`. If the query contains several named operations, an `operationName` query parameter can be used to control which one should be executed. ### POST request @@ -51,13 +54,6 @@ A standard GraphQL POST request should use the `application/json` content type, `operationName` and `variables` are optional fields. `operationName` is only required if multiple operations are present in the query. -In addition to the above, we recommend supporting two additional cases: - -* If the "query" query string parameter is present (as in the GET example above), it should be parsed and handled in the same way as the HTTP GET case. -* If the "application/graphql" Content-Type header is present, treat the HTTP POST body contents as the GraphQL query string. - -If you're using express-graphql, you already get these behaviors for free. - ## Response Regardless of the method by which the query and variables were sent, the response should be returned in the body of the request in JSON format. As mentioned in the spec, a query might result in some data and some errors, and those should be returned in a JSON object of the form: @@ -69,9 +65,10 @@ Regardless of the method by which the query and variables were sent, the respons } ``` -If there were no errors returned, the `"errors"` field should not be present on the response. If no data is returned, [according to the GraphQL spec](http://facebook.github.io/graphql/#sec-Data), the `"data"` field should only be included if the error occurred during execution. +If there were no errors returned, the `"errors"` field should not be present on the response. If no data is returned, [according to the GraphQL spec](https://spec.graphql.org/October2021/#sec-Data), the `"data"` field should only be included if no errors occurred during execution. ## GraphiQL + GraphiQL is useful during testing and development but should be disabled in production by default. If you are using express-graphql, you can toggle it based on the NODE_ENV environment variable: ``` @@ -82,4 +79,9 @@ app.use('/graphql', graphqlHTTP({ ``` ## Node -If you are using NodeJS, we recommend using either [express-graphql](https://github.com/graphql/express-graphql) or [apollo-server](https://github.com/apollographql/apollo-server). + +If you are using NodeJS, we recommend looking at the [list of server implementations](/code/#javascript-server). + +## Draft Transport Specification + +A detailed [HTTP transport specification](https://github.com/graphql/graphql-over-http) is in development. Though it is not yet finalized, these draft specifications act as a single source of truth for GraphQL client & library maintainers, detailing how to expose and consume a GraphQL API using an HTTP transport. Unlike the language specification, adherence is not mandatory, but most implementations are moving towards these standards to maximize interoperability. diff --git a/src/content/learn/BestPractice-ThinkingInGraphs.md b/src/content/learn/BestPractice-ThinkingInGraphs.md index 69ae61cb5a..52c1d60474 100644 --- a/src/content/learn/BestPractice-ThinkingInGraphs.md +++ b/src/content/learn/BestPractice-ThinkingInGraphs.md @@ -7,23 +7,26 @@ next: /learn/serving-over-http/ --- ## It's Graphs All the Way Down [\*](https://en.wikipedia.org/wiki/Turtles_all_the_way_down) + > With GraphQL, you model your business domain as a graph Graphs are powerful tools for modeling many real-world phenomena because they resemble our natural mental models and verbal descriptions of the underlying process. With GraphQL, you model your business domain as a graph by defining a schema; within your schema, you define different types of nodes and how they connect/relate to one another. On the client, this creates a pattern similar to Object-Oriented Programming: types that reference other types. On the server, since GraphQL only defines the interface, you have the freedom to use it with any backend (new or legacy!). ## Shared Language + > Naming things is a hard but important part of building intuitive APIs Think of your GraphQL schema as an expressive shared language for your team and your users. To build a good schema, examine the everyday language you use to describe your business. For example, let's try to describe an email app in plain English: -* A user can have multiple email accounts -* Each email account has an address, inbox, drafts, deleted items, and sent items -* Each email has a sender, receive date, subject, and body -* Users cannot send an email without a recipient address +- A user can have multiple email accounts +- Each email account has an address, inbox, drafts, deleted items, and sent items +- Each email has a sender, receive date, subject, and body +- Users cannot send an email without a recipient address Naming things is a hard but important part of building intuitive APIs, so take time to carefully think about what makes sense for your problem domain and users. Your team should develop a shared understanding and consensus of these business domain rules because you will need to choose intuitive, durable names for nodes and relationships in the GraphQL schema. Try to imagine some of the queries you will want to execute: Fetch the number of unread emails in my inbox for all my accounts + ```graphql { accounts { @@ -35,6 +38,7 @@ Fetch the number of unread emails in my inbox for all my accounts ``` Fetch the "preview info" for the first 20 drafts in the main account + ```graphql { mainAccount { @@ -51,6 +55,7 @@ fragment previewInfo on Email { ``` ## Business Logic Layer + > Your business logic layer should act as the single source of truth for enforcing business domain rules Where should you define the actual business logic? Where should you perform validation and authorization checks? The answer: inside a dedicated business logic layer. Your business logic layer should act as the single source of truth for enforcing business domain rules. @@ -60,6 +65,7 @@ Where should you define the actual business logic? Where should you perform vali In the diagram above, all entry points (REST, GraphQL, and RPC) into the system will be processed with the same validation, authorization, and error handling rules. ### Working with Legacy Data + > Prefer building a GraphQL schema that describes how clients use the data, rather than mirroring the legacy database schema. Sometimes, you will find yourself working with legacy data sources that do not perfectly reflect how clients consume the data. In these cases, prefer building a GraphQL schema that describes how clients use the data, rather than mirroring the legacy database schema. @@ -67,6 +73,7 @@ Sometimes, you will find yourself working with legacy data sources that do not p Build your GraphQL schema to express "how" rather than "what". Then you can improve your implementation details without breaking the interface with older clients. ## One Step at a time + > Get validation and feedback more frequently Don't try to model your entire business domain in one sitting. Rather, build only the part of the schema that you need for one scenario at a time. By gradually expanding the schema, you will get validation and feedback more frequently to steer you toward building the right solution. diff --git a/src/content/learn/Introduction.md b/src/content/learn/Introduction.md index 426066c466..e6057a66b1 100644 --- a/src/content/learn/Introduction.md +++ b/src/content/learn/Introduction.md @@ -7,11 +7,18 @@ permalink: /learn/ next: /learn/queries/ --- -> Learn about GraphQL, how it works, and how to use it in this series of articles. Looking for documentation on how to build a GraphQL service? There are libraries to help you implement GraphQL in [many different languages](/code/). For an in-depth learning experience with practical tutorials, visit the [How to GraphQL](https://www.howtographql.com) fullstack tutorial website. We have also partnered with edX to create a free online course, [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis). +> Learn about GraphQL, how it works, and how to use it. Looking for documentation on how to build a GraphQL service? +> There are libraries to help you implement GraphQL in [many different languages](/code/). For an in-depth learning experience +> with practical tutorials, see [How to GraphQL](https://www.howtographql.com). Check out the +> free online course, +> [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis). -GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data. +GraphQL is a query language for your API, and a server-side runtime for executing queries using a type system you define for your +data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data. -A GraphQL service is created by defining types and fields on those types, then providing functions for each field on each type. For example, a GraphQL service that tells us who the logged in user is (`me`) as well as that user's name might look something like this: +A GraphQL service is created by defining types and fields on those types, then providing functions for each field on each type. +For example, a GraphQL service that tells you who the logged in user is (`me`) as well as that user's name might look +like this: ```graphql type Query { @@ -28,17 +35,19 @@ Along with functions for each field on each type: ```js function Query_me(request) { - return request.auth.user; + return request.auth.user } function User_name(user) { - return user.getName(); + return user.getName() } ``` -Once a GraphQL service is running (typically at a URL on a web service), it can receive GraphQL queries to validate and execute. A received query is first checked to ensure it only refers to the types and fields defined, then runs the provided functions to produce a result. +After a GraphQL service is running (typically at a URL on a web service), it can receive GraphQL queries to validate and execute. +The service first checks a query to ensure it only refers to the types and fields defined, and then runs the provided functions +to produce a result. -For example the query: +For example, the query: ```graphql { @@ -48,7 +57,7 @@ For example the query: } ``` -Could produce the JSON result: +Could produce the following JSON result: ```json { @@ -58,4 +67,4 @@ Could produce the JSON result: } ``` -Learn more about GraphQL — the query language, type system, how the GraphQL service works, as well as best practices for using GraphQL in the articles written in this section; they help to solve common problems. +To learn more, click **Continue Reading**. diff --git a/src/content/learn/Learn-Execution.md b/src/content/learn/Learn-Execution.md index 11517cd095..291b4545e7 100644 --- a/src/content/learn/Learn-Execution.md +++ b/src/content/learn/Learn-Execution.md @@ -47,14 +47,13 @@ In order to describe what happens when a query is executed, let's use an example } ``` -You can think of each field in a GraphQL query as a function or method of the previous type which returns the next type. In fact, this is exactly how GraphQL works. Each field on each type is backed by a function called the *resolver* which is provided by the GraphQL server developer. When a field is executed, the corresponding *resolver* is called to produce the next value. +You can think of each field in a GraphQL query as a function or method of the previous type which returns the next type. In fact, this is exactly how GraphQL works. Each field on each type is backed by a function called the _resolver_ which is provided by the GraphQL server developer. When a field is executed, the corresponding _resolver_ is called to produce the next value. If a field produces a scalar value like a string or number, then the execution completes. However if a field produces an object value then the query will contain another selection of fields which apply to that object. This continues until scalar values are reached. GraphQL queries always end at scalar values. - ## Root fields & resolvers -At the top level of every GraphQL server is a type that represents all of the possible entry points into the GraphQL API, it's often called the *Root* type or the *Query* type. +At the top level of every GraphQL server is a type that represents all of the possible entry points into the GraphQL API, it's often called the _Root_ type or the _Query_ type. In this example, our Query type provides a field called `human` which accepts the argument `id`. The resolver function for this field likely accesses a database and then constructs and returns a `Human` object. @@ -87,11 +86,10 @@ human(obj, args, context, info) { } ``` -The `context` is used to provide access to a database which is used to load the data for a user by the `id` provided as an argument in the GraphQL query. Since loading from a database is an asynchronous operation, this returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). In JavaScript, Promises are used to work with asynchronous values, but the same concept exists in many languages, often called *Futures*, *Tasks* or *Deferred*. When the database returns, we can construct and return a new `Human` object. +The `context` is used to provide access to a database which is used to load the data for a user by the `id` provided as an argument in the GraphQL query. Since loading from a database is an asynchronous operation, this returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). In JavaScript, Promises are used to work with asynchronous values, but the same concept exists in many languages, often called _Futures_, _Tasks_ or _Deferred_. When the database returns, we can construct and return a new `Human` object. Notice that while the resolver function needs to be aware of Promises, the GraphQL query does not. It simply expects the `human` field to return something which it can then ask the `name` of. During execution, GraphQL will wait for Promises, Futures, and Tasks to complete before continuing and will do so with optimal concurrency. - ## Trivial resolvers Now that a `Human` object is available, GraphQL execution can continue with the fields requested on it. @@ -110,7 +108,6 @@ Resolving the name in this case is very straight-forward. The name resolver func In fact, many GraphQL libraries will let you omit resolvers this simple and will just assume that if a resolver isn't provided for a field, that a property of the same name should be read and returned. - ## Scalar coercion While the `name` field is being resolved, the `appearsIn` and `starships` fields can be resolved concurrently. The `appearsIn` field could also have a trivial resolver, but let's take a closer look: @@ -127,10 +124,9 @@ Notice that our type system claims `appearsIn` will return Enum values with know This is an example of scalar coercion. The type system knows what to expect and will convert the values returned by a resolver function into something that upholds the API contract. In this case, there may be an Enum defined on our server which uses numbers like `4`, `5`, and `6` internally, but represents them as Enum values in the GraphQL type system. - ## List resolvers -We've already seen a bit of what happens when a field returns a list of things with the `appearsIn` field above. It returned a *list* of enum values, and since that's what the type system expected, each item in the list was coerced to the appropriate enum value. What happens when the `starships` field is resolved? +We've already seen a bit of what happens when a field returns a list of things with the `appearsIn` field above. It returned a _list_ of enum values, and since that's what the type system expected, each item in the list was coerced to the appropriate enum value. What happens when the `starships` field is resolved? ```js Human: { @@ -144,11 +140,10 @@ Human: { } ``` -The resolver for this field is not just returning a Promise, it's returning a *list* of Promises. The `Human` object had a list of ids of the `Starships` they piloted, but we need to go load all of those ids to get real Starship objects. +The resolver for this field is not just returning a Promise, it's returning a _list_ of Promises. The `Human` object had a list of ids of the `Starships` they piloted, but we need to go load all of those ids to get real Starship objects. GraphQL will wait for all of these Promises concurrently before continuing, and when left with a list of objects, it will concurrently continue yet again to load the `name` field on each of these items. - ## Producing the result As each field is resolved, the resulting value is placed into a key-value map with the field name (or alias) as the key and the resolved value as the value. This continues from the bottom leaf fields of the query all the way back up to the original field on the root Query type. Collectively these produce a structure that mirrors the original query which can then be sent (typically as JSON) to the client which requested it. diff --git a/src/content/learn/Learn-Introspection.md b/src/content/learn/Learn-Introspection.md index 00693e3445..9eeb999fac 100644 --- a/src/content/learn/Learn-Introspection.md +++ b/src/content/learn/Learn-Introspection.md @@ -11,7 +11,7 @@ queries it supports. GraphQL allows us to do so using the introspection system! For our Star Wars example, the file -[starWarsIntrospection-test.js](https://github.com/graphql/graphql-js/blob/master/src/__tests__/starWarsIntrospection-test.js) +[starWarsIntrospection-test.ts](https://github.com/graphql/graphql-js/blob/main/src/__tests__/starWarsIntrospection-test.ts) contains a number of queries demonstrating the introspection system, and is a test file that can be run to exercise the reference implementation's introspection system. @@ -34,13 +34,13 @@ are available. Wow, that's a lot of types! What are they? Let's group them: - - **Query, Character, Human, Episode, Droid** - These are the ones that we -defined in our type system. - - **String, Boolean** - These are built-in scalars that the type system -provided. - - **\_\_Schema, \_\_Type, \_\_TypeKind, \_\_Field, \_\_InputValue, -\_\_EnumValue, \_\_Directive** - These all are preceded with a double -underscore, indicating that they are part of the introspection system. +- **Query, Character, Human, Episode, Droid** - These are the ones that we + defined in our type system. +- **String, Boolean** - These are built-in scalars that the type system + provided. +- **\_\_Schema, \_\_Type, \_\_TypeKind, \_\_Field, \_\_InputValue, + \_\_EnumValue, \_\_Directive** - These all are preceded with a double + underscore, indicating that they are part of the introspection system. Now, let's try and figure out a good place to start exploring what queries are available. When we designed our type system, we specified what type all queries @@ -119,10 +119,6 @@ ask the introspection system about `Droid`: } } } - - - - ``` Those are our fields that we defined on `Droid`! @@ -154,11 +150,6 @@ tell us what these are lists of. } } } - - - - - ``` Let's end with a feature of the introspection system particularly useful @@ -180,6 +171,6 @@ and create documentation browsers, or rich IDE experiences. This has just scratched the surface of the introspection system; we can query for enum values, what interfaces a type implements, and more. We can even introspect on the introspection system itself. The specification goes -into more detail about this topic in the "Introspection" section, and the [introspection](https://github.com/graphql/graphql-js/blob/master/src/type/introspection.js) +into more detail about this topic in the "Introspection" section, and the [introspection](https://github.com/graphql/graphql-js/blob/main/src/type/introspection.ts) file in GraphQL.js contains code implementing a specification-compliant GraphQL query introspection system. diff --git a/src/content/learn/Learn-Queries.md b/src/content/learn/Learn-Queries.md index 6d9992fd30..ae3f69f546 100644 --- a/src/content/learn/Learn-Queries.md +++ b/src/content/learn/Learn-Queries.md @@ -26,9 +26,9 @@ You can see immediately that the query has exactly the same shape as the result. The field `name` returns a `String` type, in this case the name of the main hero of Star Wars, `"R2-D2"`. -> Oh, one more thing - the query above is *interactive*. That means you can change it as you like and see the new result. Try adding an `appearsIn` field to the `hero` object in the query, and see the new result. +> Oh, one more thing - the query above is _interactive_. That means you can change it as you like and see the new result. Try adding an `appearsIn` field to the `hero` object in the query, and see the new result. -In the previous example, we just asked for the name of our hero which returned a String, but fields can also refer to Objects. In that case, you can make a *sub-selection* of fields for that object. GraphQL queries can traverse related objects and their fields, letting clients fetch lots of related data in one request, instead of making several roundtrips as one would need in a classic REST architecture. +In the previous example, we just asked for the name of our hero which returned a String, but fields can also refer to Objects. In that case, you can make a _sub-selection_ of fields for that object. GraphQL queries can traverse related objects and their fields, letting clients fetch lots of related data in one request, instead of making several roundtrips as one would need in a classic REST architecture. ```graphql # { "graphiql": true } @@ -43,8 +43,7 @@ In the previous example, we just asked for the name of our hero which returned a } ``` -Note that in this example, the `friends` field returns an array of items. GraphQL queries look the same for both single items or lists of items, however we know which one to expect based on what is indicated in the schema. - +Note that in this example, the `friends` field returns an array of items. GraphQL queries look the same for both single items or lists of items; however, we know which one to expect based on what is indicated in the schema. ## Arguments @@ -76,7 +75,6 @@ Arguments can be of many different types. In the above example, we have used an [Read more about the GraphQL type system here.](/learn/schema) - ## Aliases If you have a sharp eye, you may have noticed that, since the result object fields match the name of the field in the query but don't include arguments, you can't directly query for the same field with different arguments. That's why you need _aliases_ - they let you rename the result of a field to anything you want. @@ -95,7 +93,6 @@ If you have a sharp eye, you may have noticed that, since the result object fiel In the above example, the two `hero` fields would have conflicted, but since we can alias them to different names, we can get both results in one request. - ## Fragments Let's say we had a relatively complicated page in our app, which lets us look at two heroes side by side, along with their friends. You can imagine that such a query could quickly get complicated, because we would need to repeat the fields at least once - one for each side of the comparison. @@ -154,7 +151,7 @@ fragment comparisonFields on Character { ## Operation name -Up until now, we have been using a shorthand syntax where we omit both the `query` keyword and the query name, but in production apps it's useful to use these to make our code less ambiguous. +In several of the examples above we have been using a shorthand syntax where we omit both the `query` keyword and the query name, but in production apps it's useful to use these to make our code less ambiguous. Here’s an example that includes the keyword `query` as _operation type_ and `HeroNameAndFriends` as _operation name_ : @@ -172,11 +169,11 @@ query HeroNameAndFriends { The _operation type_ is either _query_, _mutation_, or _subscription_ and describes what type of operation you're intending to do. The operation type is required unless you're using the query shorthand syntax, in which case you can't supply a name or variable definitions for your operation. -The _operation name_ is a meaningful and explicit name for your operation. It is only required in multi-operation documents, but its use is encouraged because it is very helpful for debugging and server-side logging. +The _operation name_ is a meaningful and explicit name for your operation. It is only required in multi-operation documents, but its use is encouraged because it is very helpful for debugging and server-side logging. When something goes wrong (you see errors either in your network logs, or in the logs of your GraphQL server) it is easier to identify a query in your codebase by name instead of trying to decipher the contents. -Think of this just like a function name in your favorite programming language. -For example, in JavaScript we can easily work only with anonymous functions, but when we give a function a name, it's easier to track it down, debug our code, -and log when it's called. In the same way, GraphQL query and mutation names, along with fragment names, can be a useful debugging tool on the server side to identify +Think of this just like a function name in your favorite programming language. +For example, in JavaScript we can easily work only with anonymous functions, but when we give a function a name, it's easier to track it down, debug our code, +and log when it's called. In the same way, GraphQL query and mutation names, along with fragment names, can be a useful debugging tool on the server side to identify different GraphQL requests. ## Variables @@ -207,7 +204,6 @@ query HeroNameAndFriends($episode: Episode) { Now, in our client code, we can simply pass a different variable rather than needing to construct an entirely new query. This is also in general a good practice for denoting which arguments in our query are expected to be dynamic - we should never be doing string interpolation to construct queries from user-supplied values. - ### Variable definitions The variable definitions are the part that looks like `($episode: Episode)` in the query above. It works just like the argument definitions for a function in a typed language. It lists all of the variables, prefixed by `$`, followed by their type, in this case `Episode`. @@ -218,10 +214,9 @@ Variable definitions can be optional or required. In the case above, since there To learn more about the syntax for these variable definitions, it's useful to learn the GraphQL schema language. The schema language is explained in detail on the Schema page. - ### Default variables -Default values can also be assigned to the variables in the query by adding the default value after the type declaration. +Default values can also be assigned to the variables in the query by adding the default value after the type declaration. ```graphql query HeroNameAndFriends($episode: Episode = JEDI) { @@ -234,7 +229,7 @@ query HeroNameAndFriends($episode: Episode = JEDI) { } ``` -When default values are provided for all variables, you can call the query without passing any variables. If any variables are passed as part of the variables dictionary, they will override the defaults. +When default values are provided for all variables, you can call the query without passing any variables. If any variables are passed as part of the variables dictionary, they will override the defaults. ## Directives @@ -263,7 +258,6 @@ We needed to use a new feature in GraphQL called a _directive_. A directive can Directives can be useful to get out of situations where you otherwise would need to do string manipulation to add and remove fields in your query. Server implementations may also add experimental features by defining completely new directives. - ## Mutations Most discussions of GraphQL focus on data fetching, but any complete data platform needs a way to modify server-side data as well. @@ -294,12 +288,11 @@ A mutation can contain multiple fields, just like a query. There's one important This means that if we send two `incrementCredits` mutations in one request, the first is guaranteed to finish before the second begins, ensuring that we don't end up with a race condition with ourselves. - ## Inline Fragments Like many other type systems, GraphQL schemas include the ability to define interfaces and union types. [Learn about them in the schema guide.](/learn/schema/#interfaces) -If you are querying a field that returns an interface or a union type, you will need to use *inline fragments* to access data on the underlying concrete type. It's easiest to see with an example: +If you are querying a field that returns an interface or a union type, you will need to use _inline fragments_ to access data on the underlying concrete type. It's easiest to see with an example: ```graphql # { "graphiql": true, "variables": { "ep": "JEDI" } } @@ -322,7 +315,6 @@ To ask for a field on the concrete type, you need to use an _inline fragment_ wi Named fragments can also be used in the same way, since a named fragment always has a type attached. - ### Meta fields Given that there are some situations where you don't know what type you'll get back from the GraphQL service, you need some way to determine how to handle that data on the client. GraphQL allows you to request `__typename`, a meta field, at any point in a query to get the name of the object type at that point. @@ -348,4 +340,3 @@ Given that there are some situations where you don't know what type you'll get b In the above query, `search` returns a union type that can be one of three options. It would be impossible to tell apart the different types from the client without the `__typename` field. GraphQL services provide a few meta fields, the rest of which are used to expose the [Introspection](../introspection/) system. - diff --git a/src/content/learn/Learn-Schema.md b/src/content/learn/Learn-Schema.md index 8cecab8120..3bb4d32c1a 100644 --- a/src/content/learn/Learn-Schema.md +++ b/src/content/learn/Learn-Schema.md @@ -202,8 +202,8 @@ This means that the _list itself_ can be null, but it can't have any null member ```js myField: null // valid myField: [] // valid -myField: ['a', 'b'] // valid -myField: ['a', null, 'b'] // error +myField: ["a", "b"] // valid +myField: ["a", null, "b"] // error ``` Now, let's say we defined a Non-Null List of Strings: @@ -217,8 +217,8 @@ This means that the list itself cannot be null, but it can contain null values: ```js myField: null // error myField: [] // valid -myField: ['a', 'b'] // valid -myField: ['a', null, 'b'] // valid +myField: ["a", "b"] // valid +myField: ["a", null, "b"] // valid ``` You can arbitrarily nest any number of Non-Null and List modifiers, according to your needs. diff --git a/src/content/learn/Learn-Validation.md b/src/content/learn/Learn-Validation.md index e4e2a517ce..3adc324963 100644 --- a/src/content/learn/Learn-Validation.md +++ b/src/content/learn/Learn-Validation.md @@ -12,7 +12,7 @@ developers when an invalid query has been created, without having to rely on runtime checks. For our Star Wars example, the file -[starWarsValidation-test.js](https://github.com/graphql/graphql-js/blob/master/src/__tests__/starWarsValidation-test.js) +[starWarsValidation-test.ts](https://github.com/graphql/graphql-js/blob/main/src/__tests__/starWarsValidation-test.ts) contains a number of queries demonstrating various invalidities, and is a test file that can be run to exercise the reference implementation's validator. @@ -165,6 +165,6 @@ This has just scratched the surface of the validation system; there are a number of validation rules in place to ensure that a GraphQL query is semantically meaningful. The specification goes into more detail about this topic in the "Validation" section, and the -[validation](https://github.com/graphql/graphql-js/blob/master/src/validation) +[validation](https://github.com/graphql/graphql-js/blob/main/src/validation) directory in GraphQL.js contains code implementing a specification-compliant GraphQL validator. diff --git a/src/pages/404.tsx b/src/pages/404.tsx new file mode 100644 index 0000000000..20fbb5a4cc --- /dev/null +++ b/src/pages/404.tsx @@ -0,0 +1,22 @@ +import * as React from "react" +import Layout from "../components/Layout" +import Seo from "../components/Seo" + +const NotFound: React.FC = ({}) => { + return ( + +
            +
            +

            Oops!

            +

            Page not found!

            +
            +
            +
            + ) +} + +export function Head() { + return +} + +export default NotFound diff --git a/src/pages/blog.tsx b/src/pages/blog.tsx index 65b349e946..1bb3a7566c 100644 --- a/src/pages/blog.tsx +++ b/src/pages/blog.tsx @@ -1,75 +1,43 @@ -import React from "react" +import * as React from "react" +import { graphql } from "gatsby" +import type { PageProps } from "gatsby" import Layout from "../components/Layout" -import BlogPost from "../components/BlogPost" +import BlogPostPreview from "../components/BlogPostPreview" import BlogSidebar from "../components/BlogSidebar" -import { graphql } from "gatsby" +import Seo from "../components/Seo" -export default ({ pageContext, data }) => { - const posts = data.allMarkdownRemark.edges - .map((e: any) => e.node) - .sort((a: any, b: any) => { - const aDate = new Date(a.frontmatter.date) - const bDate = new Date(b.frontmatter.date) - if (aDate > bDate) { - return -1 - } else if (aDate < bDate) { - return 1 +export const query = graphql` + query BlogPostListPage { + allBlogPost(sort: { date: DESC }) { + nodes { + id + ...BlogPostPreview_post } - return 0 - }) + } + } +` + +type Props = PageProps + +const BlogPostListPage: React.FC = ({ data }) => { return ( - +
            - {posts.map( - ( - { - frontmatter: { title, date, permalink, byline, guestBio }, - rawMarkdownBody, - }: any, - i - ) => ( - - ) - )} + {data.allBlogPost.nodes.map(post => ( + + ))}
            - +
            ) } -export const query = graphql` - query getAllBlogPosts { - allMarkdownRemark( - filter: { frontmatter: { permalink: { regex: "/blog/" } } } - ) { - edges { - node { - frontmatter { - title - date - permalink - byline - guestBio - sublinks - layout - } - id - rawMarkdownBody - } - } - } - } -` +export function Head() { + return +} + +export default BlogPostListPage diff --git a/src/pages/blog/{BlogPost.postId}.tsx b/src/pages/blog/{BlogPost.postId}.tsx new file mode 100644 index 0000000000..e6e10adabb --- /dev/null +++ b/src/pages/blog/{BlogPost.postId}.tsx @@ -0,0 +1,34 @@ +import * as React from "react" +import type { PageProps, HeadProps } from "gatsby" +import { graphql } from "gatsby" +import Layout from "../../components/Layout" +import BlogLayout from "../../components/BlogLayout" +import Seo from "../../components/Seo" + +export const query = graphql` + query BlogPostPage($id: String!) { + blogPost(id: { eq: $id }) { + title + ...BlogLayout_post + } + } +` + +type Props = PageProps + +const BlogPostPage: React.FC = ({ data }) => { + // Always exist since it is collected by Gatsby filesystem route API + const post = data.blogPost! + + return ( + + + + ) +} + +export function Head({ data }: HeadProps) { + return +} + +export default BlogPostPage diff --git a/src/pages/brand.tsx b/src/pages/brand.tsx new file mode 100644 index 0000000000..07faa30ea6 --- /dev/null +++ b/src/pages/brand.tsx @@ -0,0 +1,455 @@ +import React, { useState } from "react" +import type { PageProps } from "gatsby" +import Layout from "../components/Layout" +import Seo from "../components/Seo" + +export default ({ pageContext }: PageProps<{}, { sourcePath: string }>) => { + return ( + +
            +

            GraphQL Logo & Brand Guidelines

            +
            + +
            +

            + Here you’ll find dos and don’ts for use of the GraphQL brand and + GraphQL logo files in supported arrangement and colors. +

            +

            + “GraphQL” is a trademark managed by the{" "} + + GraphQL Foundation + + . Use of the trademark and logo are subject to the{" "} + + LF Projects trademark policy + + . +

            +

            + Certain fair use of the GraphQL mark are pre-approved, such as factual + references to the project. Others require permission first, such as + apparel for sale or any other commercial purpose, using the word + GraphQL in domain names, or using the mark on printed materials, to + name a few. You can find a more comprehensive list in the trademark + policy. +

            +

            + Please email{" "} + + info@graphql.org + {" "} + with any questions or requests. +

            +
            +
            +

            The GraphQL™ trademark

            +

            + The word "GraphQL" may only be used to refer to the GraphQL project + and technologies which conform to the{" "} + + GraphQL specification + + . +

            +
            +
              +
            • + Do keep the “GraphQL” word consistent, with the first + letter and QL capitalized. +
            • +
            • + Do use "GraphQL" to clearly describe the GraphQL project + or a conforming technology. +
                +
              • GraphQL for Go
              • +
              • Quick Start to GraphQL by <company>
              • +
              +
            • +
            • + Do provide clear attribution for projects, services and + events, balancing "GraphQL" with your own brand. +
                +
              • <service> for GraphQL by <company>
              • +
              • Seattle GraphQL Meetup hosted by <company>
              • +
              +
            • +
            +
              +
            • + Don't lowercase or abbreviate “GraphQL” (for example + "Graphql" or “GQL”). +
            • +
            • + Don't directly combine “GraphQL” with another trademark + or generic term. +
                +
              • Go GraphQL
              • +
              • GraphQL Quick Start by <company>
              • +
              +
            • +
            • + Don't use “GraphQL” in a way that could imply + partnership, sponsorship, or endorsement by the GraphQL project or + GraphQL Foundation either directly or by omission. +
            • +
            • + Don't use the GraphQL brand disparagingly or in any other + way that violates our{" "} + + code of conduct + + . +
            • +
            +
            +
            +
            +

            Color & Typeface

            +

            Our core color is called Rhodamine.

            +

            The GraphQL wordmark and headlines are set in Rubik Light.

            +
            +
            + Rhodamine +
            +
            P3
            +
            0.8824, 0, 0.5961
            +
            RGB
            +
            225, 0, 152 / #E10098
            +
            PMS
            +
            + + Rhodamine Red C + +
            +
            CMYK
            +
            5, 92, 0, 0
            +
            +
            +
            + + Rubik Light + +
            +
            Weight
            +
            300
            +
            License
            +
            + + Open Font License + +
            +
            +
            GraphQL ÅBCørm123
            +
            +
            +
            +
              +
            • + Do use Rhodamine alongside grayscale or + neutral colors. +
            • +
            • + Do prefer the P3 wide gamut color over RGB in digital; + the PMS spot color over CMYK process in print. +
            • +
            • + Do use Rubik Light with optical kerning and standard + letter spacing. +
            • +
            +
              +
            • + Don't use Rhodamine for large background areas. +
            • +
            • + Don't directly combine Rhodamine with other bright or + saturated colors. +
            • +
            • + Don't bold, italicize, or alter the letter spacing of + the GraphQL wordmark. +
            • +
            +
            +
            +
            +

            GraphQL Logo & Hexagraph

            +

            + Our logomark is called the "hexagraph". The GraphQL logo is composed + of the hexagraph and the GraphQL wordmark set in Rubik Light. +

            +
            +
            +
            + +
            +
            +
            +
            + + +
            +
            + + +
            +
            +
            +
            +
              +
            • + Do prefer the horizontal logo, but use the stacked logo + at larger sizes. +
            • +
            • + Do use the provided assets, don't redraw + the hexgraph. +
            • +
            +
            +
            +
              +
            • +
              + Don't rotate or stretch the hexagraph. Position the + inner triangle pointing upwards. +
              + + +
            • +
            • +
              + Don't remove or add any elements within the hexagraph, + or combine with another logo. +
              + + +
            • +
            • +
              + Don't decorate or add effects to any part of + the logo. +
              + +
              + +
              +
            • +
            • +
              + Don't resize or reposition elements of the hexagraph. +
              + + +
            • +
            • +
              + Don't resize or reposition the wordmark relative to the + hexagraph. +
              + +
            • +
            • +
              + Don't change the typeface of the wordmark. +
              + +
            • +
            +
            +

            Spacing

            +

            + Give the logo some space to breathe. Keep a clear space of at least + half the height of the hexagraph along on all sides. +

            +
            + + +
            +

            Color use

            +

            + The GraphQL logo should appear in Rhodamine, white, or black. It may + appear on any color background with the appropriate logo color. +

            +
            + + + + + + + +
            +
            +
              +
            • + Do prefer Rhodamine on a white background, our default + color combination. +
            • +
            • + Do otherwise prefer use the white logo on most + backgrounds unless contrast requires use of black. +
            • +
            +
            +
            + + + + + + +
            +
            +
              +
            • + Don't use black on a background of Rhodamine. +
            • +
            • + Don't use Rhodamine on a color or patterned background; + use white instead. +
            • +
            • + Don't use different colors or apply gradients to the + logo. +
            • +
            • + Don't use different colors for elements of the logo. + Always use the same color for the hexagraph and wordmark. +
            • +
            +
            +
            +
            + +
            +
            + ) +} + +export function Head() { + return +} + +function AgreeActions() { + const [agree, setAgree] = useState(false) + return ( +
            + + + Download Logo Files + + + Request Permission + +
            + ) +} diff --git a/src/pages/code.tsx b/src/pages/code.tsx new file mode 100644 index 0000000000..bbba9015e0 --- /dev/null +++ b/src/pages/code.tsx @@ -0,0 +1,426 @@ +import type { PageProps } from "gatsby" +import { AnchorLink } from "gatsby-plugin-anchor-links" +import React, { useState, Fragment } from "react" +import Layout from "../components/Layout" +import Marked from "../components/Marked" +import Seo from "../components/Seo" +import { toSlug } from "../utils/slug" + +export interface ILibrary { + description: string + github?: string + npm?: string + howto: string + name: string + sourcePath: string + url: string + gem?: string + lastRelease?: string + formattedLastRelease?: string + stars?: number + formattedStars?: string + license?: string +} + +interface Language { + name: string + totalStars: number + categoryMap: { + Client: ILibrary[] + Server: ILibrary[] + } +} + +interface Tool { + name: string + totalStars: number + categoryMap: { + GatewaysSupergraphs: ILibrary[] + General: ILibrary[] + } +} +interface PageContext { + languageList: Language[] + toolList: Tool[] + serviceList: ILibrary[] + sourcePath: string +} + +export function Library({ data }: { data: ILibrary }) { + const [overflown, setOverflown] = useState(false) + const [expanded, setExpanded] = useState(false) + return ( +
            +
            + +

            {data.name}

            +
            + {data.github && ( +
            + GitHub + + {data.github} + +
            + )} + {data.npm && ( + + )} + {data.gem && ( + + )} + {data.lastRelease && ( +
            + Last Release + {data.formattedLastRelease} +
            + )} + {data.stars && ( +
            + Stars + {data.formattedStars} +
            + )} + {data.license && ( +
            + License + {data.license} +
            + )} + {data.howto ? ( +
            + {data.description} +
            + ) : ( +
            + )} +
            +
            +
            { + if (el && !overflown) { + setOverflown(el.clientHeight < el.scrollHeight) + } + }} + > + {data.howto || data.description} +
            + {overflown && ( +
            setExpanded(true)} + > + +
            + )} +
            +
            + ) +} + +const categorySlugMap = [ + ["Server", toSlug("Server")], + ["Client", toSlug("Client")], + ["Tools", toSlug("Tools")], + ["Gateways-supergraphs", toSlug("Gateways-supergraphs")], + ["General", toSlug("General")], +] + +export function LibraryList({ data }: { data: ILibrary[] }) { + return ( +
            + {data.map(library => ( + + ))} +
            + ) +} + +interface ToolsListProps { + pageContext: PageContext + type: "General" | "GatewaysAndSupergraphs" +} + +export function ToolsList({ pageContext, type }: ToolsListProps) { + return ( + <> +

            + {type === "GatewaysAndSupergraphs" ? "Gateways / Supergraphs" : type} +

            + {pageContext.toolList.map(tool => ( +
            + {Object.entries(tool.categoryMap).map( + ([categoryName, data]) => + categoryName === type && + )} +
            + ))} + + ) +} +const sortLanguageList = (sortConfig: { + sortType?: "popularity" | "alphabetical" + data: Language[] +}) => { + const { sortType = "popularity", data } = sortConfig + const _data = [...data] + if (sortType === "popularity") return _data + _data?.sort((a, b) => { + if (a.name > b.name) { + return 1 + } + if (a.name < b.name) { + return -1 + } + return 0 + }) + return _data +} + +const SortInput = (props: { + isChecked: boolean + onChange: (e: any) => unknown + value: string + label: string +}) => { + const { isChecked, onChange, value, label } = props + return ( +
            + + +
            + ) +} +export default ({ pageContext }: PageProps<{}, PageContext>) => { + const [sortBy, setSortBy] = useState<"popularity" | "alphabetical">( + "popularity" + ) + const sortedLanguageList = sortLanguageList({ + sortType: sortBy, + data: pageContext.languageList, + }) + const handleInputChange = (e: any) => { + setSortBy(e.target.value) + } + return ( + +
            +
            +

            Code

            +

            using GraphQL

            +
            +
            +
            +
            +
            +
            +

            + Because GraphQL is a communication pattern, there are many tools + to help you get started working which support GraphQL in all + sorts of languages. +

            +
            +

            Go to

            +
            + +

            Language Support

            +
            + +

            Tools

            +
            + +

            Services

            +
            +
            +
            +
            +

            + Language Support +

            +
            +

            Sort By:

            + + +
            +
            + {sortedLanguageList + ?.map(language => language?.name!) + .filter(Boolean) + .map(languageName => { + const slug = toSlug(languageName) + return ( + + {languageName} + + ) + })} +
            +
            + {sortedLanguageList.map(lang => { + const languageName = lang.name + const libraryCategories = lang.categoryMap + const filteredCategorySlugMap = categorySlugMap.filter( + ([libraryCategoryName]) => + libraryCategories[ + libraryCategoryName as "Client" | "Server" + ]?.length + ) + const languageSlug = toSlug(languageName) + return ( +
            +
            +

            {languageName}

            + {filteredCategorySlugMap.length > 1 && ( +

            + {filteredCategorySlugMap.map( + ([libraryCategoryName, categorySlug], i) => ( + + + {libraryCategoryName} + + {i < filteredCategorySlugMap.length - 1 && + " / "} + + ) + )} +

            + )} +
            +
            + {filteredCategorySlugMap.map( + ([categoryName, categorySlug]) => + categoryName in libraryCategories && ( +
            +

            + {categoryName} +

            + +
            + ) + )} +
            +
            + ) + })} +
            +
            +
            +

            Tools

            +

            + + + Gateways/Supergraphs + + {" / "} + + General + + +

            +
            +
            + + +

            + + Services + + # + +

            + +
            +
            +

            + Want to improve this page? See the{" "} + + docs here + + . +

            +
            +
            + ) +} + +export function Head() { + return +} diff --git a/src/pages/conf/faq.tsx b/src/pages/conf/faq.tsx new file mode 100644 index 0000000000..fb96f22549 --- /dev/null +++ b/src/pages/conf/faq.tsx @@ -0,0 +1,873 @@ +import React, { ReactNode } from "react" +import FooterConf from "../../components/Conf/Footer" +import HeaderConf from "../../components/Conf/Header" +import LayoutConf from "../../components/Conf/Layout" +import ButtonConf from "../../components/Conf/Button" +import SectionConf from "../../components/Conf/Section" +import SeoConf from "../../components/Conf/Seo" + +const faq: Array<{ id: string; title: string; contents: ReactNode }> = [ + { + id: "general", + title: "General", + contents: ( + <> +

            + What is the format of the GraphQLConf 2023, and when will it take + place? +

            +

            + GraphQLConf is an in-person event that will take place on September + 19-21 in the San Francisco Bay Area at the{" "} + + Hyatt Regency SFO hotel + + . +

            +

            Will all sessions be recorded?

            +

            + Yes! Once the event ends, all attendees will be able to view all + sessions on-demand on the{" "} + + GraphQL Foundation YouTube channel + + . Recordings will be available within two weeks of the event + conclusion. +

            +

            What is the timezone for the event?

            +

            GraphQLConf will take place in Pacific Daylight Time, UTC -7.

            + + ), + }, + { + id: "speakers", + title: "Speakers", + contents: ( +

            + For all session or speaker-related questions, please contact{" "} + cfp@linuxfoundation.org. +

            + ), + }, + { + id: "sponsors", + title: "Sponsors", + contents: ( +

            + Interested in sponsoring GraphQLConf? Contact{" "} + graphqlconf@graphql.org to + secure your sponsorship today.{" "} + Learn more. +

            + ), + }, + { + id: "contact", + title: "Contact Us", + contents: ( +

            + Answers to many common questions are readily available on this event’s + website. If you cannot find the answer to your question, you are welcome + to contact us by emailing{" "} + + graphql_events@linuxfoundation.org + + . +

            + ), + }, + { + id: "confidentiality", + title: "Confidentiality", + contents: ( +

            + We never sell attendee lists or contact information, nor do we authorize + others to do so. If you receive an email claiming to sell an attendee + list for a Linux Foundation event, please forward it to{" "} + + events@linuxfoundation.org + + . +

            + ), + }, + { + id: "codeofconduct", + title: "Code of Conduct", + contents: ( + <> +

            + The GraphQL Foundation and the Linux Foundation are dedicated to + providing a harassment-free experience for participants at all of our + events, whether they are held in person or virtually. GraphQLConf is a + working conference intended for professional networking and + collaboration within the open source community. It exists to encourage + the open exchange of ideas and expression and requires an environment + that recognizes the inherent worth of every person and group. While at + GraphQLConf or related ancillary or social events, any participants, + including members, speakers, attendees, volunteers, sponsors, + exhibitors, booth staff and anyone else, should not engage in + harassment in any form. +

            +

            + This Code of Conduct may be revised at any time by The GraphQL + Foundation or The Linux Foundation and the terms are non-negotiable. + Your registration for or attendance at GraphQL, whether in person or + virtually, indicates your agreement to abide by this policy and its + terms. +

            +

            + Please read the full{" "} + + Code of Conduct + {" "} + for the complete policy and terms. +

            + + ), + }, + { + id: "dni", + title: "Diversity & Inclusion", + contents: ( + <> +

            + Education and collaboration are vital to the future of the open source + ecosystem, and it is imperative to us that everyone in the community + that wants to participate feels welcome to do so regardless of gender, + gender identity, sexual orientation, disability, race, ethnicity, age, + religion or economic status. Our{" "} + code of conduct outlines our expectations + for all those who participate in our community, as well as the + consequences for unacceptable behavior. +

            +

            + We offer diversity and need based{" "} + scholarships and have considered a broad + range of both onsite resources and{" "} + emergency resources as well as a{" "} + health & safety policy. +

            +

            + If you have ideas on how we can create a more inclusive event, please + do not hesitate to let us know. Contact Emily Ruf, Senior Event + Manager, at{" "} + eruf@linuxfoundation.org + . +

            + + ), + }, + { + id: "chaoss-event-badge", + title: "CHAOSS D&I Event Badge", + contents: ( + <> + D&I Badging badge state: Gold +

            + Awarded to events in the open source community that fosters healthy + D&I practices.{" "} + + Learn More + + . +

            + + ), + }, + { + id: "health-and-safety", + title: "Health & Safety", + contents: ( + <> + Updated June 12, 2023 + +

            + + Our community’s well-being is extremely important to us, and + creating a safe, worry-free event is our top priority. We will + adjust our health and safety protocols as needed while updating this + page with information about plans for our attendees onsite. We + continue to look to local municipality guidelines to make the best + and most informed decisions around onsite safety and requirements.{" "} + + All in-person attendance requirements are subject to change based + on local guidelines. + + +

            + +

            Health Measures

            +

            COVID-19

            +

            + Masks are recommended, but not required, to attend this event. There + are no vaccine or testing requirements to attend this event. These are + both subject to change based on local municipality requirements and + any changes in COVID-19. +

            + +

            + We encourage high-risk individuals, and those with family or + colleagues who are at a higher risk of getting COVID-19, to consider + wearing a high-quality mask recommended by health agencies. We also + ask that you respect those around you who choose to wear a mask. A + limited number of masks will be available upon request at Registration + onsite. +

            + +

            Vaccines

            +

            + We encourage flu shots, COVID-19 vaccination and boosters to reduce + the threat of illness. +

            + +

            Onsite Personal Protection

            +
              +
            • + If you feel ill while at the event, please take a COVID-19 self-test + and isolate as needed. +
            • +
            • + Hand sanitizing stations will be available throughout the event + venue. +
            • +
            • + A limited supply of face masks will be available upon request at + Registration. +
            • +
            • + We respectfully remind all attendees, speakers, sponsors, and staff + to: +
                +
              • + Stay home if you experience any cold or flu-like symptoms. +
              • +
              • Wash your hands for at least 20 seconds.
              • +
              • + Stay healthy! Engage in responsible health practices such as + avoiding touching eyes/nose/mouth with unwashed hands. +
              • +
              +
            • +
            • + We’ll be providing a wearable indicator that shows your comfort + level with social distancing. While it's optional to wear, we highly + encourage participants to use it. +
            • +
            + +

            Food Allergies

            +

            + The Linux Foundation believes it’s essential to prioritize the safety + and well-being of all attendees, including those with food allergies. +

            + +
              +
            • + We aim to provide a variety of choices to cater to various needs + such as vegetarian, vegan, gluten-free, dairy-free, and nut-free. +
            • +
            • + All food items will be clearly labeled at the event, indicating the + ingredients used and any potential allergens present. +
            • +
            + +

            + If you have a food allergy we need to be aware of, please email us at{" "} + + graphql_events@linuxfoundation.org + + . +

            + +

            Safety Resources & Tips

            + +

            + Attendee safety is our top priority. Always exercise common sense and + good judgment when traveling. +

            + +

            General Safety

            +
              +
            • + When walking around the city, remember to take off your conference + badge. +
            • +
            • + Safety in numbers: Exploring the city can be safer when done with a + friend or colleague. +
            • +
            • + Walk with purpose and stick to well-lit areas and on main streets.   +
            • +
            • + If alone after dark, use a ride service such as Lyft, Uber or a + taxi.  +
            • +
            • + Save the address and phone number of where you’re staying in your + phone. +
            • +
            • + Be aware of your surroundings and keep your eyes up and not on your + phone. +
            • +
            • + If something doesn’t feel right, walk into a business/hotel for + help. +
            • +
            • Be careful and alert when using a cash machine.
            • +
            • + Carry your purse or wallet safely. Purses should be closed and held + in front of your body. Wallets should be carried in a front pants + pocket or in an interior jacket pocket. +
            • +
            + +

            When Visiting Any Venue:

            +
              +
            • + Know where you are; the venue name, street address or cross street. +
            • +
            • + Take a moment to identify at least two exit routes from any building + or event and emergency exit signs. +
            • +
            • + If an alarm sounds, evacuate immediately. Follow directions from + First Responders and venue staff. +
            • +
            • + Do not carry any unnecessary valuables with you, or leave personal + items unattended. +
            • +
            • + Do not leave drinks unattended, or accept open drinks or food + products from strangers. +
            • +
            + +

            Emergency Evacuations

            +
              +
            • + In the event of an emergency evacuation, make your way quickly and + calmly to an emergency exit. Be aware of any hazards or dangers + around you and proceed to a safe area. +
            • +
            • + Follow the advice of venue staff, security personnel and First + Responders. +
            • +
            • + Do not put yourself in danger by stopping to collect belongings + unless directed by First Responders. +
            • +
            + +

            Weapon Policy

            +

            + The Linux Foundation does not allow firearms or other weapons, + regardless of whether they are permitted or not, or whether they are + concealed or not, to be brought into our events. By registering for + the event, you are agreeing that you understand this policy and will + not bring a firearm or other weapons into the event. +

            + + ), + }, + { + id: "invoices", + title: "Invoices & Certificates of Attendance", + contents: ( + <> +

            Registration Invoices

            +

            + Invoice receipts are downloadable from the confirmation email you + received after registering under the Payment Receipt Information + section. If the downloadable invoice receipt does not meet your needs + or you need to have your confirmation email resent, please submit your + request{" "} + + here + + . Please include any additional customization you need for your + invoice receipt in the request. +

            + +

            Certificates of Attendance

            +

            + To request a Certificate of Attendance, please submit a request{" "} + + here + + . +

            +

            + Please Note: We verify attendance through the registration system, and + Certificate of Attendance letters are sent out after the event is + completed. +

            + + ), + }, + { + id: "emergency-resources", + title: "Emergency Resources", + contents: ( + <> +

            Taxi

            +

            Allied Yellow Cab

            +

            650-579-7000

            + +

            Closest Police Station

            +

            + + Burlingame Police Department + +

            +

            650-777-4100

            +

            Dial 911 for Emergencies

            + +

            24-Hour Hospital

            +

            + + Mills-Peninsula Medical Center + +

            +

            + 1501 Trousdale Drive +
            + Burlingame, CA 94010 +

            +

            650-696-5400

            +

            Dial 911 for Emergencies or Ambulance

            +

            + 9-minute drive from venue +
            + 43-minute walk from venue (2.1 miles) +

            + +

            Urgent Care

            +

            + + Dignity Health – GoHealth Urgent Care + +

            +

            + 1310 El Camino Real Ste I-J +
            + San Bruno, CA 94066 +

            +

            650-270-2395

            +

            9-minute drive from venue (5 miles)

            + +

            Pharmacy

            +

            + + Walgreens + {" "} + (drive-thru COVID-19 testing) +

            +

            + 45 S. El Camino Real +
            + Millbrae, CA 94030 +

            +

            800-925-4733

            +

            + 6-minute drive from venue +
            + 39-minute walk from venue (1.9 miles) +

            + +

            24 Hour Rape Crisis Line

            +

            + + Division of Trauma Recovery Services + +

            +

            + San Francisco Women Against Rape 24-Hour Crisis Line: 415-647-RAPE + (7272) +

            + + ), + }, + { + id: "onsite-resources", + title: "Onsite Resources", + contents: ( + <> +

            Nursing Room

            +

            + A private nursing room will be available at the event to aid in the + comfort and accessibility for our nursing attendees. The room will be + available all days of the event and will be located onsite. For + location information, please check with registration or information + desk staff onsite. +

            + +

            Venue Accessibility

            +

            + If you need any assistance locating an elevator, or have other + questions about accessibility onsite, please speak to a member of the + LF event staff at any of the registration or information desks onsite. + If you have questions prior to the event, please email + + graphql_events@linuxfoundation.org + + . +

            + +

            Wheelchair & Medical Equipment Rental

            +

            + If you need a wheelchair or scooter, you can rent them from{" "} + + Bay City Medical Supplies + + . Please contact them directly for rates and availability. +

            + +

            Zen Zone

            +

            + All attendees are invited to use the Zen Zone as needed for sensory + relaxation, meditation, and worship. It is a physical space where + conversation and interaction are not allowed, where attendees can go + if, for any reason, they can’t interact with other attendees at that + time. +

            + +

            Communication Stickers

            +

            + At Registration, attendees can pick up communication stickers to add + to their badges. Communication stickers indicate an attendee’s + requested level of interaction with both other attendees and press + (including photographers and videographers). +

            + +
              +
            • Green = Open to communicate.
            • +
            • Yellow = Only if you know me, please.
            • +
            • + Red = I’m not interested in communicating (or being videotaped or + photographed) at this time. +
            • +
            +

            Please be respectful of attendee communication preferences.

            + +

            Interaction Pins

            +

            + Please be mindful of attendee’s pins throughout the conference and use + this tool to communicate appropriately: +

            +
              +
            • + Green = Handshakes and high 5’s are welcome with frequent + handwashing. +
            • +
            • Yellow = Still being cautious, elbow bumps only.
            • +
            • Red = No contact at all, please remain 6 feet away.
            • +
            +

            + Don’t see a pin? Assume red until given permission from the other + attendee. +

            + +

            Share your Pronouns

            +

            + Pick up a pronoun sticker from registration to share your pronouns + with other conference attendees. Please be respectful of attendees’ + pronouns. +

            + +

            First Aid/Medical Assistance

            +

            + If you require first aid or medical assistance, please visit our + registration desk or the venue front desk. For emergencies, please + dial 911. +

            + +

            How to Handle a Harassment Report

            +

            + If you are being harassed, notice that someone else is being harassed, + or have any other concerns, please contact a member of the event staff + immediately. Event staff can be identified by staff badges and/or + shirts onsite and can be found at the event registration counter at + any time. Our staff has had incident response training, responds to + harassments reports and does so in accordance with the process + recommended by the Ada Initiative, which can be found on{" "} + + the Geek Feminism Wiki + + . +

            + +

            + Conference staff will be happy to help participants contact + hotel/venue security or local law enforcement, provide escorts, or + otherwise assist those experiencing harassment to feel safe for the + duration of the conference. +

            +

            + If you are planning to attend and have concerns regarding another + individual who may be present, please reach out to us pre-event. + Precautions will be taken to ensure a victim’s comfort and safety, + including, but not limited to providing an escort, prepping onsite + event staff, keeping victim and harasser from attending the same + talks/social events and providing onsite contact cell phone numbers + for immediate contact. +

            + +

            The Linux Foundation Contacts:

            +

            + Emily Ruf, Senior Event Manager ( + eruf@linuxfoundation.org + ) +

            +

            + Angela Brown, SVP & General Manager of Events (+1-575-694-2263; + + angela@linuxfoundation.org + + ) +

            + + ), + }, + { + id: "refund-policy", + title: "Refund Policy", + contents: ( + <> +

            Cancellations

            +

            + If you must cancel for any reason, please{" "} + + sign back into your registration + + , click the “Register/Modify” button and select “Unregister.” If you + need further assistance, email{" "} + + registration@linuxfoundation.org + + . +

            +

            + Refunds will only be issued for cancellations received two weeks prior + to the event start date, including bulk ticket request refunds, and + will appear as a credit on the card’s statement 7 – 10 business days + after cancellation. Due to the ongoing pandemic, individual refund + requests due to COVID-19 positive tests will be honored up until the + start date of the event, and must be accompanied by a photo of a + positive COVID-19 test. +

            +

            + Please note: Refunds can only be issued on the card the original + payment was made. +

            +

            Substitutions

            +

            + If you are unable to attend, you may substitute another attendee in + lieu of cancellation. To substitute an attendee,{" "} + + sign back into your registration + + , click the “Register/Modify”, and select “Transfer Registration” on + your confirmation page. +

            + + ), + }, + { + id: "registration-types", + title: "Other Registration Types", + contents: ( + <> +

            Scholarships

            +

            + For information about scholarship opportunities, please{" "} + click here. +

            + +

            Speakers

            +

            + You should have received a registration link in your acceptance email. + If you did not, please contact{" "} + cfp@linuxfoundation.org{" "} + for more details. +

            + +

            Sponsors

            +

            + A registration link was shared in an email to your company’s + sponsorship contact. Please reach out to your company’s sponsorship + contact if you need to register as a Sponsor. For further questions, + please email{" "} + + sponsors@linuxfoundation.org + + . +

            + +

            Media

            +

            + If you are a member of the media interested in attending this event + and have not received a complimentary access code to attend, please + contact{" "} + + events@linuxfoundation.org + {" "} + and a member of our PR team will be in touch. +

            + +

            Group Discounts

            +

            + If you have a group of 5 or more people, you can receive a 10% + discount on all passes. All pass types must be the same, and all + registrations must be processed under one group registration and must + be paid with the same credit card. To create a group, select “Add + Another Person” to your registration. When 5 or more people are added + the 10% discount will be automatically applied. +

            + + ), + }, + { + id: "scholarships", + title: "Scholarships", + contents: ( + <> +

            + The Linux Foundation’s Registration Scholarship program exists to + support individuals who may not otherwise have the opportunity to + attend Linux Foundation events in two categories: +

            + +

            Diversity Scholarships

            +

            + Applicants must be from a traditionally underrepresented and/or + marginalized group in the technology and/or open source communities + who are unable to attend without some financial assistance. Including, + but not limited to: persons identifying as LGBTQIA+, women, persons of + color, and/or persons with disabilities. +

            + +

            Need-based Scholarships

            +

            + Individuals who apply should be active members of the open source + community who are unable to attend for financial reasons and are + unable to get funding from their companies. +

            + +

            + Registration Scholarship recipients will receive a complimentary + registration pass. Registration Scholarships are awarded based on a + combination of need and impact. Selection will be made by an assembled + group of reviewers who will assess each applicant’s request. +

            +

            + Receipt of a scholarship does not, on its own, guarantee entry to the + event. Recipients need to adhere to The Linux Foundation{" "} + Health and Safety rules and + regulations or the scholarship is null and void. +

            +

            + Applicants can be approved for up to 2 (two) Registration Scholarships + per calendar year. +

            +
              +
            • Application Deadline — Friday, July 21, 2023 11:59 PM PST
            • +
            • Notifications — Week of August 7, 2023
            • +
            + + Apply for a Scholarship + + + ), + }, + { + id: "visas", + title: "Visa Letter Request", + contents: ( +

            + If you require a visa letter to attend GraphQLConf, please read the + instructions and then fill and submit the{" "} + + form to request a visa + + . +

            + ), + }, +] + +export default () => { + return ( + + +
            +
            +

            GraphQLConf FAQ

            + + {faq.map(q => ( + + {q.contents} + + ))} +
            +
            + +
            + ) +} + +export function Head() { + return +} diff --git a/src/pages/conf/index.tsx b/src/pages/conf/index.tsx new file mode 100644 index 0000000000..91f629307e --- /dev/null +++ b/src/pages/conf/index.tsx @@ -0,0 +1,107 @@ +import React from "react" +import FooterConf from "../../components/Conf/Footer" +import HeaderConf from "../../components/Conf/Header" +import LayoutConf from "../../components/Conf/Layout" +import ButtonConf from "../../components/Conf/Button" +import SpeakersConf from "../../components/Conf/Speakers" +import PricingConf from "../../components/Conf/Pricing" +import AboutConf from "../../components/Conf/About" +import VenueConf from "../../components/Conf/Venue" +import SFConf from "../../components/Conf/SF" +import ScheduleGlanceConf from "../../components/Conf/Schedule" +import SeoConf, { defaults as seoDefaults } from "../../components/Conf/Seo" +import { CalendarIcon, GlobeIcon } from "@radix-ui/react-icons" + +export default () => { + const today = new Date() + const expiredDate = new Date("2023-06-10") + const isExpired = expiredDate > today + + return ( + + +
            +
            +
            +
            + +
            +
            +
            +
            + + September 19-21, 2023 +
            +
            + + San Francisco Bay Area, CA +
            +
            +
            + Join as a Sponsor + Join as a Partner + {isExpired && ( + Submit to Speak + )} +
            +
            +
            +
            +
            + + + + + + + +
            + ) +} + +export function Head() { + return ( + <> + + + + + ) +} diff --git a/src/pages/conf/partner.tsx b/src/pages/conf/partner.tsx new file mode 100644 index 0000000000..28658ca842 --- /dev/null +++ b/src/pages/conf/partner.tsx @@ -0,0 +1,149 @@ +import React, { ReactNode } from "react" +import FooterConf from "../../components/Conf/Footer" +import HeaderConf from "../../components/Conf/Header" +import LayoutConf from "../../components/Conf/Layout" +import ButtonConf from "../../components/Conf/Button" +import SectionConf from "../../components/Conf/Section" +import SeoConf from "../../components/Conf/Seo" + +const cfp: Array<{ id: string; title: string; contents: ReactNode }> = [ + { + id: "media", + title: "Benefits for Media Partners", + contents: ( + <> +

            As a media partner, you will receive the following benefits:

            +
              +
            • Logo on our GraphQLConf 2023 event websites
            • +
            • 20% registration discount code for your readers/members
            • +
            • Complimentary media passes upon request
            • +
            • Recognition in GraphQL Foundation Newsletter
            • +
            • Promotion of partnership on social channels
            • +
            • Access and booking assistance with the event’s sponsors
            • +
            • + Your company name and contact information to the event’s Diamond + Sponsors +
            • +
            + + ), + }, + { + id: "community", + title: "Benefits for Community Partners", + contents: ( + <> +

            As a community partner, you will receive the following benefits:

            +
              +
            • Logo on our GraphQLConf 2023 event website
            • +
            • Promotion of partnership on social channels
            • +
            • 20% registration discount code for your community
            • +
            • Collateral distribution on shared table in sponsor showcase
            • +
            • (1) Complimentary conference attendee pass
            • +
            + + ), + }, + { + id: "obligation", + title: "Obligations for Media and Community Partners", + contents: ( + <> +

            + In exchange for these benefits, media and community partners are + expected to fulfill the following obligations: +

            +
              +
            • + Promote the conference through your own media channels or community + network +
            • +
            • + Include the conference logo and website URL in any promotional + materials related to the conference +
            • +
            • + Follow conference media and social media guidelines, including not + publishing or sharing any defamatory or inappropriate content + related to the conference or its attendees +
            • +
            • + Attend the conference and actively engage with attendees and other + partners +
            • +
            • + Provide feedback and suggestions for improvement of future + conferences +
            • +
            + + ), + }, + { + id: "apply", + title: "How to Apply", + contents: ( + <> +

            + To apply to become a media or community partner, please fill out the + application form. Applications will be reviewed on a rolling basis, + and all applicants will be notified of their status within two weeks + of submitting their application. +

            +

            + Thank you for your interest in partnering with us for GraphQLConf + 2023. We look forward to working with you to make our inaugural + conference a success! +

            + + ), + }, +] + +export default () => { + return ( + + +
            +
            +

            Partner with GraphQLConf

            +
            +

            + We are pleased to offer a Media and Community Partner Program for + our upcoming GraphQLConf 2023. Our program is designed to provide + benefits to media and community partners, while also ensuring that + our conference is promoted in a positive and appropriate way. +

            +
            + + Become a Media Partner + + + Become a Community Partner + +
            +
            + + {cfp.map(q => ( + + {q.contents} + + ))} +
            +
            + +
            + ) +} + +export function Head() { + return ( + + ) +} diff --git a/src/pages/conf/speak.tsx b/src/pages/conf/speak.tsx new file mode 100644 index 0000000000..8b6b0c1da4 --- /dev/null +++ b/src/pages/conf/speak.tsx @@ -0,0 +1,348 @@ +import React, { ReactNode, Fragment } from "react" +import FooterConf from "../../components/Conf/Footer" +import HeaderConf from "../../components/Conf/Header" +import LayoutConf from "../../components/Conf/Layout" +import ButtonConf from "../../components/Conf/Button" +import SectionConf from "../../components/Conf/Section" +import SeoConf from "../../components/Conf/Seo" + +const cfp: Array<{ id: string; title: string; contents: ReactNode }> = [ + { + id: "dates", + title: "Dates to Remember", + contents: ( +
            + ), + }, + { + id: "topics", + title: "Suggested Topics", + contents: ( +
            + ), + }, + { + id: "types", + title: "Submission Types", + contents: ( +
            + ), + }, + { + id: "important", + title: "Important Notes", + contents: ( + <> +

            + All speakers are required to adhere to our{" "} + Code of Conduct. We also highly + recommend that speakers take our online{" "} + + Inclusive Speaker Orientation Course + + . +

            +

            + Panel submissions must include the names of all participants in the + initial submission to be considered. In an effort to promote speaker + diversity, The Linux Foundation does not accept submissions with + all-male panels, and speakers must not all be from the same company. +

            +

            + Complimentary Passes For Speakers – One complimentary pass for the + event will be provided for the accepted speaker(s) per submission. +

            +

            + Avoid sales or marketing pitches and discussing unlicensed or + potentially closed-source technologies when preparing your proposal; + these talks are almost always rejected due to the fact that they take + away from the integrity of our events, and are rarely well-received by + conference attendees. +

            +

            + The Linux Foundation will not select submissions that have already + been presented at a previous Linux Foundation event within the past + year. If your submission is similar to a previous talk, please explain + how this version differs. +

            +

            + You are allowed to be listed as a speaker on a maximum of two + proposals submitted to the CFP, regardless of the format. If you are + listed on more than two, we will contact you to remove yourself from + any additional proposals. +

            +

            + You may only be selected to speak on one panel and one non-panel + session per event. +

            +

            + All accepted speakers are required to submit their slides prior to the + event. +

            + + ), + }, + { + id: "prepare", + title: "Prepare to Submit", + contents: ( + <> +

            + While it is not our intention to provide you with strict instructions + on how to prepare your proposal, we hope you will take a moment to + review the following guidelines that we have put together to help you + prepare the best submission possible. To get started, here are three + things that you should consider before submitting your proposal: +

            +
              +
            • What are you hoping to get from your presentation?
            • +
            • + What do you expect the audience to gain from your presentation? +
            • +
            • How will your presentation help better the ecosystem?
            • +
            • + There are plenty of ways to give a presentation about projects and + technologies without focusing on company-specific efforts. Remember + the things to consider that we mentioned above when writing your + proposal and think of ways to make it interesting for attendees + while still letting you share your experiences, educate the + community about an issue, or generate interest in a project. +
            • +
            +

            Writing Your Proposal

            +

            + Your abstract title will be the main point of reference for attendees + to decide if they want to attend your talk, so choose it carefully. + The title should accurately reflect the content of your talk and + comply with The Linux Foundation’s{" "} + + Inclusive Language Initiative + + . Please use title case when inputting your title. +

            +

            + In the abstract, make the most of your opportunity to pitch your talk + to the program committee by emphasizing its problem, contribution, and + relevance. Don’t forget technical details, but keep the big picture in + mind. Your proposal’s description should be focused, detailed, and + comply with The Linux Foundation’s Inclusive Language Initiative. It + will appear on the website schedule if accepted, so ensure it’s + error-free, uses full sentences, and written in the third person. This + description can make or break an attendee’s decision to attend your + talk, so provide enough information to aid their choice, and be + concise. The competition for presentation slots is high, so a + well-crafted, engaging abstract will improve your chances of + acceptance. +

            +

            How to Give a Great Talk

            +

            + We want to make sure submitters receive resources to help put together + a great submission and if accepted, give the best presentation + possible. To help with this, we recommend viewing seasoned speaker + Dawn Foster’s in-depth talk:{" "} + + Getting Over Your Imposter Syndrome to Become a Conference Speaker – + Dawn Foster, VMware + +

            +

            + Have More Questions? First Time Submitting? Don’t Feel Intimidated +

            + Linux Foundation events are an excellent way to get to know the + community and share your ideas and the work that you are doing and we + strongly encourage first-time speakers to submit talks for our events. + In the instance that you aren’t sure about your abstract,{" "} + reach out to us and we will + be more than happy to work with you on your proposal. + + ), + }, + { + id: "sessionize", + title: "Using Sessionize", + contents: ( + <> +

            First time using Sessionize?

            +

            + Sessionize is a cloud-based event content management software designed + to be intuitive and user-friendly. If you need guidance, please review + how to submit your session for an event for step-by-step instructions + and helpful screenshots. +

            + +

            Submitting on behalf of somebody else?

            +

            + While speakers ordinarily submit their sessions themselves, it’s also + common for them to have someone else do it in their name. Submitters + can choose to submit as someone else and must fill out the necessary + speaker fields, but the session submission process is otherwise + identical to when the session is submitted by the speaker themselves. +

            + + ), + }, +] + +function DL({ items }: { items: [header: string, contents: ReactNode][] }) { + return ( +
            + {items.map(([header, contents]) => ( + +
            {header}
            +
            {contents}
            +
            + ))} +
            + ) +} + +export default () => { + const today = new Date() + const expiredDate = new Date("2023-06-10") + const isExpired = expiredDate > today + + return ( + + +
            +
            +

            Speak at GraphQLConf

            +
            +

            + Putting on an amazing conference depends on great content, which + is where you come in! Join other GraphQL leaders and community + members as a presenter by submitting to our Call for Proposals + (CFP) and sharing your experience across a wide range of topics. +

            +

            + The CFP is open through Friday, June 9. For any questions + regarding the CFP process, please email{" "} + + cfp@linuxfoundation.org + + . +

            + {isExpired ? ( + + Submit a Proposal + + ) : ( +
            The CFP has closed.
            + )} +

            + Please be aware that the Linux Foundation will now be utilizing + Sessionize for CFP submissions. Sessionize is a cloud-based event + content management software designed to be intuitive and + user-friendly. If you need guidance, please review{" "} + + how to submit your session for an event + {" "} + to see step-by-step instructions and helpful screenshots. +

            +
            + + {cfp.map(q => ( + + {q.contents} + + ))} +
            +
            + +
            + ) +} + +export function Head() { + return ( + + ) +} diff --git a/src/pages/conf/sponsor.tsx b/src/pages/conf/sponsor.tsx new file mode 100644 index 0000000000..224c2cf502 --- /dev/null +++ b/src/pages/conf/sponsor.tsx @@ -0,0 +1,105 @@ +import React from "react" +import FooterConf from "../../components/Conf/Footer" +import HeaderConf from "../../components/Conf/Header" +import LayoutConf from "../../components/Conf/Layout" +import ButtonConf from "../../components/Conf/Button" +import SeoConf from "../../components/Conf/Seo" + +type Button = { + href: string + text: string +} + +const Buttons: Button[] = [ + { + href: "https://events.linuxfoundation.org/sponsor-graphqlconf-23", + text: "Explore Sponsorship Opportunity", + }, + { + href: "https://powerforms.docusign.net/ba1e05a3-244d-4c94-9b3a-fd769966e479?env=na3&acct=f30e10ec-fea1-4dd8-a262-384a61edabb5&accountId=f30e10ec-fea1-4dd8-a262-384a61edabb5", + text: "Ready To Sign", + }, + { + href: "mailto:graphqlconf@graphql.org?subject=Sponsorships", + text: "Contact Us", + }, +] + +export default () => { + return ( + + +
            +
            +
            +
            + Sponsor GraphQLConf 2023 +
            +
            + {Buttons.map(button => ( + + {button.text} + + ))} +
            +
            +
            +
            +

            + Contact us at{" "} + + graphqlconf@graphql.org + {" "} + to reserve your sponsorship, ask questions or talk about + different options. +

            +
            +

            + GraphQLConf is the official GraphQL conference hosted by the + GraphQL Foundation. It is a premier event by the community for + the community to promote education, adoption, and advancement of + GraphQL. +

            +
            +

            + Help make this event one to remember by{" "} + + becoming a sponsor + + . +

            +
            +

            + GraphQLConf will attract members of the GraphQL community from + around the world. Developers, users, architects, and technology + leaders from multiple industries will gather in San Francisco to + meet, collaborate and build. GraphQLConf 2023 is the flagship + event in the GraphQL Foundation’s official event series. +

            +
            +

            + Investing in GraphQLConf provides the opportunity to build + awareness and loyalty with leaders and decision makers in + organizations across the GraphQL and open source community. +

            +
            +
            +
            +
            + +
            + ) +} + +export function Head() { + return ( + + ) +} diff --git a/src/pages/faq.tsx b/src/pages/faq.tsx new file mode 100644 index 0000000000..6a703ffc74 --- /dev/null +++ b/src/pages/faq.tsx @@ -0,0 +1,72 @@ +import React from "react" +import Layout from "../components/Layout" +import FAQSection from "../components/FAQSection" +import type { PageProps } from "gatsby" +import { graphql } from "gatsby" +import { useFAQAccordion } from "../utils/useFAQAccordion" +import Seo from "../components/Seo" + +export default ({ + pageContext, + data, +}: PageProps) => { + useFAQAccordion() + + const sections = data.allMarkdownRemark.edges + .map(e => e.node) + .sort((a, b) => { + const aPosition = a?.frontmatter?.position ?? 0 + const bPosition = b?.frontmatter?.position ?? 0 + if (aPosition < bPosition) { + return -1 + } + return 1 + }) + + return ( + +
            +
            +
            +

            Frequently Asked Questions (FAQ)

            +
            + {sections.map( + ({ frontmatter: { title } = {}, rawMarkdownBody }, i) => ( + + ) + )} +
            +
            +
            +
            +
            + ) +} + +export function Head() { + return +} + +export const query = graphql` + query GetAllFAQSections { + allMarkdownRemark( + filter: { frontmatter: { permalink: { regex: "/faq/" } } } + ) { + edges { + node { + frontmatter { + title + position + } + id + rawMarkdownBody + } + } + } + } +` diff --git a/src/pages/foundation/members.tsx b/src/pages/foundation/members.tsx new file mode 100644 index 0000000000..c8acd5fe8d --- /dev/null +++ b/src/pages/foundation/members.tsx @@ -0,0 +1,53 @@ +import React from "react" +import type { PageProps } from "gatsby" +import Layout from "../../components/Layout" +import Seo from "../../components/Seo" + +export default ({ pageContext }: PageProps<{}, { sourcePath: string }>) => { + return ( + +
            +
            +

            GraphQL Foundation members

            +

            + The GraphQL Foundation is the primary way + in which funding is raised and distributed to support essential + GraphQL community programs. The members listed on this page are + directly invested in the success and long-term sustainability of the + GraphQL community. +

            +

            + To learn more about the GraphQL Foundation{" "} + and becoming a member, please see our{" "} + FAQ, reach out to{" "} + membership@graphql.org, + or{" "} + + complete a membership application + + . +

            +
            + + +
            +
            + ) +} + +export function Head() { + return +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2934a90421..d6b096d711 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,8 +1,7 @@ import React from "react" +import type { PageProps } from "gatsby" import Layout from "../components/Layout" -import Search from "../components/Search" - import Hero from "../Containers/Sections/Hero" import SingleRequest from "../Containers/Sections/SingleRequest" import TypeSystem from "../Containers/Sections/TypeSystem" @@ -11,14 +10,30 @@ import BringYourOwnData from "../Containers/Sections/BringYourOwnCode" import WithoutVersions from "../Containers/Sections/WithoutVersion" import PowerFulTools from "../Containers/Sections/PowerFulTools" import WhosUsing from "../Containers/Sections/WhosUsing" +import Seo from "../components/Seo" -export default ({ pageContext }) => { +export default ({ pageContext }: PageProps<{}, { sourcePath: string }>) => { return ( - -
            - -
            + +
            + + + + +

            A query language for your API

            @@ -39,4 +54,8 @@ export default ({ pageContext }) => { ) - } +} + +export function Head() { + return +} diff --git a/src/pages/users.tsx b/src/pages/users.tsx index 4c776f512c..530d6171e4 100644 --- a/src/pages/users.tsx +++ b/src/pages/users.tsx @@ -1,11 +1,13 @@ import React from "react" +import type { PageProps } from "gatsby" import Layout from "../components/Layout" +import Seo from "../components/Seo" -export default ({ pageContext }) => { +export default ({ pageContext }: PageProps<{}, { sourcePath: string }>) => { return ( - +

            -
            +

            Who’s using GraphQL?

            GraphQL is used by teams of all sizes in many different environments @@ -30,16 +32,20 @@ export default ({ pageContext }) => { id="landscape" scrolling="no" style={{ width: "1px", minWidth: "100%" }} - src="https://landscape.graphql.org/category=graph-ql-adopter&format=card-mode&grouping=category&embed=yes" + src="https://landscape.graphql.org/card-mode?category=graph-ql-adopter&grouping=category&embed=yes&style=borderless" onLoad={() => { - const scriptElem = document.createElement('script'); - scriptElem.type = 'text/javascript'; - scriptElem.src = "https://landscape.cncf.io/iframeResizer.js"; - scriptElem.onload = () => (window as any)["iFrameResize"](); - document.body.appendChild(scriptElem); + const scriptElem = document.createElement("script") + scriptElem.type = "text/javascript" + scriptElem.src = "https://landscape.cncf.io/iframeResizer.js" + scriptElem.onload = () => (window as any)["iFrameResize"]() + document.body.appendChild(scriptElem) }} >

            ) } + +export function Head() { + return +} diff --git a/src/templates/doc.tsx b/src/templates/doc.tsx index c22a9de1d6..3c91e23243 100644 --- a/src/templates/doc.tsx +++ b/src/templates/doc.tsx @@ -1,57 +1,81 @@ import React from "react" +import type { HeadProps, PageProps } from "gatsby" import { graphql } from "gatsby" import Layout from "../components/Layout" import DocsLayout from "../components/DocsLayout" -import BlogLayout from '../components/BlogLayout'; -import CodeLayout from "../components/CodeLayout"; +import FoundationLayout from "../components/FoundationLayout" +import BlogLayout from "../components/BlogLayout" +import CodeLayout from "../components/CodeLayout" +import FAQLayout from "../components/FAQLayout" +import ConfLayout from "../components/ConfLayout" +import Seo from "../components/Seo" -interface Props { - data: any - pageContext: any +interface PageContext extends Queries.DocTemplateQueryVariables { + sideBarData: Array<{ + name: string + links: Array + }> + sourcePath: string } -const layoutMap: any = { +const layoutMap: Record> = { docs: DocsLayout, + foundation: FoundationLayout, blog: BlogLayout, code: CodeLayout, + faq: FAQLayout, + conf: ConfLayout, } -const Blog = ({ data, pageContext }: Props) => { - const { - doc: { - frontmatter: { title, date, permalink, byline, guestBio, layout }, - rawMarkdownBody, - }, - nextDoc, - } = data - const InnerLayout = layoutMap[layout]; +const Blog = ({ + data, + pageContext, +}: PageProps) => { + const { doc, nextDoc } = data + const { frontmatter, rawMarkdownBody } = doc || {} + const { title, date, heroText, permalink, byline, guestBio, layout, tags } = + frontmatter || {} + + const InnerLayout = layoutMap[layout!] return ( - + ) } +export function Head({ data }: HeadProps) { + const { frontmatter } = data.doc || {} + const { title } = frontmatter || {} + + return +} + export const query = graphql` - query LearnQuery($permalink: String!, $nextPermalink: String) { + query DocTemplate($permalink: String!, $nextPermalink: String) { doc: markdownRemark(frontmatter: { permalink: { eq: $permalink } }) { frontmatter { title + heroText date permalink byline guestBio sublinks layout + tags } id rawMarkdownBody diff --git a/src/templates/{BlogPost.tags}.tsx b/src/templates/{BlogPost.tags}.tsx new file mode 100644 index 0000000000..49da681263 --- /dev/null +++ b/src/templates/{BlogPost.tags}.tsx @@ -0,0 +1,43 @@ +import * as React from "react" +import type { PageProps } from "gatsby" +import { graphql } from "gatsby" +import Layout from "../components/Layout" +import BlogPostPreview from "../components/BlogPostPreview" +import BlogSidebar from "../components/BlogSidebar" +import Seo from "../components/Seo" + +export const query = graphql` + query TagPage($tag: String!) { + allBlogPost(filter: { tags: { in: [$tag] } }) { + nodes { + id + ...BlogPostPreview_post + } + } + } +` + +type Props = PageProps + +const TagPage: React.FC = ({ data }) => { + return ( + +
            +
            +
            + {data.allBlogPost.nodes.map(post => ( + + ))} +
            + +
            +
            +
            + ) +} + +export function Head({ pageContext }: { pageContext: { tag: string } }) { + return +} + +export default TagPage diff --git a/src/utils/useFAQAccordion.ts b/src/utils/useFAQAccordion.ts new file mode 100644 index 0000000000..c42ed87145 --- /dev/null +++ b/src/utils/useFAQAccordion.ts @@ -0,0 +1,81 @@ +import React, { useEffect, useState } from "react" + +const nextUntil = (elem: any, selector: string) => { + const siblings = [] + let nextElement = elem.nextElementSibling + + while (nextElement) { + if (nextElement.matches(selector)) break + + siblings.push(nextElement) + + nextElement = nextElement.nextElementSibling + } + + return siblings +} + +export const useFAQAccordion = () => { + const [buttonCreated, setButtonCreated] = useState(false) + const toggleChildrenClass = (element: React.ReactNode) => { + Array.from(nextUntil(element, "button")).map(p => + p.classList.toggle("show") + ) + } + + useEffect(() => { + const hash = location.hash ? location.hash.split("#")[1] : "" + + if (hash && buttonCreated) { + const anchor = document && document.getElementById(hash) + const heading: any = anchor && anchor.parentNode + + if (heading) { + heading.parentNode.classList.toggle("open") + heading.classList.toggle("open") + toggleChildrenClass(heading.parentNode) + } + } + }, [buttonCreated]) + + useEffect(() => { + const allH3 = document.querySelectorAll("h3") + + Array.from(allH3).forEach(h3 => { + const button = document.createElement("button") + button.classList.add("faq-button-question") + h3.parentNode?.insertBefore(button, h3) + button.appendChild(h3) + setButtonCreated(true) + }) + }, []) + + useEffect(() => { + const toggleClasses = (e: any) => { + if (e.target.localName !== "button" && e.target.localName !== "h3") return + + const element = + e.target.localName === "button" ? e.target : e.target.parentNode + + window.history.replaceState( + {}, + "", + "#" + e.target.getElementsByTagName("a")[0].id + ) + window.history.scrollRestoration = "manual" + e.target.classList.toggle("open") + + if (e.target.localName === "button") { + e.target.getElementsByTagName("h3")[0].classList.toggle("open") + } else { + e.target.parentNode.classList.toggle("open") + } + + toggleChildrenClass(element) + } + + document.addEventListener("click", toggleClasses) + + return () => document.removeEventListener("click", toggleClasses) + }, [typeof window !== "undefined" ? location.hash : null]) +} diff --git a/static/favicon.ico b/static/favicon.ico index 89bd152f32..7d8fbdce54 100644 Binary files a/static/favicon.ico and b/static/favicon.ico differ diff --git a/static/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf b/static/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf new file mode 100644 index 0000000000..5977e7cac7 Binary files /dev/null and b/static/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf differ diff --git a/static/files/LF_Membership-Preview.pdf b/static/files/LF_Membership-Preview.pdf new file mode 100644 index 0000000000..f8526705c2 Binary files /dev/null and b/static/files/LF_Membership-Preview.pdf differ diff --git a/static/files/foundation-participation-agreement-revised-jan-2022.pdf b/static/files/foundation-participation-agreement-revised-jan-2022.pdf new file mode 100644 index 0000000000..b714dd119e Binary files /dev/null and b/static/files/foundation-participation-agreement-revised-jan-2022.pdf differ diff --git a/static/img/bg-graphql-conf.png b/static/img/bg-graphql-conf.png new file mode 100644 index 0000000000..c6bd1ea14c Binary files /dev/null and b/static/img/bg-graphql-conf.png differ diff --git a/static/img/brand/do-example.svg b/static/img/brand/do-example.svg new file mode 100644 index 0000000000..d69a6bbcdd --- /dev/null +++ b/static/img/brand/do-example.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/brand/do.svg b/static/img/brand/do.svg new file mode 100644 index 0000000000..f396271e38 --- /dev/null +++ b/static/img/brand/do.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/brand/dont-example.svg b/static/img/brand/dont-example.svg new file mode 100644 index 0000000000..fac0aff6f9 --- /dev/null +++ b/static/img/brand/dont-example.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/brand/dont.svg b/static/img/brand/dont.svg new file mode 100644 index 0000000000..47cfde83f8 --- /dev/null +++ b/static/img/brand/dont.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/brand/graphql-brand-assets.zip b/static/img/brand/graphql-brand-assets.zip new file mode 100644 index 0000000000..bc4a53d8ee Binary files /dev/null and b/static/img/brand/graphql-brand-assets.zip differ diff --git a/static/img/brand/logo-dont/dont-add.svg b/static/img/brand/logo-dont/dont-add.svg new file mode 100644 index 0000000000..156fc8cd7d --- /dev/null +++ b/static/img/brand/logo-dont/dont-add.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-change-typeface.svg b/static/img/brand/logo-dont/dont-change-typeface.svg new file mode 100644 index 0000000000..ce29c568d8 --- /dev/null +++ b/static/img/brand/logo-dont/dont-change-typeface.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-color-wordmark.svg b/static/img/brand/logo-dont/dont-color-wordmark.svg new file mode 100644 index 0000000000..72a9832b1a --- /dev/null +++ b/static/img/brand/logo-dont/dont-color-wordmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logo-dont/dont-color.svg b/static/img/brand/logo-dont/dont-color.svg new file mode 100644 index 0000000000..def2a7b813 --- /dev/null +++ b/static/img/brand/logo-dont/dont-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logo-dont/dont-complex-background.jpg b/static/img/brand/logo-dont/dont-complex-background.jpg new file mode 100644 index 0000000000..57db344c50 Binary files /dev/null and b/static/img/brand/logo-dont/dont-complex-background.jpg differ diff --git a/static/img/brand/logo-dont/dont-decorate.svg b/static/img/brand/logo-dont/dont-decorate.svg new file mode 100644 index 0000000000..68e8793623 --- /dev/null +++ b/static/img/brand/logo-dont/dont-decorate.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-effect.svg b/static/img/brand/logo-dont/dont-effect.svg new file mode 100644 index 0000000000..4d87b456a5 --- /dev/null +++ b/static/img/brand/logo-dont/dont-effect.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/brand/logo-dont/dont-gradient.svg b/static/img/brand/logo-dont/dont-gradient.svg new file mode 100644 index 0000000000..1f7ba7cf23 --- /dev/null +++ b/static/img/brand/logo-dont/dont-gradient.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-remove.svg b/static/img/brand/logo-dont/dont-remove.svg new file mode 100644 index 0000000000..9cec9791cd --- /dev/null +++ b/static/img/brand/logo-dont/dont-remove.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-resize-1.svg b/static/img/brand/logo-dont/dont-resize-1.svg new file mode 100644 index 0000000000..2e23ec4837 --- /dev/null +++ b/static/img/brand/logo-dont/dont-resize-1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-resize-2.svg b/static/img/brand/logo-dont/dont-resize-2.svg new file mode 100644 index 0000000000..7a734c6c43 --- /dev/null +++ b/static/img/brand/logo-dont/dont-resize-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-resize-wordmark.svg b/static/img/brand/logo-dont/dont-resize-wordmark.svg new file mode 100644 index 0000000000..b3e2914e75 --- /dev/null +++ b/static/img/brand/logo-dont/dont-resize-wordmark.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-rotate.svg b/static/img/brand/logo-dont/dont-rotate.svg new file mode 100644 index 0000000000..a60cf1e7eb --- /dev/null +++ b/static/img/brand/logo-dont/dont-rotate.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/brand/logo-dont/dont-stretch.svg b/static/img/brand/logo-dont/dont-stretch.svg new file mode 100644 index 0000000000..08c969b0dd --- /dev/null +++ b/static/img/brand/logo-dont/dont-stretch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/brand/logos/logo-black.svg b/static/img/brand/logos/logo-black.svg new file mode 100644 index 0000000000..c66fbf3b8d --- /dev/null +++ b/static/img/brand/logos/logo-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo-foundation-stacked.svg b/static/img/brand/logos/logo-foundation-stacked.svg new file mode 100644 index 0000000000..739c279ddb --- /dev/null +++ b/static/img/brand/logos/logo-foundation-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo-foundation-wordmark.svg b/static/img/brand/logos/logo-foundation-wordmark.svg new file mode 100644 index 0000000000..c4aa91781c --- /dev/null +++ b/static/img/brand/logos/logo-foundation-wordmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo-space.svg b/static/img/brand/logos/logo-space.svg new file mode 100644 index 0000000000..329e59e53a --- /dev/null +++ b/static/img/brand/logos/logo-space.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/brand/logos/logo-stacked.svg b/static/img/brand/logos/logo-stacked.svg new file mode 100644 index 0000000000..1dcab45bbd --- /dev/null +++ b/static/img/brand/logos/logo-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo-white.svg b/static/img/brand/logos/logo-white.svg new file mode 100644 index 0000000000..dde596a42f --- /dev/null +++ b/static/img/brand/logos/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo-wordmark-space.svg b/static/img/brand/logos/logo-wordmark-space.svg new file mode 100644 index 0000000000..32249c7782 --- /dev/null +++ b/static/img/brand/logos/logo-wordmark-space.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/brand/logos/logo-wordmark.svg b/static/img/brand/logos/logo-wordmark.svg new file mode 100644 index 0000000000..ba95925aec --- /dev/null +++ b/static/img/brand/logos/logo-wordmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/brand/logos/logo.svg b/static/img/brand/logos/logo.svg new file mode 100644 index 0000000000..cbf9d25cbe --- /dev/null +++ b/static/img/brand/logos/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/conf/Partners/EscapeTechnologies.svg b/static/img/conf/Partners/EscapeTechnologies.svg new file mode 100644 index 0000000000..f812e64631 --- /dev/null +++ b/static/img/conf/Partners/EscapeTechnologies.svg @@ -0,0 +1,11389 @@ + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzsvWuTHbeVJfqdEfwPZz50hD3RPE4ggUTCMzER51V9fcMPheXu8UTHhIKWyjKnKVJBUe7x/fV3 +rY1H4nWqiiItstVVECnWOZlIJLCxsffar3/4L599/uzw1es/3T6b99Pu6ZN/+IfTm9vnb1+/+eVO +Pt796uXL7797+4Yf/ez3P98pt5941eFX6xfxyn+5ffPdi9evfrlT634K397w/p8d3rx6/v1Xu1/f +7s63f739y/O3P9/97Of8+g8v3r68xQWXz0+Hzy7Pfv27f/rdM70+m9wzPWm1f/7i53kg6Pj8/C0u +dr/Q6y/49c7/0s67w2/kkuev/vr8u+9e/H+4QC3zOvPD4+vvX3314tXXx9f/95e7afdsNtbtrJ/V +Tsb2/7z4/e139TX7aZrs6o1arLfKLXLPsteLWrVZ9DrzdlzlvFlXN60mdnV+/eX339y+evvZm9df +3n733en1y9dvvvvl7vS35692v3n+Nb55vvtfty9fvv733fHl8y//DfccfmW/uHnx8hYz9M3ztzs1 +y4QdfqX0F8fvX7z86rfff/On2zecS/l4/kI6/efv0Bs65r/lc/fFr77BR5/fvn2Lt8AzZTy//6dj +ORS+PdvP/vX3t1+/kEXEdP7vn6ee37z+9pvnb/4Nd2u8/34yu2d6wd+z1+E35ScTL/7D7TffvsRC +yIQZ76a9xfdWr/h//Wu6AS8pF2vr3N7MHj+YTyzdM22N2q8rJl1Ny6r0bp4xD1Z5v05mWR278osN +l2DG9apip9uE3/71xe2//3L329evbuOsHt68/TwQgjHTFP6OX/3++5e3b/751Yu3eNVFPvNhXn/z ++qvbl7hj6+Lm5XOZTmlq+zte8Yfnb76+fQsCev3y+7dC9Gt+Cpbu18//dksKUPEhv/v29tUfXv+L +DBUUjpefMRMgOKUtlthNO69n/EOeg08wF+nJavs79s/O2FV6iOOSfwYq+N2bF1+/ePVLsyyyZtpE +EvmnNy++2ijE6d0a/kpdxxbHijd/+/b2VRo8CPL0m4K+pv1vPucDL6++Or3+hovwnWw2UNYrEN3L +11/Hb7df5Dt08f238Q3kgy+wZp+9efGKHT998tvw3frFZy+/x5f/9Ob199/+6tWfXz998rPAf/7l +9kvwGCzsV7vf/en/4BcwEaH93R/ePP8SfeD3fA1Yx7c/v6fDz14+f/X8zU6+wL3hw1+/+Cu+eY5R +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 +zywEzEpPbrjMKmOx8BXfHh4czK5qoqmLjyW8MvO0jDdRhqwM4Tx590Ca1KoE1No237Aecx6/qrD1 ++tVrdkGbPocMnqyacjo82n57SLgxLL+CQ9UYQjsEhQxLmHCTpFZDX2lTLH/UsJcTnZ4z2O4Dvv4S +b+asTodnNtU2dN49lQ+gCTqQHqXT9aVIWwW8oO12hijDe4UDQ/KfAIvFy7h+H8sLOkgt4PD1tUi7 +fmiKdhBbHZrn9A73+7WCcrdO1MDw182iO+tsqzQGqdLronu/aPuN2DBfThs7rvfe95AnCrwi/gNx +PB66O+t2e/x83Z/xyutGf/II006EVxBMTHiNwVbtv8dt68L3DNYxLIloZndLK5jrsESjyV+X+Ye+ +4zU9e1rlSy9/+qNvv/0v5o3//C9/8utff/OrX/74z//+x3/1zd9985Nff/NTPPPqid9oWD09a3v5 +0z83h/zmpP/+pz//9be/+vFf/uqb3/z8m3/88V99+49/P088qWrPSVWbPJDY/PY//dwihP/wzc9/ +9p/ve9rc/H3st3/345//8sf/46++/eXHB//FN//Pr7/86P/h57/48dff/t3Pv/n7H/8v39xxyocP +/PW3/+XxwNcJaxQsm5qd/O4H/t9//tNf/+cPb+rP/uHX3/5Pv/r2H+eBNDssOHl2Yo7+67/7yeef +//JnP/6b3/4n/+H+ybOH5n/95P+2m7f39E8//otvP799U8fTa/Bm//KbX322WO7ND55ehUX665+z +7n78n/7p7755uk7/vf23P/vz8uN//8ufzjPMf/jRNz/7+S/nP/33L3/yl9/+4u9+8tNv/+FX//bf +/Hdv/ovmMDBmVOAYmnhJtJPphzXSnuLtbx1BOUXZeDv8iERS26vHl3/m/+v/+Mf5X1/13+5Y1P74 +T/7f/2f7v/9f+9d/fEnHy398+T//r+Plp/9Gv/6rR1Xw7T2tV7w1TD+4sZe/2B4WnvAvthf9wsP2 +F/3lb2GS5hf/0U8+/38sQG0MS06CbVpe6lv9oePlf/WQHjiGRe6MN1BGQNbogFL4hI43tUFtftBt +PM33oQ+eOMZyc7gJM3JXFnqRSqiQf5RZ2H8Bp/2o7/PP+hVtTUvnOuRE1wz6mQAlNmICVAVqMlGq +l7+4/4rPGwzygJC9/1pVbC1Qy1iIat4NTbTOrJj9AZpa/QEvh/jUmIjNelwqF+C+SHXFbtIuyCUT +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 ++A8/eNL09td/+913v3n72d/8/Bdfff/9N7//9suf/+HLX37zu2+++v6br79cn9infB3491/9+tsv +P//ud//+5Xf//OXfff3r7//L77/74+8+XuX5H7iQ9vbXP//2+/eH53Df/f7LX/z+m3/99Tf/9uUv +v/u3P1zXsnYGf/3Lb776zYvw//vXv/nmy//jm1//j3/5gSu/Yr/73Zfr+v/333/37Y8Hf/HNP3// +H4/+z7/+Lffl19/84cv/65t/3+E/+h0//+43777jZbgbMMYf/ML/8Ouvv/+X/cn6p87C//vq/1vR +/mBffPerd5eWjj95Ar7KL775/a+++fb7dx94/nH/bv3rb35evvy7b7/eR/APjT98+V+/+/YX64n+ +fj3U/+k/7b//7Tf/Y93PdyN/+Rf/9XeOzRj729//8Q//ch/rZ//Pt99+9dtvvn7rf/WXx9vf/OVf +rOf83/hviPN//OR//Gf+6z1N/nj7P9f/+v/X3/7trb79/dt//3+Pt6/XUf7xl3/5F51qxhsp4Gdy +Mcal44k+Mcome+iLl0MAjOmuf/E40Is/XQf49pPL/G/rv2gArNUfh6pBqrZe6JWpAphEBhMBa/4C +w5QdAxy3jju3Vs2oUg1c+NYf2Lwpfk8TaW39DynifVJXaVCatuXTFVBCT4BvNLhmxd7vr6+x8Ql5 +4dyDUN8MpvzG12ffhj5qIKhe3RnQEKEpO9QdnbTA1xwNptwPoqLnMRG9X0MoX3k21L/fPlzaOsw/ +cySER9Zsv/LBgYfAGkcIdOa4djKmNYmv0bVWtPj0SeWAX4+UBNxROkBCx0cr/LEvfvDAX8SZKy1z +BFKAA6d0BRyS6gbG56BS1ihElhi1KsHQUDgWx+5RY2j9tPmNK1JtTxsz+AMMCVz7PK4306oDwkXa +FhdMnrq/jfsfsCLnjK8qRuCLuJwzBufagaZ9I1BPYmjlTZzzxAQrjkot9+0HvuK++9gvndxB05wa +vyNCN3EPYFR2R9G42r/y9B4gJFAV+ihuEuIBWNs5huxEUFtDmy6OeQYZy1H0lhOYYYyNHaXuGkMp +huhCxFBdeZVDmMOuoXTEc1BQwrkOiUw7gxk82h5cd86hY3CZJTTpY6jHIf/EV3/cm9fn/G08PHS2 ++ZK0Pq9Px515vmmAon/8W7wevB5X/ZMYR9VvH9de1v6pUl5/wscePTBHV3Kb4+np1NF4mFuhPhfX +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 + + + c9BNip29bq1O07FtXNujSm3TaGbtTrFcPp0vz3cqxFuWjVYxmb9Zbt4uN2/Gsyfd/iGdhzrUkmWt +NqlUaC8m9eYqIckyOqUd7HZco6EaDRIuk1ptRgIICkx1sbs3q9Y2xCfpaJEEIZZVIQZSGT542CId +rFpd1uv7rZYhRkFbQGeGxOJudVxpLNo9S4d2vrweTehSHNOy041OEjo559Q58RkSeXt7s729eaOh +e52iTrOorbsdu7c3ICb2cGdIYot+v9MxO+CW0w4pe22SR+v+gJal6A0OJ/MntGjD0TnpYN0O8a6E +GrZa1MpV6rOd6mynMqfZXZz/oVofk15KOgPx9k6Sd5Pj2fJVln+d+d9sNk9mk6zwr9L84+H0jA4Y +qc2DycF6fVXknxcnXzdaerE4m85PSV2E1jG+HE2fLFZviuPf25z0WE9qyUa9GIyPh2BKxxv1Ojv4 +/PLJt3/+5//9+dvveiM3WV7Mt9fzzTWZDNPF1XL/1WDyiA45MTq6F5PZxWr7crl5NZ5ezZfPSVau +Ni9fPPvTk5f/od7OGu0sGZ7O5peL5RNqO1s+tfbt6clXq+3TTpIN8dFT0gN19nl+/M1i+0KnH37/ +D//Zn35KB77ZMcTrpsunpLETRyV9mDhAq5PRv0lkdDuGPk1DIr4EUZIcJ8OzemNdx3ZP6U+tRvyc +eMUjYps+//VsebFXndI56XTzVrdo9UhQHg5Gj0bjR/3+cavliLqzl1RrY9JFW60t8aX57HIyPhuP +TmfTx612RjyqTVK1bfYqi1qddLB1rbakM1atLmhn+0lRb25Iuu3u9lstXaksd3ZIYs7aHRJGdGdJ +Sd4nwdEjsdU/oJM2GBzD/kqO6Jhha5KD0eiEdGbqk/Q36pPGT0eLlK4q6fPEl6pzaO/V6e7uhI4T +xHFlGjgVnZ/B4IjE02pzTaoaqfd0xqhb2tBe39VrS9LZqMM+XdWu3qVFSIpkdDSe0jm01dqEeD5s +jaTAXsxf5IffHl/8/Xr7ajw+XEwPnj/93fnj3/aH+Wh6Np6dLTaPtX15ePzlcv9ppbZari7nywvS +8Wz6yb7+bF99QXd2rT8ZTOi8qcno6PD0i0Z7Q9r4YHhyePz7i6d//+T191dv/jTTV5PF+aOrv1Xu +k0aXTvVBMjpV6Sdp8Zvs4OvZ8jkNab687PRds21bXWImx8q+Tf2vLp78yRRfNDqHPdK1BgcDTIRY +7qPV9nq5fg6Lsl/Qwk7nj0jt7w0KnX7y+Pn3+9nHa/O6OP2iO/BV3MED0uLIEiHJS3KEVPrx+II+ +RIJjrzIbDw+NfU3GLx0J2hFS7ZbrN+PJZatOt5s5T31DO97telLJRtNn9DcpxknvgNZhZ2+yV52T +2KKx0X82m6SbFZXqmkTtXpW2bNRq75MNTntNmupiduXSz6bTq3qT7OgNW2RHdDzqNTKmVL2xoiaN +JhlrZCPbRhPaPn20ViOVeNsgmVjfkObfY22B2ONo8og2newFOgmL5VP6mxQk+k/60HL1jMQHCXGS +gPXaqt1OK5XF7u6Q+BiUusqcOGGbNPa9ObhijcwxksXLCh2w2oI+1O14Okuk1PW7bjZ5VKnTiRrQ +adzdGTZbisQxKaUkdvdqM1q0Tk/t7XV/+cs6abADUrlbejQi/nmB67+66o8OmhDK2XJ2fnr2m619 +Sd0u1y9I9+6P/WhWrLenkxnJLA1fQfoJabw+/9V08YxM43avqDZtp3dAeqxSrxebq1prmYzoZJ4s +N0+ny4vp+qo3Oe2ODlX28dX1Pyj3tk3MYXaZTOjcvtiYj5f7H85WL8ncpt9vknLSd3QSWl0zWz5b +q0+nqzf9yVVCttLonDQZYrYT0ohGB62Opctbb5Iyc7jevE2GBen2xE9IWNN8SePq0UUbHg/Gp5vt +q8x/0eyaZmef1H7Si8jqJ46xW12QakE7OJ2ca/2yTddwd0C6N/XPRrepk/JTpU3XZNkRA6G/k8Hp +fPnRdPaSTO+kd1TFLSb7nbZsuLNLBlqv3tCd9hFpyNj0lqpUya7f0HEljkQHg9f8vNc/rDU06U50 +SMbjR6SZJ710Pj7udPYf7rTpNNK56nTydpvkVE4CutPO5mRcN1cPHjYrFTIkieOpPi4U6aV0zFaL +xbPF8jntDslQ0pmh5/cK3NC23tsb0bDpE5gCZFmf/hADbDXTdtvReaOBkYJNoh+iszqrVGbE3Eht +oxtBYvco//iLj/9ppzL65YM2ddXv5ivSltcn3d4Gg6mSTN/s7nUf/LJS2e0SW2u1FR1OUiNJw6Tt +qDfnZOmTUr2YX62WTxerx7StZD7PV0+T6VGtOe0N9Gjs54sT4lfafbrcPm909qerp+3EVxor2ms6 +YNp+YrKPp4uLWmtN5lJ34Eg+NruqO/RkwU2Xz/PjP+ynn8/WzzoDp+yHdMxorzs9O55dpcU3R5d/ +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 +5PRmKt32+yW/Rwn6dYqIpJL9anWZpiNuNyOJid5gvTWxXKhPp8v9QnP60Mkbr9z53vsefuwLL754 +7yOP3/bA++985AkzVgMpBXDn8/ASn5Wlsqo1ZKVI0VY0UUvnm+VapzU+P7989NT5a49+4Oknnnrq +29//wa9ff+Or3/7O5VvunF86Vq3NinIuiJiBoAoQxPFJULPwQq9XIohoIjWodzdShV6q0Dlz8eYP +fvKTj3/0I3e894H73//k7fc8eO2u+x547ANf/e73P/Lss3fde//py7cKSi4QkPw+nmUjulmPxSdV +pZJK90KhUjLZbrUXDx49NzM3e/rs9dffePXKbXc8/6Uv//HPf/m3d/7y53feff3NN5965hPl8uTI +KDE6ykDSRaPT+fya2yW5nBQalGQpy7BZBA2jqM6wUY6PZ7PtI0fOXr56x5lL126/76HHP/T0idM3 +TMydavYOyUrermV9j19krV5zenN159ypc9duuvGDT77/pRdf+PVrv3nrD79/9Te/ev311//zH//4 +/R//9av/8o2nP/aJ7WPXV9pbQTSCBkMxcOVqKh3NjoOFOLx74fobrly75fHHH//K17/xtW9/9zNf +euGZZz/5je9855Xf/u6Fl772/e++/I9//OPFb7z8wY997vTFW1PZfrE8Nz7YLNanTSufz1WXFuZv +uLT70AN3ffSjH/zM5z/17e9/+4233/7+K7/46ssv/+Dnv3z33b/8n//7f//yH9CSP37/Zz974PGn +ulObkXgbAJOmlLiVaVS76+sb8OwcPnLttts+9JGnn3vhcx///Kef/synn3vxhZ++8vPf/PbXf/r3 +P/z3//7vN37/9jMf++Tlm+4oFCcVocRRuWhkolBew3ALRxRLzwBwHzl87PY77nz4sccffupDDz35 +1Itf/9ZPfvnKz1595S9//8tf/+Ofv/3d73//hz+8+NVvHj52U64wJ4rlkDkuiMVIsm/Fmp32/MrK +wRMnd+9/732PPfWBjz77medfeumnr/7q179745XXX//tW2+++9d3/tf/+9+QrT/5xW++8MVv5Msz +bi8PnOjziR67QlKnmaRulAv58e2Dx+576MH7Hn3o459/9mev/erV13/7zR9+76Vvff2Nt9988w9v +/fK1V/787p//v//zv3//9lufef65Szfeksl1OA70NuHxUCiqSEKiWp6Zmdo4efz8XXc/8PBjj335 +ay/+/Ne/+t5Pf/SN733nD3/+09//8z/ffPvNN9587R//9Y9f/vbX733k0fGJ9WJ1RQ+1fT67+Nkx +RgpMVOJjUatSq82CJun1546eOnvf+x763HOfe+W1X7/1xz9+/bvf/tXrv/1f//3f7/7975974YuP +PP7obXfca1ktQajylDHozGytHLz+5Jlbb7547103P/novd/6+hf//d9+DxH9xpu/+dWvfvzFL33y +llsur6+v54qtSKKL4xEkqHJ0SGINSws3CpVjhw7ffefdDz703ocfeeiTH3/mJz/98Y9+8uOvfP2l +l1/+zrt//evPf/3q8y984Ytf/uLNt969vH6qPb6iablEtF4s93P5ZjpdWZhZ3V7fPLq9ds/VS//y +lS9+4xsvfvd733jjzd/++W9/f+W3r7/ym1+//fbv/uOff3v739/+1g++ef8j9yxvHIqlmoqWk9WU +JkdqpebC3OrZ3QunT50+dezo3bdfe/HFL7z22i9ef+t3P37llW9975u/fv0X//rHN99867XfvwXJ +8uqXXnzh2q131tvzFGlRhBUy64nUNEMnBNaKmdlmqXF4a+2J9z3w9a98+eUffO+5L3/h56/87J2/ +vPv3f/7jtTd+8c6f//Dqaz9//vlPPvf8Z47vXjIjVZBDAFaaUYnEW7F4fTC5MD+zcPrkqQ8+9din +P/OJzz//2S9++bmf//Kn//Ff//mv7/z5ld+88oMffv3dd/74+z++/eLXvvLE40+2u6soFgLj5nGx +fq+EIoYkZuvV+XJx/OjOkSc+8PinPv+pz37p+Z+9+ot3/vbuO3//209f/dnrb772zrv//m9/+sMr +v/rJ7373yi9f+eFTH3zs6i23ZrItSY77AxSElmEWrHAxEa2uLW09+MCDX/3a1372ys+//6Pvvv2v +b77z13fefPut3/zu9b/9/S/wnh/9+Fs//fnLv3z1x0899eTZS7esH71R0kqjo2TApwZ8AoGKPjfB +EGp/fO768xfe++ADX/jyF7/4Eszm53/6sx/887/++Yc//fFnkHa//ClM1Gee+8RNN92wtXEkEm1X +qpthJdmujjcqzXI2PzXdX1lbmpudOLQ1d+ftZx9++Ortt5298dLJSjkdMmSW5lCUxVHJ46I8LtLn +IWlMjmvJSrIyXutOjncPH9zcObS+vNA/f3bz/nvPP/Lgzbdcu+HW2289d/niYHYuEs0oaj4SB+1d +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 +w9XqwqBfLPVwTMs7XsNV+il6r0ZcmWY+d6/9868e/fpb177z3va3PrH1469e/bffvPvzb9347nvb +/+0r5//3X772q69d+sbD6udu5Q6nRIAqCiMER6PDT4/hwVCai86loPM9/uaa/fhC+f3n5n7yh3f+ ++a9e/99+/Ohvf/Dwb3/4wk+/cvTTjw7+7BNzn75ZvDKvTqWojEL45UR5k6OspFXqN9obk5m5PLuU +xS4PmM/c7/zxe7s/+Ojwzz6//7NvX/7dj1/4u588/vkfXv35Rzt/9/0r//KL53/7/Wvf/PjkJy8n +XzqstDIGGuckocCzCUPUOnmrlaCmksS5gXZ/S3tp33r7ch6Mxl//6Z1ffPvyT7929H/985f/73/7 +o2+9vf3tT51/fHtLIFgC5lOykhGpvAhPJvC1EnlxWnnlbOUbr21+71NnfvS58//xq0/+z//80d// +8NEPPzj1wcPVk4vFjM4KBEVhkqlmbTWbUJKewJUUdLkoHs1l7+0WXzyV+v4nNv/X79z/3Q/f/cLL +6x89nPzu2ys//uL5r7114sG52tmlcqdYsUBOSTmasIAX4ym9YGfrbqIok9MedXbaOT/rXF92PnWj ++YPPnv7lt+9/7zPnvvX2zudfWH/jUve1M7W7W5mtntbOibbMwnFW5ooJs6HQUsXRSzpT1cjlsvTg +ZPnrry7/xQcn/+rbV3/9vXu/+/MX//kX7/zkq5d/+oWDf/nJC//+81d++cWdbz0uvnQms1SRODQW +j2COXikke6bgOCzZtqiujiwnos/MCx8/yr91tfrlx8v/8dt3/+U3b/32B8/+91987N//9jM//sbN +r72x8f4Li2tTKUczecYBt9ModCxByMj0dicxSGFLaehMh3luO/3Gld5L51r3T+Q/e3vyl9+88eOv +3Pzma5tfeH7m7SuTl+dTy2XAqZhMiQyuAyUzPgxxKCujsSQdnXLJEx3nzGzhYCpzbbX44tnaW9em +3nlm4a1nFs5Nmud7+uGkvVxxU6Ks0bxECUDzK0JK4tKGnDclr57OVG21ovMb9cT5mdzRtPPWldY3 +Xlv8q2+c/eefvfSXXzj68qPZLz/ovbrnPFzRH+/kt6qyQ8Y4BFelrG31aDIBbCAF0wIc92ioZRBb +VeFcj3l+23r1TOajB5O/+4vn/5//+Mo//fJjv/7ug6+8evbycnWm5OmiDiM6jvBELM76+7rIos63 +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 +9UHko7gLf5bKKkn6ktRRtV524bHSMdxV0roOqkfAkrnslDiodxOUP4ZlWyGBXM/neJKKDAOs+hzc +X6EE8sn2/AWI81xOlOTpdPcrO9qXlTnP92BOHLPfam6RpHZ/Daf5vqzv+NXr7vCdYsyLFXVtjfa9 +2f7pR0EBK6F+vkbnS4ZmboJaBqwAkw6yysm+V7XUrUmhrEA94nSLF4fdwYvN3W8IKrn3eXZ2FLwM +p3RBlty/z4IFgLThZZi9PTBoZZD3rQuY1cH8Czs8yJe8//NfyTj7//sA/r8ad4HctnEXyG0bd4Hc +tnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEX +yG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0b +d4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4Hc +tnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnEXyG0bd4HctnH2f/wrGXPqX8n4 +I57vvbjsnr89/+wne8PPfsK3Rv4p3LN1/sXbqzef/WQOd52arTdvu48v3j5++eL8zScqye6zDMej +zK2r82eU9IcHU/AoavHm8cPHL+DO5cX5syuZ0rLHVrMfn/1kdfPyUfby7Tfvvni0cf4WnvbiP9/b +voIn/sv7pdWLF+fPry6pm7spuJ9yHF/+zKJan/3EovY+ZD9bV5/95F32i01ZN//tfcr+GsNvT+C+ +D5RtUTPq8NiiLuGJe1uf/UR3HcemgiBwqefZX3boGGHwhzum/+IO28v+P/0vT/l/3PGHp7z4FweS +/fL6vxyRfXNENxPbf/zsKvnPv9/E+8/TLMnZgQ8++4nZvXr/+OJqa9Cm9mDuDyn9ZqJvIst++b8d +nG8bbhjaAXVMOZYNYQbZazz6f/2k7J//+Yn//P+IcuF47fDm0D3q5jXgePmbg82yJKECN3YcSJbR +Tygm62uCkw7LVzmhxmWNW6oYkdJcl5f7NNsgyWz7fppNNH0kyl1eauJUUMFteBZBByQTZ42WCVsQ +ElltW+5YtbImXhw8V+iI6hTBnWKJKxYZFFGy7lNqR7VmsjkX1DEjt3EmLKOGafcVvUVQkayODXPD +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 +Fjav7s+fnN++vHrs9tmFcw8/+VylB/CbT+cmq93DrcmT3ZlTU6sXFnZu7M4cWT14Zufs7UCsw/kj +K4cvl3tHrcz8xOK5teP31GcuOMlutjrU43WaTypm107PpaobqcpqbWKvMXnUzQ27s4cKnXUz3ndS +k6JeiaWHidxMIjszvXy52Nhh5bRiVdLFOcUEZdVEOJyciaXnM+WDzYmTrckT8Uw3kenrTtvNzhQa +G7nqWq271Zs6vHf61tXtS4CWqlEvtQ/1po/PrJ7vTh2v944Umru6PZibO7uwcQ3JuKKah5RoDk9U +u7v5xubc+qWVzRsu3/bYxOwJgstCzrvZZUj7VGHVTq8lCnud6aujeoumk7xUEtVSvrroZCaz1WU3 +O50uzjf6u7rTBxZzM3NRq5ErLzT624XaqhVrinIO2LA/e8aKD3OVZWitarby1ZVqbytZWuTUlpOZ +bk/ulJormlkpdw7GUv1CdX5i/kS5vZnMzzQHW3c9+E9wq6jVnFk5t7x7U3/pfKW3ky0vq0YfBG2z +vXvk1L2l+grFGrbbaE8cmts4t7B1YXL16qXdW013MpZYkKMNX0AAeRDPr0+v3zRcupRvHM6393JI +VMzWW6vt/jpOmRHCAaUdjU/ZiNznM8UVhK5WtTvYzpUXwZ4b8dlU9ZBbWC22D6VLCyHCCEU0UF+8 +mDDstpuay1U3Kr3d5uTp2vAU+L54ciZdmk8W+pXOcrG5lqkuJfOT8zO7z3ziS63JHZJ1k9nJ+bVb +5tdunV27vLB1OV1d6fY2H334Q4/88xdApUyvnF0+fOvU2nXt2bNzm5fnD90QS89duube937gE8ny +0BdSNbOfzC1Xursz6xe2T93ZnT2+uHTig898uj7YhhzoDPeq3S1Iuc2jt1288bFjVz+ZKR6am9lb +WT8P6aHbLScFSTVXqB8aLF3cPHXf0Wve35s7t71z9cr6SdmouJnJRH7ejA/sxDBfXT508p6tsw8A +LyTS05B4olqEO2hWG+wnyZUJtpQtbkzMn+bEuKTlnGQfQgzSwkqCBB1OTB6954GnZ5dP8Wqpv3Cp +OXW23N6ZP3R9Y+aCldmwUouiXE5nljipQHOJdHaqUFtZ2bl08NjNk6vnFVAvSm0wOHrnfR9WjVKu +ND2YOzWYP28kJqFt+ep6vrYBojSdn0vmpiOkwQoJAGfoVLZycHnz2os3PQpgvrN99c7eNVGzmi1O +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 +neWoUSEplyAtgCBFzYOahRtGIjrHpXOF+e7kTqE2XagNz1938wc//vEnPvLhu9/70IPv/8Bd973v +tvc88NDj//jlb3/3w88++577Hzx3+Q7NrBCEjmOqLKcct5vJzllmq1Ccjscb+fxgYrB+5OTVSyvL +5y5ee+2Nt95y593Pf+GLv//jn/7tnT/98Z13X3/zzaee+VizOefxcl6vBEWXTi9Wq1uhoB4MCDSp +G3pZkssUnaBpR5LTipotlwcnTly8fOvd56+/7a4HHn7iQ09fde6G2ZWz/emjhllFe1mvwKNycrq/ +uHvo2NVnr77tphs/+IH3v/TiC7987Vdv/e63r/7qF6+//vp//e1vv/39v375X7729D9/bO/Uta3B +YZJO0WQ8A67cKhTT5SmwEMcvXLr2hltuu/2JJ5740le/9pVvfvtTX3jhmWc//rVvfeuVX//mhZe+ +8t1vv/y3v/3txa+9/MF//sy56+4olGfqzZWp+d16d9FNVquV9sba6g3XX3j4ofd85CMf/NRnP/HN +737zjbff/u4rP/vyyy9/76c/f/fdP/2f//t///Qf0JLff/cnP3noiacmF3ZT2QEApiiY2WSp157c +3t6B69jxE7fdeeeHPvz0cy985qOf/eTTn/rkcy++8ONXfvqrX//yD//+u//53//zxm/ffuafP375 +prtr9TlTayhCJZ2arTW3GDbJUmbSKQFwnzh+6q6773nk8SceeepDD3/gqRe/+o0f/fyVn7z6yp/+ ++qc//8d//vo3v/3t73734pe/fvzUTZXaSjTajLtTWrSeys8kM/3hYHVz88hVZy48+N4HHn/qHz/y +7Keef+mlH7/6i1/+5o1XXn/912+9+e6f3/lf/+//QLX+6Ge/+tznv1ZtLoUiKnAihkXDaIekI0p5 +J9asVaf2jpx64OH3PfDYwx/97LM/ee0Xr77+669//zsvfeOrb7z95pu/e+vnr73yx3f/+P/9n//9 +27ff+tTzz11/4+2lylBRQG9z4bBA06au5drNpaWFnTOnr3nPvQ898vjjX/zKiz/95S++8+MffO07 +3/rdH//w1//6rzfffvONN1/723//7ee//uV7H31sana73t504gMMQ5uf/T5ek9K6mkknW53OMmiS +6ZmVk2cvPvAPD3/muc+88tov3/r977/67W/+4vVf/6//+Z93//rXz7zw+UefeOzOu+9PJic0ra0K +sfnh0uHNI9eeOX/Hzdfd/56bP/DY/d/46uf//d9+Cxn9xpu/+sUvfvj5L3z89tsvb29vV+oTqdwk +y6Yo0lLEuC7HknaiV2udOnr83nvufd/D733k0Yc//tFnfvTjH/7gRz/80ldfevnlb7375z//9Jev +Pv/C5z7/xc/ffMe9B7fPDqY2bbuSS3frzZlKtV8sttaWDu1t757c27rv1uv/5Uuf/9rXXvz2d772 +xpu//uNf/vrKr19/5Ve/fPvt3/zHf/7l7X9/+xvf+/qDj953cOdoptA37YphFWwj1Wn011YOXbxw +6dzZc2dPnbz3rttefPFzr732s9ff+s0PX3nlG9/5+i9f/9m//v7NN9967bdvQbG8+oUXX7jtjnu6 +g1WBTwpcMu52c4VFScxpcjLjlvuN3vHDW0/+w0Nf/dIXX/7ed5774ud++spP3vnTu3/9z7+99sbP +3vnj71597afPP//x557/1OkL17upNsghACs71kplJzLZ7vzc2urS2rkzZz/41OOf/NTHPvv8pz// +xed++vMf/8d//9e/vvPHV371yve+/9V33/n9b3//9otf+dKTT3xgMHmIZuJg3MJBGY/oNBXTo+Vu +e7VZnzp57MST//jEJz77iU9/4fmfvPqzd/7y7jt//cuPX/3J62++9s67//5vf/jdK7/40W9+88rP +X/n+Ux98/Nbb7yiVJ3QjixMCpFbMrSUT9Vy6vbVx+H0Pve/LX/nKT1756Xd/8O23//XNd/78zptv +v/Wr37z+l7/+Ce7zgx9+48c/ffnnr/7wqac+cPH627dP3qjbDa+XJzCLwDSOjmIhTuKsmamVa6+5 +9N73PfS5L37+8y9BND/745987z//+z9/94ff/wTK7uc/hkB96rmP3XTTDYd3TqTSg1Z7N2HmB+2p +XqvfLFcXFmc2tzZWlmePHl65566Ljzxy6113Xrzx+jOtZjEeM2RRoWmZpfVwUAgHeSzMi4yRtfOt +fGuqMzk3NXn8yO6xo9sH12auubj74P3XPPq+m2+/7YY77rrj6svXzS+vpNIl06qmsqC9mySu0oQq +sFGJU0G4nDt16ciRk9VCcVgrndpdvfn6qx564JYnn7zn21//wi8Abl5/9c3f/uLZzzx93Q3nF1YW +E8m8G69JYF0Zk2UtM5o6c/KaS5du6w8W2u2J5empvfXF684fefYj//Cdl7/0+huvvf2vb3zne1/6 +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 +J8qHOcqMm4V+rbnRS81l2aU0dnnAfOFe60/fP/X9j4/+4sv7P/3W5d/+6NHf//jJz/74ys8+3vn7 +7z33rz9/8Tffu/pHn+69dzn+8lGpkTLQACcJOZ6NGqLWypqNKDUVJ84NtHub2sv75mcuZ2E0/tuf +3/75ty7/5OvH//e//MH/8+9/8slntr71ufNPbm0KBEuE+ISspEQqK4Z6UXytQF6cVl49W/rm6ye/ ++7nDH37p/H/+8r3/+V8//IcfPP7Bh6c/fLi6t5hP6axAUBQmhdW0paajSjwmcAUFXc6Lx3Ppu6fy +L51OfO+zJ//Xb9/77Q/e/cor6x8/7H3nMys/+ur5r7+9/eBc5exSsZUvmZBTUoYmTPBiPKXnrHTV +juZlcjpGnZ2OnJ+NXFuOfO56/ftfPPOLb9377hfOffKZnS8/Wn/zUuf1w8qdzdRmV2tmREtmQwFW +5vLRcE2hpVJEL+hMWSOXi9KDveI3Xlv+qw/3/uZbV3713bu//cuX/uXn7/z4Dy//5CsH//rjR//x +s1d/8dWdT57kXz5MLZUkDvUHvFhEL+Xi3bAQibBk06Q6OrIc9T0/L3z6OPv2lfIfPFn+z9+8+6+/ +fvs337///7P3Xj2ybNmZ2DvFvuecqvQuvPc+MiIyIr13laaysrw7Vcd7f/29fbtvs+10k90km2wO +x1DUEEPNkBIJjDCSXkaAKEDSCBIESE/SPEh61g+QVhT/ggAVBrVv4uDcOlmZsfZe61vft2PHWv/b +f//L//N//Q//7m+++k9+ffFnPz06344805F4D8wZtbZcWa5p3P2tYB2Rx1X05Rb/w/vVX3+6+Pmb +yQ8eNP/8m+W//dsv/+6vvvrbP7j8yx/v/ubT5ScH0UkXciqpsQpPWcBk0puoSAgaUQq54rbPPNjy +Xu61nm3XPj9r/4NXgz/+fPtPvj78468P3yydtwvr9bJ80vMjRTM5SWVl4Py6HKli1daajloZVmv9 +stGzpIth8Ha38X7H++NPJ3/zB0f/w9+8+nf/7c//6798/y9/tvcvf7T41WPvJ6fWLx427/U1jymJ +OGWo9bK74JgAZCCLcTKGVDh0YtP3+vKbBf/j++6vXtb++Y+W/8t/9eP/+//6q//93/7yf/zPf/RX +v3r1yUl/t1OxFAvDLQqX6BIixOe6mLYlTTxxt65ejOz3R/XPzps/ftb/Fz+/+9d/9PxPvt3/3uPB +/sBRBAIt5PMZBEWUWrgYD+9Wg4UpOjbLbYXum9PVF88O13Xmw671u2+3/uM//PR7z7c/v9v55mHv +6TpYtay6LYHAEVkvLleIeyxXAyEPCroejiumr5OUx3Ndx+iV1ZEv35347w87X15OPz3vv9hrHnSj +/UYEy1i3FJmlCYwtlYRCQRbYGkeaWB4l8kURxTxe2GnWHyw77w8q37+s/MWP1//FP33yV7978m/+ +4uN/8+fv//Uf3ftXvzz7qx8f/tkXk8+OnFDBQLRrohWXPmYqHO2VQBCh/MCPFtWgIZZWPv58bny8 +53596v2rX9/7P/7nP/t3/9M/+m/+06/+9T9++wdf7n/xsHc2D0Abm3rd82Y8Fwh8mcJlQ3TmzWFT +F3s2N/HlnsGPHWWv6a2r1lFN/Pig+u3j7Xf77aUnDi2truo2J/OEWMxLmRSf2AAGSFtKpJCshKI6 +QTYsqx8GozCcBF7bEBsK3zHkkadWeBy4YFXWpu25JgagSihg8oTWbCxY2kUKQLZZCuFM3uhXOmc7 +Fydb62lZP+9YX593Hg21T49ar9b1+z3jQd88bVnHTXdkySjQghRKoKYkdEkcZCACSjObKDDFeGJb +ujL1tK5G7NXEi67y2YH3my93/tE3Rz97uXi16tdFUSX4stkKG4db6w8iF1paVWINkYYJsRzVMkXN +Vc1puz2I3K6vdn0lNISyLju6KQoaxWgg1dNpEsdNTW/wYpAr8BiqqYLval6z0urW+jyKRrIwCb1B +FTCtbHCKzskgKPASD0oKLYm5LJvJsCQVVRun9fZpfITMaEq8I5Cyq4UsDmmad6TyzujwYH6yHKwj +y7cExVEqXixh2M1ENl/gcSoSpJGmDW1jILJOOpHLJvOg6x018I0wMMrtsj1tuKdb4fvT9uOl9/aw ++eF0ejmp7zbsVc0bemWiiG9uZkrF+Nn2dIba2CyC3uT4VqN+NOyedmtzgxcChR6Vxa5OdzTiybz+ +e58//uX3Xn187+Bs1K8bmsYyLMmKUkCSHkGW80XV9pbjxevR5GUr2jUE92z39PMP3xVIBdZLpo2K +Ue9U+sP6qFluGpxJ5DiyZGRBlm5g4FQo5heLTrFgkoSvyTUsRzAlyPVMNk3G219FHkMUCrcExhfZ +gCWUUhahSjxWkLCSLMd3rFyBjYz4YZbtUkkH2VvMCyzhiEy5bA9MfQKBw+OSyeuz1g== + + + gMojoVZpeH1P8URMEAidp8x8XGm8RBIez9ZyGf6j307d/igFepMlDE/3AzPiCYHDGItTK6oZP4tL +42WeKgtCIDu+XCum6VxcEGbenT4Lwh23vD1fPfGjIUWrHO/bzrjdu6i1j3mhzNCarVW2F4fZAplI +Itm8JOsTJ9i1yztyXFmrrinN1fqJ7o6yJZNi44cyaLaKoDZNuAJtF3NUYrNQzEksVVGVAc+3AKZw +ooyitio3gJbk8kquELc6opnQdoaeP7GtbhROlPjIR3yjjaI8+CdZ7Wv6wLAGrj9zvLGmRrrRIZkI +wR2ccFHMpZiQooJSSaNISxA802xpWs00+1G0HVSmrt0VKEUVNAcWVq1lMkipQJOEYxhzr3ZB8Y1c +nk8ksI1NBByDYlqGPY8fSMxx2SxH04HIVhhMYFDGluxuE3DJIUiDZnzpqlYeQcYFz+F30xAppKPr +vVb3QlIHJcRDEAMn7KCyCqu72TRfKsD0BpreMZ0pTlaKJQvDXFUZKkq/kFczaZHjOp3+A8db6eYW +yVTTGfAcyRBDU41Ao4lKz68fVntn/bgj7d5Vt3Gd5/yt+SM5rl7ulL1VVDtptC8rjfNMwdpIsptJ +GkGcXEa49VE6lSR1c1btPWj07jneGrx38w6KFrV8Vrl1q5RMUgxXt9ydsHbplNcltJwrmMlUfFtK +4gNw5kS8S5ZJbqLFHM9Qrq33DDnKptBilmBxjSVNBpa7pMWPLJUMjKoguH/rO5ly9YiVm7JavX/5 +Yb77mBIiQeswQl01u4Y9LHvz+e6LEqkjuC7IDTea02IDo0Kcrmr2YjJ78f6rP+pM7iYyfBEDnDgK +Gg9Ve80KbQy3CyWZZjxF64O/EVRAMnXN2naCfUBEwxyparuIWChexqkyL3Utb1mp7+r2mGYjP1h2 ++ndVrWPZI0HpqM68MXoS9e4HjWMnWCpae7n/sWqMMcLS7Y6gtC1/KRkjSmgzYtsNVrPVy7uPvqb5 +KJXlioghyN34gB9f5+T4ER7PGS6Wj013y3AnojGl+B4rjlVjXUQAdioIFp8JzBd5HNd1vauZK47v +lQoKUlQMfSBfPdGgWdN6726jf59XJrwyxukIJcqi0uGEBo7bitxCMKdQMGmuKqg9WuhminYiyXN8 +iKByJhMXkiWoiqyOBKkryT2arfNiR1YHdnmZy2sYHhB0g+G7BF3jpR7N1ZMpJpVkLGsqq51CSSqh +Oqd0WaXPSj2zvFCN+FgmSfsU18wWrQJWJriW37ww/H2vflaOTjcTXCYjiVJH1bso7hIkxH6EoCGA +M83UUNRNp3lWaHrB2vN3cMKPe4+WbEEdK8bCsUcEpoNb3r5dyqSYYk5AShpJhaX4+V8XRcGjvFyK +BljjGM/1t+1g1/B2tPIOI3Q2N2hR3xK1YVRbv377k9HiAqUdSqiSXOhFO151P64Y5mxJ8WGb3aC2 +XSKNTEkuoK6gjEeLd6P1p+3pM05tY6Qt6yPL37eCQ0YaElwT5t/1V1HjyA62AV5KqK3bi7D5uBzd +lY05wzcIKoQLUM0tgi6jmCnrA/CKRu+yO3rU6t8L60e1+sGDZ99X7BGvD9qzF7sX35w8/sHBvW86 +W0/H229Mc9Kobp8//hKhXIqPwLWsylG9/2i8ej9cvqv3LykulLSObk8ldcSKbfBPxV2o1mRv7/WD +Fz/RrFEiw5SIcqVx1p2+afRe8/IMo+ooWSHY6OosnI7hejruwmzGtX/pCsu3MDIsB+ugdkALPsH6 +sIiisdC9uMOyG+2DjyGItb165noLsDeTlwASOXnAK1PNWYtanyBtDFUde2i5M4BiDAcADAxnu1I/ +q7bu1ppnubyuGVu6tVL0OXwXQlZyiJvIyChRCarHnNiO69szFVEbaO5SdVaiNiqiFji25e+QkDXi +SmhjWuy40ZFszqxgTzTnCFHRne2wcZotgFua4Fos11P1uePvgEU4UcGJwCpvQyIGD0xnBBSzdGta +bZ0LyiSu2ZLh4aqKSBmQbeN29vbt/J0EWyKqurVw/LWkDvNZqVhQVbUnQQiTAbzi4pl0ZNoLWZ93 +B486w0snWDBiJOm9cnVNCqGsd1VrC5xQtaZRY3+0eGT5WwXMUJ0JzTdJpsbJ7RJdx7kRwXb//gx/ +CXdxOtTL2250OF59OHvyi8XRlzhbI0m/Fa7Ozt4jdJDH/BIW0lzfLO81Rk8b02d6eRo3Vmvti8ZA +d6eKOVLMsebOo/ZZpbHPq81ytHjy4ed3X31/vH5WH9y3Kofgk2DI1vTe3cdfw4yp5qA7edqfv5/u +f9pbvND9HYJvB7W9o8vvdkb3iyUnqh2dPfju7ukni/2P7734iR3uA4iB/yjGUFRbBFNmhMbB+ff3 +Tn9nvP466j2mmQbFVnS7q7qTREbKF3TALss5dIKTSuOi0bsgWVt3hmH7olw9A3wY77zfOf2y0b/n +BHtAtAx3jlGeavY1Z+FU1pAXNHevgMUPu3n+8uD4Ay/Uigissu94280RzMCe4u6y0qhQcnr9e5Vw +nSnoON1AsArFttzwrNJ+qLn7CFGtN/ZevvkBElf2E1JZFYBLBggdPLz76leyOv7k05/95V//l93B +WTKj5BFXdZajw092H/7O9OBzJzwook6jewqhkc3piSRLcnWMBlydtIfP/ep5PmeiiKVqPYipTJYG +7EpklGzJksCFovP29PWtO1gqRRKkg+AegvrgkwRVLSI+SladymG1cwkJOldQkZifVGmuGbbuUUyd +AYUldQBMjPJ6NH+3e/k90WgH1e3m8G5/en+0eFjrHFneFCZTc0aj1QtYtbhtrj7yopPe9E1v9qYc +HoKZecwk+RBgCjIsr/QVGyJrn5Ontr8333033XlCxmeP13aw0t2lqE0Mf9etHRju+Pj07cOXP3Aq +CyquKt8EJjzZeb2+/61bP/HD+eHh0z/6038xWd9HGF/QtzqTF1u7n62Ov+hO79FckMmLnNRkxSbB ++azaQpiKYm+tjr88ffiTwfylYs8gdU6230jGmBKaenl3sHzjN850ZwV4FdT3khmiiHGVxrzaWbnh +EmMatDA0nXWtfXb/yTcPn38/meHzRU1WJovV50cPfuo1n/DqVJTaP/oH/6w3vECwMqDi4cVXP/rl +f/SjP/iLsxc/Mit7wBZsZ/bHv/mrcmU7lVVwqmH5x43hq8Xh15dPfz6cvxakxmrvWbt3mCkICOkJ ++jzsPDu+/7Plwcc7hx+0uFBepz28Hy8iVtadhRnsKfY2r2x1R893jz8mqAioMkC07q40dxYfauW7 +wNnuPf7yix/+sWz0KbYeVE+CGgjgtaBNOLEHbERSx+Pt15X6aSIlF4qOU9mptI4bg3v9+VPApXwG +VPr+zuF7IMCJFAe53gkvNHdleGtWHtH8IJmWa9Hyq69+z3VHH30nnU7RNFfzovP5wZfPPvnD3uRR +oWh+/vWvg2inhDklYPf6EgfiREZgi1+7mGx/8ez9n1y++JntjJ4//ny2ug+Myy5Pg+recPZgunq+ +tfuqNjxXjW5veDZYPGOEpmwNFGfMSANIrIq9cKODzuQxr7SBrSnmVmv4crTz5ez4y+7qtWwNw2Bx +/+nvRJ09cAM33GsMHhxffv3uk9999/Ufr44+VKKd7dXjxc5Tuzxr9O5u7b1rDB71p49OLr96+uFn +9f56vnxwePKFU9kV1AGrdmmhCkxMVKfl6EQ2JpYzXB290NwxRlfcyh4kBd3bVdzVbP/To4c/BJ8s +h/th9/L44Vd3X/20s3wLOqlIBCjh2f5Wd3a/SEimP+S1kWwum4MHtd6l4S3BilSGY/m64WxpTl92 +Z4p7aEenQeM8ah6TTNzNqtM/sbyxrDeCxnpy8KY+PG/0z9vDB63eXZIJAB6D+klQh1Ve+c0jINJW +eOYEB93Jk3K0LqL6aPZgvv/eruyVwz3VnhjlGS/3qvVD8GpJ7fBi8/jux1/++B8//vgXu5dfDZdv +ypWVJNWeP//utz/58yJWJtmoUtub73+Y7X+Y7r2Z7L0HkvbFl793fPyGonxerI133+xffrs+/e5k +59Pl8beSPk9nNUHqYETZrx34jRO3dig7W0B+6v379e7jRFLCibDaOhPkYTJNpjJMIsUTZB3mGYSA +Yy+KRe3ORgnoq6yN+NjrupzYLyAuQNnDZz+tNQ6Ar5JMCJ4AyZHl25CmgXH5taP26D7EsqI0Tw+e +tvq7FFO27HEXIPfht5dPfzhZvfRqK83sbK8fzw/eFYDUcb7pz9rDJ7P1F52tF63x42r3zLDGncGZ +7c3ccN0YPa6OHhiVHUEbdHr3D+/9wGvsUnxltHje6l/sHLx89f6Hxw++Cuq7pjk4Oni1Pnyp6N1W +9/jNJ7948eGX509+ePTw28Hyue02P7z7/ut3PyYYAGGAr6FRXoAP1PuP7fCEl4fN5v4Xv/PrsLUm +2bDRvXCrJ17zcrjz7vlnf3j84PthdPj05Y/2Lj6T7EGle26Gp6K1cqvn9f6z0fZ71Z7pRuuLb34f +MAEhfZKtsfKQU8eSORHkTrd/f7z1+P7D93unbzllIptzAGSECgkucirL3fMvYtgUKvXOYXt6v9Y7 +G8yfhu1zgmlRXKM1flDtnmNUIJuD2uBeZ+tVZ/Z2tv/d7tYr218rWu+TL3/x4v2PVWsE5IoTuyAQ +hvPn1fa5F24DgxXlxtHZxycXH1ebaydcgLdXqrvd4cmLNz++fPAV6AXLma2P3h8/+n7QOVfK24q7 +DfT17fsfdbu7GKrrZn8wf9Sd3AtruxBukrWdR4N0VteNIUF5y8N3jz75/f0nP2psPWtNHzdGj2Rz +nc6awGN3dl/JSg/HQbyXEdRjgfNY25IyxrAgkaBRzFG1CYBSIiUWS56szmVtUa6cB/Vz0GW5ogoB +RdJVUA2C2IoLyCM6zAAjtszyMmwcx9FhxMxTVZuaMarU9yAYdXsC9FjRBrXOhRGsEpB86TK41nj5 +arx8Z/jbjNTMo6YsNWeLZ6Y9lOQ6AN3e5dcw/2ePfnj66Kdbh5+o5SnJBou915wIlCaIQ94cm85W +s33U6p0pZp/l/CCYRLVxd7hf7Ry40VoCGmY2m+29cmUGSURSeld9KzycK5vB0q+fhjGMHFWa2wTt +WHbvwxd/8PDdL/zWWdg6jR+a9qaG0Ts9fXt89xNAWuD5vdmHau9xe/4BMIQDLlrS69Hy5dsfdMen +G0mS5lsAL83J06B5CqFdre1uTe7+6W/+4ue//LMiHqBUxMuTcvV89+Lbx5/+w+X5t4o+fv78y3/y +z/62P74LGk0014IBFHp3sv707NUvYdVwsuyDLIp2OAn8rU4LTYZvKtq4doVOD559WWvtHRy+9oKV +bIxAa2BUlEftEuhNfTyYPLPcLas8sysrQestd17tn34WNc9YIW6c1OmdRrUdHlYtPK4Ddx0/DjuX +mj2HJQaZUGufMFzjSvRpAIa6d1jtP4+6D3i5y3DRZHnv+OEnqjNMwhsQk1cGrdFT+A== + + + lai2b9uTuD4Ya9ca+xRdy2a1REqCnJjL2xRdb7YfDsZvVX3S6Z20OncJ3CsVDaD66ZwOnqaZi0r9 +LkU3dHem2iOIOwgBXm4DRZf0ieZuk3wbpSo0H2pmr4SZitGr98/D5okfHQ1n7wbbHwRrXCKsSuvA +qa6LuM0ILZBpEqi54QPb3Ya3SVqfpNzh1sPh8km1e2IFK8kekWKVllrV9mlzcA/AARS6Zo11c1Jv +7rf7x35tJ4/oohQF1QUtOIoSms7Y8VedMUjLA1BGnNxBcU+3l4o1LWKKZrei7tF4+9ne+dfLo88K +qIbGR/G7i73nrNIG6RQXBldGw/mjyerhePlYktui2DZs0F+VVJaDKAgbh3cffg84hhfuEnFxQi6d +E0BHc2I1m+cAN9zKvNPdm0xOHj/5vNHaQYnA9g7c4MT21qq9BZIB8M2r7K4P3pxcfEowFYyq+o37 +ncUnYfeRHew44T4rxwX/zy+/6I9OQSyjZMiK3e7oyemD39nefzucQuo8HI1Pf/Obf75av8KYVqVz +2Zw+a4wfdefPYMIpJtrfefzX/9nfffPTPwWyCtpTc3bC5r3u9EW9d+EG27YzefTwq5fvf8ErXQBS +SuxI+tTxdxVzwQgDkq5H0XLn8AUntwi2jTOtAlLOF0xZ7XRH5/vnHyjWl6SWboz8cHd99PHe4RtO +7OQKRjojWub48OhjQWxvbrLptCyrk+n2u2b3gWLMCaoV+Ms//KM/f/nqm40NDHRBEa8z/LBaO6vX +Tx1nIQlVMJ9XWgTtE6Rrlae81JXMOSX2gWbX2g/C+kWlcQxzDszTq+6ocUH+ES20KL4laKNa+3x9 +9qVd2U7neLge2RjzarfWOwUrINtSbBiXehtcykYPYKoc7ka9i9781fL464dvfj7eeUlykay3Y3cq +ajjugbLgpT7FtYF2gosSbNkPRqCzCqgFLBQmpIg58BVO5UBzdzilKyqNe48+1+0BLzUgTkEUgIeL +UrPdPT9++A0Wt9ir6eZYlDpA3qrtfb++xsjyVWHnIUF7haIiaZ0gnG3N75aDrVRaTKSlfMmm+Kbr +rximLPCO5Q6ag6Pd4zerk/e13hFK2MBSTGdxVR1CgLgAqrw6+OTk4U90/6iIhumMWqlsB7VdhHTA +RUHLF0ouw/ft4NCtnUDU4IQz33kOFJGId4MjnAwAgdvdi+H0Rav3BMFDjKxWmudAuq52FRyMcFAk +rgL3+MUPZuunLB9Y7qwzejDZfhE0jnCmClwR+Nhs/rjTPcFJV3fGbvUIInHn5Ita70ERq+Rymu/N +5jtPGL7K8R3VmpnerqBMKtWDyeJFWNunKO/k6NVyfiHwAYoZJFtxKqvVycd751/SbBPFysWSxdI1 +hqrm8zqKOvkivCfueGW7o1p1xrFhNqsYzrLWeYygbj4rZlIMVtIlLhCUIS8PKK4FEB3Udkxn3uw/ +UuJGNtvj7fcgxyx/p4iaKGqKUgNWxPaXsrlluOsBcIa9j6frN4o9SWd5SelSXJXgqrI7pYQ6AnlW +alebh63RfV5u6FZ/OH/qNw7d6m65vo56B5DIwLUUcwgqplAyRXkIElWPn9QYE0wdCA94+3B8F8Qp +xoSs3EOJCAihboFQnYNpnNyFK1wefkCIsiQ3J4sn7eFDoBmWu4zqR63hJSh0RevoxgCAnSArqrWl +e4CETZz2aN6nOd/ztsr+NF/kcgU2kxeSKR4ja6C5yrUjXqhLrLu3vNg7eI5RDoQer/UZuSvrQ93c +kpR+oajqRjtq7Dj+NIgWRnmO0a1cAVR50O3fc8PtXFEkSIuiwkLR5oUeTBcVN17URLH+4MnXJB1s +bhLFooFTFdOZrfY/W+5/YZQPN5JitmDAcmTz8lUJGp2kfElsWuY0rB3pzkzV2tXGihcDkrEhTCiu +qVuzINqzvRXISQy3mu2D9vASVlN1FoKxlS06BFlV1Qm8jSA8RWpNtp8Mt59TbBO4EM02QNYhRf3s ++NVidiaJgWY0w9qyMzpdHLwChpYrmIkkl81pAtuS+NbGHTqTUQSlD1g6nD+zywsUtdNpkaTCqHFs +l5d3NrBkIq4QCBdsWRPb222PXpVrD9zqqaA0CMoSlaog1SEkJXPMyYAe7RJZA3thShFEjRoH1dZF +WLsL9AYyIMZERdwHxcqwAU46kN36sxej7Te2v6caW25lR9J7stYcjO6OF08J1scZD2d9UIv3X/zw +1We/2j79HNQ6glkgQgHTcCbKFXQEjwC7ysHugyffW6wfl8Plcv8VK7SLqAMOAzxEVEe2D5f9dLr/ +Bc01JTHqDw69YIsVgLyBV5cFZWDaK9tdckI9mWY5SNbaSAOV584hy+cQnaD8TvccUkkigSQSxWxe +AAGOUTWCb2FMFZaVpb3QnxtmL5OXFHNmlHdBLPj1E5yu5PIauNZodFJtLlFchaRZQF2KbfsRkLp9 +WNZMXklnhbK3xQuNZErIFy2CaUvaotF+MBg/b3TuQvqg6cpwfOH6W3El8JJeRGxG7Gr2ipUHjNgu +FMTl4lG3d4LiDggujAjABzJZWZI7frDMxgUYCSquBdRgwGSuihB+phA3+gmru2F1D0Htxd6bh+9/ +tza4hInihA54aTrNsrRTLg/B50slk+FasrYVVI9ktRs/E1eSRTHcPXhar88E3pX1FkJUBGUUVA9l +ZcTQ9VRcP0SoN/YGkwtA43xeTaeFzU2GJCKvsu/6uxjmFvISxLIgNkncy2VlCG3NGggxM/EhrbN8 +E5g/hns47msQ6e5Sd2NGyspTGtgXbgMEkXQFaBvD1ARpYHogYB8Y5RVCmrkiRzKgWXqK2ow7x+kT +UIhe9RDE4GTnnaCN8yVNUpoAZd3xvePLz84efhF1jji1O5g/XJ68d+sHqbzI8e2wdqEaU6u8Uu2x +ZvX9YDHbeYURXi4vO8FOffC8M3mm2UteGRFMAyM9Lu7T1CAInSTLqjELqifLvQ/j+QuQBhDa6azI +iz0QX7zcGS6eTtafQHrS7TmAG05G+YKOES6CW8WSXq7sD5av+8vno9W7qPcYZ9sgbSBXTpcv3Moa +IEK25oI61u3tq54mEPjlem3x+v0P4e/pvEbzHU7qgw7yo5NK/b5qzoGukFTVtJaiPBKVkVXehTek +ssLGRty0qze8EJQmBsGClQkiUNQ+wzdK4CR5FcOM9f6TRme3hBmGs9XoP/Crh4a1zQnDdFbZ2MCT +KVqRW4kEwXJh2DiYrN68+/6f79/7nhNsA24QiDyaXJQDIPOQv+JiI2AdgloiMBmqks5wcUGeuN64 +nc4oG5tUJifDv7JsRVUijtFUtSKrDUh8+UJc0/v27dKtW/lsRmTpuB9WsSTm8izNVvIFq1T0QIyo +OijHSirJcYzHseVshkxtkqkkzwmQQ+PnVUkyUPW56x8J6hQhghLqCnKf5hsoGQBkKfpWWDurdu4b +/jKPmJsJBkVdkga9XGPEuJKPX9tXzBHDB6UijRQoijJUvQO6shffo/l6a/8DxjQgb9KMYRk1ywIk +B27WBdE9Wb569P73hnuveGsC5EE3h4rWxAlLVIeDrecv3//62ds/mux8GRcKQ3S3vKXZM5qrg+/J ++kzUFq3+U69yRFAVpCSZJoDVVFLb8MKpKJVR8iVTMqe96fNyuC+q7d7kwq/toqQPyEbQNcNZNfpP +Ks27MFGG0Ty599V09w0p1DltKLsrTptIxni2ftkZ3GX5yPOmva2Hijk33X3FWvFKX7dG7e7JfPsp +Fz/ZV48aJ7X2WaW+D7NBsg1gwqk0zzJ1QxsUCjzoNRxQka67wR4v9HVjJinDfNEOwj1VG+ZyCob7 +jNA1/f2wfdnsP2SFOmApXNhk+VQG5hlXPuxmCy5YVEJMigoEPkwlCVVpVsKZafeDaBfEb9yQIsvq +SsM2h0AmEcQG6JbVES+0cQIkQBnyfirFGOZIEHuplAjBBfSDFeK+YwQV5nJcJo26bj+srvNF87fj +Wn9coQCIJyIlpwielpWSKbLZ3t3efQHp/vYdEt4AXIuhGzQZFvMKfPidO6VCXi0VbYqNEgn86rap +DsmX5vusNASKzkhD1V6B7ssWFVHpe8F6PH0x3fnMqu7nMSdTMGm2XUTi4q4MF3QH9+4++9l45zPZ +nGRzFEPILGNxPPhkVXcmTrSneZAZZ4Lc4XiXZTSaUjkhUM2Bag6jxiEIRjPaVfyV5i5Nd8pwgJkW +iOWwuXdy9/Pjy2/s6KyElFmmIoh1jLCBA3uVA9PZ0e110LhQjGUJBf2rmnrczyuTJVFMF+UBgngM +23DCXSeIaz6LUrUzOGKFKmhhiBpFn3YnzxujZ6qzDeuuaY1W/1R3RgXUUJ3lZP324PIbgK/B/IWk +9kDj9DqgYY8KiCMqW+3hs5PLrx48/+H67PNK8xhDzYo/OTn/uNU5KqF63JauoBFUZFhTkW+xlJ/L +0uXyeDx7IqoDhge4gHlzeHFAMW2wAtYUSEu3e9GfPFatOeg7im1k4w4UkiA0+6MLkoGZbIO/KfY2 +ycVADSQ/rpafogXOlwSf571688Bw5yQTAQYKImRAYzNBFUs2irkZAE8yUJQhy3fJq2qEhjHEiTCT +BX+Gj7LBi4poGb6U4Wu8GAXhjl/Zgyn9zq1iNqfDzCdTYiarFzGvhINqaINQctwZZNVSwSSIECm5 +8GcmbufBxVkA9wxrC0XLmZJ1awNLpxlwEl5sAIzXWheXT352+ez3t4+/tYP9XEFlhZoGlEntSsZM +tLZVZ7fWfT5efh73G8I00+4YzsCr7jPqVgoJkhndNefD/v2wtocRBsOVWbGpWfMZZJnmcQERM3kS +8qZmAyGPWxSBSytKszu+GK1fy+6C5JsI7oOZwJdwynbdgRss3OoxzDnkxHwBVk3i+BhwGL5dQgyW +b3jRmV+7J2nbDFdNZ8iNzQKKm5Iyzubiarcc34QljvuVuBPbHlJMBcVscHJYHVZsS/pWUL/b7D9R +zHUMNUUJ0P7k7HNwM0FtEmy1iIcIEbJCK2oAvY9A+TbiCn7PR7OL7vBcNkdFwgMu4Thbzca+YfbT +GRaoGjA3gmqwYgcI0sYmnUyxtjXsDU4RVI9rGiCmpA7nO2+Xu58B4UlnJJaNzu99DgAIcEpzLU7o +O/6uW9nV4x0qL5PhLXcaNvYw2ttIsfmSQzAtYICSPKJJl6ddU2uuD16Y5XkecTeSAsk2S3iIkrVy +eBSToiRpG/1W8+yqPI585w6+uUmieECzdRQvJ5MsRJYbbNe7l43eQ17qUHQNnA1SPMAsyw9yeYvn +WmZwUOleaM48PkdUMrMZCRxJZNvVcJVOk/Ft69s4TdZpOkJA9GEmMDFIHIX4cIsDmC9ItVrraDC9 +N5jdHy0ee7U1ZH+aqSl//yS+VG/176+OvjtZfdwaPwfGAjwhLughhzjtqubMqQCxPzDLF93+y9Hk +heNtFxAZ3iDrIB4DMpZmDZzydWt8cPrdy2e/BzklE/dqlEW5SoNWVQdGsEfynXr3cQ== + + + f/aGkwYg1YfDoyCcl3C3ALK35IA257hup/+kNXzB8F1gAgiqiVIPgCvWaCUTwVwgvWH9aPvocxQP +SSIQpQ5QfZpvgYYC/sDyLVGKCwBmciwEF8iN0ezx0f1vGHGQSAuZnMjyFcfdAh+4Oo8xAac9uvej +vbPv8nFvHRaYZKt71OoeAvX1KntGed+r3wO2SXMdCNhEkor7p+jDdJpLJhkE83C6oTt7YePx3x80 +ymQYBFFkuQaMBcN1nCwDgReFvigOIQTikyqYK4Icxss44UF8gYdkCzbLBn44k9QmkCtJaFQqe9Xm +OaR4DA9QRKdwU1VqmhYRhCqJVfDwqLZbbZ5K2oRgmhubbDbD0ITJUGUAEAx3KbqqG1PDXuBEAPnx +9m1UFGrtzgHLeokkDTkuW3A4beF3XnZmz017XMxzoTcaTC5BLX7nIySREtJ5k2B7srXvekeFHHA/ +RFPbq9XrjTv4R7cKyaRAc1072EUxB6KYoMoMF2lm37R6oEBlNSTj1hgaQbiuuwjrh5o1YriKZg7K +4ZyTamA7zCRBxuEs6QOKD2VtaJV3FHNbsdbANoE5gD9AlKnW1K0cAgQBW3YrK0mNm9UGtV3RGKeL +RjonU3To+gtF6weV/fb4BadCLu6hdJQtAgK7tNgiuXo6B0l5rBjbwApIqg6TA7ILqBT4NngssIts +lithZgl1dGMpKVuyNiHZVi5vMGwNJYJ0Xie5DiR6zd4BBQc+FneZSRPgQrxQBeCl2JCVx7w6Uaxl +uXaUKSgbcQ9EGUQNRoLSjyRtDK4uKd3u8F5YP1aMIUW6IMeAwIMuyxXtZEYqliyAR9XYBr2fTFLZ +DJvNS0XE4cShbu+ms3qhZGJEmYr3E6q5LFMqiiCLgCWKygAEEZBbgBSMqIDiAPkAvJRkmpq5bPae +wfwD97hq4yXuLB7Xq0sc0wt5BeCRwG3y6pVN4ywhzYZ7f/gH/1RVqtmcnM2p+ZIrquBCIYbGZSjy +ecZyxpLUzOVkuNpMBoiZAiSKZeOm2LksCxKPZlq8POKVCU61Uyk2rp+WZWUx5IXarTtYOiNb5bVW +3gnqJ6q1Sqa1j25hwNkEPt4hyeWksjc37BWgbqEYyy6IJpYLJLlV9pccSFoaUqf595UTSMJRtb7l +zL3KCtBGVtuyXsdIMxu3zxNYthG3j1G7rFABxiXGLXp7ijXHiSiuw6MMbX892/94+/hrNzqCpRfk +BiwiCi5HuCXMR8gaJw7s8sqLdjRj6Lhz3V4UMIfkmihAsTR0wjOtvAc5C5gJy7d5KT7UF5+BzBsg +bRC0osVHv+qbG0gmRYoSMGeN5XoYUU9n4QotgqqCQ5bwCH5F1GasNBbUrRxi305Qd5JkNi/yfB3H +TIowITYVa2GUdwR9C2NqmYJcQAwCqLLYgvwFDmw6q6B+4YdHO/ufBdE+8D1FiCAMAfriLquQXLhu +OTjYWr6T9e1iqZxKccWili+oqatjybw0ZISe4ewYDvyrnkhQ+bxM0j5BB5m8ghA+SF0QmKqxcP19 +kKKbqbiGPEFGNFvVTBDLO+m4pakiMrVqZZtjyrDc+awQV2/OiekUm04JpYJsqfVGOO9319lMXAgr +7q9BhSCZYbqSSUCnPIJoXrgPq5lMUDQVAjKAgKWZaqnkbGxgd27nGcrlhW6hZGezah7oRF7Lg3iM +e7rZ4IqJBMdzjW7/HIAoX1DgfzcTIopVGLYNa5FI8FE4+/6P/2EQLG7fxu/cEUmmhmJWoSjGVWjI ++GkIivTAq3N50IwuTfsU7QlSVTO6ktJm2NCKG1buAiWLt1ziCh4OTrolVC2WFIKwKSY+S1BCbIr2 +dXMSNk8avbOwdSDpPYqF+a/ki2o2J4EcZpg6SbdYEej0BNyDZCpxz7JSvIvY6D11o3tO5dIon7Ai +/GJIEGWaDSGJw1+84NR0j2R1Bi/Q8vmSltgk0KKmykCPNVWbmdY+y48A30x3x7B3i6gnChHEFIr7 +KBExIjhbg2Q7tru2nZ0ieCNpr1YPeKkB9IOVJrQYd6433YmotBEMVB4jK13X28Hi7ufgDNVcAXQQ +BXmNpOxcnqdoF5IdSYM5dfDhREpKZzSSalj2CuIOWFYup+JEBaaFZBo4CQlOSqYlim2HjbteuEcz +wdNXPzg4+5TiOjhZo/h2AfNSuVjbknSUi3FPgYhjhSEwAaxkplPc7TvoxgYt8C3AInCh+Ig63bSN +uWVMGaaWiiv1Udm4456USCCpBAmoglFweQ3AFl7s5gvWxgY5GJxDnEK6BImXSAqFnMqQZVPvwCd8 +dAu5dRtDEAdQMZUUNzfoFLyh4Ah8T1MHkLU3E0Q6zQKbAlYGXBfD/HzeLJWMMJiOx3cxzEsmFU7c +ioUeWs6X7BLu51B7I80mYDbyisB3XH9b1mJxBJQpF/eC4WjageQVNu65wSnNtVmuSTHVTE65s4lv +JplC0cLJCshkmA2M0OPKQnTACG2KBXnb5MRmDjHgw0H4ELiHohDUPEE6XNwRu+t4y7g9DVuFS3WC +Xd1ZAEGK65+rPdOdeZV9im+k4iZcMoimuEoSUYZQoikQPi0/vo82BSfPZAQwkAGVRECiDFiuznFN +yIm2PWW5WtyPrGCFzftm+VDWZpazpJgGpCeZjyqVea4gY6Tv+PtmeQ++C6woIOZmmgIiSjFNkgwB +Z4A85PJurlCGUE1n1ESSyRckL9iiuWgjQWayqqjODBfIw9oq74IcS12VZ0SwMnx1MssDJRblsVXZ +7YzjzRDgsRDOjtX9+NNfrPefgu7DAbvEPsV3MCpUgGA482LRZBivXFmm0mIqzUPsABHC6bZq7dv+ +SSJBi0y0NXqAoRY4UrYABMPIFt1y9XSyfK3q/c2NEoXZOGpDOMO0A/cGcnVnkyuhke7sAgwmEixS +KoN1MKswFTRVjs+Uoq7t7UTNu+m0mMtq8MIQmOcpOHOpaAHdSmcl0HTAo27dKqXTEop5ktSD7MZx +jWLst8AzZY7vljBQcCOS7cKLYNvZkpXNq/F2NNcEXoSRFY7v6SYI5DroC4Isgz5V1HGteen4Bwhe +LZSCXMFH0CiVUbN5A+gECnSCqQpSJz6wzVTg84FdxwdQqaAcHgjKEMhtCb4lCw5MEYQWp13S4ZWm +7m41e5dB7ZSMb665gJA8V6nWVt3BXa92jDM1+Lmi9hg6AHYEpFTiI4Z2eM6OW8YQFpDS+GYTHaCo +kUlzkNktcyyJTZoOeLGF0zWEiCALE0wEF1koaRxfhevU7S2gi5zQAQfghIZmjhECJIMNHNivnVnB +LngLzfWvWkACjFSAYUIEASQK8hZ8Gk5XZGOUKWgffZQDALSdbU5ogQBMZQANGICd/uTJYPoMnLaE +Gl6whisEJKTYSjorAqkoB9uj+ZPV6RcglsG6eusesMQi6uSKBvgJgFsiyTNMqFv97JWuvIq+NsAv +ggG7E5NJGgXPpyrJBAHsLo84GAWUo2+429RVT22QFTwo7pIFCCOIwJbHJNkCwgAeznHxplMqyRTz +5p0NNA8hKXa86rEbnZw8/PGbL/8srJ3fvk0CmsErsckAMQN8y2SAjDVqjbNG94KPD1SL48ljVRsX +i04qq6UKDkJWTHdr9/DdD37+l3GFQywooUBW23b5kBeH4IQQLOBIOBmAFTwP9HUGsVAoweS3eKnF +xO1U2iD3MnmLZLqSupLV7UzOjA9dFIwSagIvktUJYA5gBSu2SphbROMNtKB2IKjw+bBAkExtioJ4 +gb9oOG7wcl1zJuPla8MFgGpzUpskyyxli7zH8ZDI4ns3QfXAKa8Q1CmVNFFo8FxYKPLJZB7YaaGo +wKI0e/cBCvJFDcKNjR/GCQt5AdgISfqyNnbDY8NbAzhkchIsNLhWEdVpvoZRUcxzbACcuWZN4Q3x +6Qu159eObH8XMhcEHVApQZqAdisWIdFwkjyo1C4YoUWyEa8Okjnt1h2kVFBFsZHL8Zk0lU6R8L2C +2IkaZ3Z5+6odsx3WV6IMTNViAZfIOuR6IAzLw/f7F195EXhde7Z4DrEDTq6YW4zQhXAmyRrI+UJR +Bi0siE1Z6QOLAz8BFoegLk5WCSoCFnT7diGRICFxJNNiOiuXMDsOH8QGIeAG+wQRAF3XtAVFt7F4 +cY1sVti4k9/YKBVyGoFFAL8EUw0a5+u73/aXb5vDh8AtMxn91i1Ii/GjASD9igWdF5qmvag3L0Bg +QvYHxQGsbLF6bdnzTFYroL7o7A9Xb19+/qvPv//7j55+nSsZKFYGOge6hhd7ADLgVFfdRYe83CNZ +yHdaMqOm4+ZxAchhCC64ZpBvGBUAcqJX+/b5OBUG4JM0UwNqVERNDPcgZ1lxi41zmmvkiibFRNmC +nCtCoqxRdJdmexD7OFVHUHCwgI3vaDuAbATTqnXu1XqXEOlXdhnA4oqIBjhTQq1CCQCqIcpTURoC +eoCOS6UImvLwuOMtzGSDBV3gHYSNRxQVZSC5b+JEnDfLKG6SbIUSGqw8ENUpJ/YKiJbJMnHfKGur +NXxY7d+nhS5KhvFGB6KTjEfQ8ak2kJOgI+q9Z43eM5TwNxN4Os3jhI/iVi4vAnNA8JCTwSEjioZV +Nu7cKaVTVCF+YIGJH2RjAUYa8Iuc1FD0DkpYvFQLqndN98Bwl5LWBgWE0T5Apax0vMp2vqiUEEu3 +tyV9CKBXKjrplJhIkrmcQFM+qMI7t/KQ9EWpw/GdfMlLpIG5CckUAwzwziZxZwMvoTZJBTQDtGrA +cB2CDK66sgLsKJubRDYjFgpGNhcXOQRxRJENRZnD6ghKX9bHNAdpyLiTYDYSMoo3eLFp2ZCXB6kU +TKMjCA2M8CClbqZEggl5pSvIQ8NaAP4AfAGXM+y1YW3FdelJN5vhC2hAUE2KbqZjFxLhlSvoktwD +vQPYKNnxflEmBxxJSKSAbpkMPxC0BSePGaEPC1EAsoeWwSGLiJ3JqfCCfEezcY1fFDMLRQnBFOQq +iOLnxegQXBH0OEg5YLbN9oO9i590lu+AvgIBBs/BCfjdCsn6vNKJug+t8ETQxzhTBZjNAs3IyjAh +kPiADON4XZCWsrZvOPsYGYP/ZhKjmSiqnXuVE0GZFhAPJauggsvOTBBqwPFAllYbx5XmJUrWc0Ub +wX2g2X54oBkDIH7wr5LS31q+3jv5glO6edTIIaqggCwdQG4C60i6ZnlHbnhX0hYQrZsJLJNlgX0B +yECMwNfBTLLimGDaQPYkoQ44QxCe5UyGs3th+4ziRyU0TGUkkHUcX7tqnC0VS5KiDpv9R+3Rk/bw +MUJUwA2yWQlQF9wJgCidkvJ5W1Q6KG5nIMFtEnHJR8LD4jJ9SCLBpNKKIPaj9lkOsTaTdDLNAGiX +ENBKArw/3ra6QxavAh+CHdJrId4/r7B880qPWOmsli+WMbJme7tg6cYmDbLRrxx54ZkSt73Qgd8m +UmQ67tMR5DPi7dtILqf74e7u2duos4cxzSLqF0pWseRqxlbc1RcrC+okat3rj9+WMA== + + + EC8NnGpjZDXO7xkhmYY58aPoaLj1err+Iuo8Sef0zSQfX1jRLgKsET5G1wVloTtrw11xYhewMSYG +KSGbB80YysoSqNpVdf2YPaYy/FVLHQ0QD5Q1TtdxCmK8omlD14ub3UOqVfWlHx4r6ggEaQlVOKFq +enNSbFNix6ocbO1/7UZn8V25FBM31y6pktA1rR2QErwyFpQJL/ZlZYChcY3xTFZMZyRAYMffkfXR +1Q33GkZUJXkIMiGPuEWswgmDRu9JrfMAnBAAJy44zABVa9ruqNo+FvRR2L7bmz3vzV5z0hiCGpam +7K2j5gXJ9ktYjeFaDAdW+CUsbuuDoLD6o0b/8c7Zt7KzyhViOoHhwAdarBCxYmD5U1FfEFS8MQJh +BcGVTIGOi/cH4hLoekcxxrK2BRSI5Tos00qn5c0ElcspSMmN/0QtCEwAf0HuM2wnlzcAnW7fyvFM +RMYJ0YYAB6YR1A4b7bsAaNkcXSyJjjty3MWt2wiAP4qXM0UTwUGiVuOt3cRVDUymKSlbqj6H72U4 +yAJ+JmOI4gRUdhak2QYG74S5KmIRpL9szkomhY0NHCsaHBvENzXICqtMW5PX873PfAAByOCEB/S+ +O3lounNI+imAAsTnxKlsLAB8MnkFPAHHPc+bR9FOVD+GuU2m9UzOAuwCbNlM0dmiilKRaq3L1WPV +XVBChwB7S+UrGm9dSQyfpAGQhxjZKiJ+Ih33OQJQYvi66a0Mb8/y9zmhTZA+8IQSGq8CLwExHgEc +AQjzQp1mgzyiAuRCPE7Xb/Ye/Egy5+C9mwk6E+/gRQwTFOJ9DBFyjWatAIplZZxMgtCmQJIXihpB +OaxQK6IWYJoS76OCSOzkCwbAJs33GL6r6BOUjEBt8fKWIA9ANTAcEP7ILM+jzsnO8Wfbx5+61eMS +XssVHeCusjy42olqCcqsHOyr1gxjqqB5UzF2WZo+sICq2TOMbSFkleY6uglfOkIIUEnV9uiMk/q5 +vJnNmZm8SbFdEKcxUJfMZBJHMd31tixnoRiQXKJcHgSdiSBlVZto2jQbC+qyZsxEdUKwjWLR20yI +mwmuVDQEpl7Iq3G7H9B0/k7UODbsBZDnbEHS9GG9cawqve98JwNEVDXHduVQNnYZvp3P63fu4Jms +bFpLXugUi3qhYAGTFAByIT/KW6I0ArhLp3gUdYF1JAExcjpCQnjWkJKNlywMtAMdieq4XD2pdu+Z +9pRhGmScShynPO2PzosFFRAVxEgR80m+ky05yYycK9n5ksPQNRQzMMKATM2wQ4IclEpRNu9k8noi +zWBUBb86rVfAbYJrlqvno/U3fuchUB3wK0g9EJWGuV1vPZGM9dX9FxfQDAIHUP2qxXyHkyew3MDl +YmQmg2xOzuRkcEuSqblB/PB1vmhCdLd6d+u9fVGvEWwIoG04B5CMcMJmGD+bFzM5XhRr8LuQ6NPx +xrIW72ajbrm8JFhPkCqj5WPVAcFVxqlq/KR5WsrmNUkbMAKwFKuAWEDgBW2iOzsx9SpBXGhgtSg3 +VKMmyhFG+ZD0B1vvLe8YFv2q1ZHEy12CqRRQs4jZhjdf7r+dbL807RHH+sBGJLlf614SbBxQuYIL +MoeXR43ePdsDHJByQLBLLjgnK41JvpstwoQDU2JopmKYQ5A/DN8HVBTk2XDrnWYsgADjeJBKA8uq +clwHw0FueyXEp+g+xQxFaZLPG7fvIOkMz7CNdFYBGYWStUr71G3cqzQeMFz3zgZ55w4BMw/ii2Lr +edSDT4CwUo1tCRIEVQVRsJEgUbwCWZWi6/mCJWoLXgOQqUAaLRVMwMxMWrxi47VUSkom+GwO+Ex8 +3x+IBEF5haK+sUmAfmTZjiB249sfGCCt5pW3UaB5eSmLWpmiVUA9iGKS7hnmTqFoUHTIgicwtXTW +2EhImQykVF81Zoa3wpmwRDjx4wNCr9a6N1l/sKMj4BvxORbEjlcNczCgVWiFFReCsuakCcUCwTCv +9mAj015v7QAmHAGpBhqWAoJXBB4Okhx8TAUm7/jn1eYT1Z6W4mNgQgnRcSokuXoBtVIZJl8yZX3G +ST2C8m9vYPGJo0zcQw0yPqSGApiGuhDgqr0k+OZGkkNQH+IukzUwPAABCAmOYJq2fwRSfTPNAwhr +5sxw9oBvqMZQUhoIpstizbYn8b6E1E3l9I2kmMqqADU0V8+V5FROMJzJaP5g5/jd1fltMZkGIqrJ +Us8L1gjmgqLRjbnt7lrlXVmfgv/cupXJ5SSaBQFr5lGXV5dO5X6t+5KXh/F9q4K2sYnnCwosGRmz +IHUTuPQmCTArykNB6uaLOiC8X9kFfXdnk01m9FzJu5MUYGmA2araVIlPp+yAQC6gdg6pJLLWZtrA +yW7YuCwH26AvSiUd8tTW6s3R5Q/86BC02EaC3UjwJaQM6BqLtbTM8J3Ll7/uLT9QQm8zKSY2OZZr +B5VjYLm//R+kPrqFYHg0Ofx2uvuxoo3gOiHjwDwwfBUcO53VgSrg9NirPnr45jeGfcBK/SwCF+MC +thQwkCrAu7okO4Do0IwRJ4a5Agcrns4YSDEUhWmr95BVe+mCbNnj5d77ElHB6SrGhhngMGgEtA3i +lGKrcVdo1AZOGzWeN3tvzfIe0F2gQChiiaBhzbGsw4fYG2lgyJEsrz3/gagsE0kgnwoY6NcuTO8Y +paNUQU1dnQmJZztJbCZIBLENe88Nz+DKM3l5I0HFQrtoAgUFXkqLfTc6ne1+t7P1VjQWGfiKTY4k +olRK3tiI757AlJawQDVXR/d+2ho+z4FK4uvlcN/xj0VlAvIwmRWTWZlhm1rciNkA+RDvhlE1x9tz +fFiRarwPg8Y4QDIhSpaLGPyvhxJVjAhJqhJLobRQKIGeagPJzxcN+N90RkAQi2UbgtiKDx7zDdlY +erUL29+HLLkZb4kDe1eA+RcKcSkkoOuJTQpBXVkGqT4G9ZdMA33STGsC5Hxzk2G54XD1seauOX5M +US2YE11p16ozBBFv3yliVJuTti3/otl9zcvjVFa4cwezzNH66B3Ng5QQPrqDJdKyqGwBWwasAJEO +tEqPn6uaS+ogmeEhHotYjWK6zc6TrdVnJdS79VG8OwpahuSbQEtu3yZAAoDbUBzM3g4ItAzQ+9oZ +zGpn/FJzdhNp8//592Qc//99Af9fjRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6 +jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtD +rtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4 +MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6jRtDrtu4MeS6 +jRtDrtu4MeS6jRtDrtu4MeS6jRtDrts4/u/+PRlj9N+T8dsU1Xpy3jx5dfKd39rpfue3qFrPOoKf +zE5evrr74ju/NYYfHSm1F6+a989e3X/65OTFe9SLf6bKuokqs7snj1D279+MwrvQyYv7l/efwA/n +ZyeP7nKoGL/Xj//4zm+pqIaqV//tvP/Ob0mG5hiyZmmmramqWzZR29ZtWVfLjmO7jmvY6OP4XfAD +2XAc/f9l7D2jJMuqM9H/rNVdmRneXO9NxHXhvfeR3vusysryvsu295bGdAOtxqvRgBxISMI3IAYB +AiQhXGMbGhohCSMhpJnRvFmz3neS0Xs/9GfWihWVlRn3xj1n7/2Zc0/EzriOk07l/vOrzh6eK5ci +v8zjTOmM7eJVaYcc5nhZ/MlJ/Z9X/ad3/L971X9+x5O3vWblttecv+01c7e9Js+qGru6QgZYP37b +ay79/yN1Dkd6OKedU2ePF/7Pz43jmKP/mGEciwnp3vYaq3X82qljx+e7DXYV075BzkAm+TdP7P83 +RjIFTiqZzbBbrGs7rGNnyBlO/l8eQq7rPw77j39zrIdrdbKHl51iybE2rlU6vFCSHAU24+VdFznS +fw3Lk3YmFOMKUlGUyyLp11KM0yVObElahxOqDEO+tZ8TCmair2gtSa1RbCZCOTiK5jIMnyf9lWlH +lgua0bC9gWGT3l0ijpWbijGKUm4wJAaDfCyqk6ZTRtOwx5o1LRsDXmtQfDYcS1pOR0/UaTanGYOk +NeumVwS1TTMlUeuxQiVOpSNRi+FLvNwQlYaVmqXFki+oRakUzedjlB2OJGg6oxsdL72kWQNRq0cp +h+azNO+Jaj5MmbxSsDMLbn4rWz0w3AUcHmVSEcp1vPlcbdctrDnZ5XRxR0tOc0otQjuCXOVETEIq +FDGDIZWikwznilJekIvBsIr3YthiOOZG4l6UTrOk2VuDE0uSUuOEEs2Vs9lNx1um+Wo47gbCZjCS +iFGOmexrRjsSS0Sipqw0VK1DGuxFSbujOOWqSj2fX40zKZq0m6oFQ8aUT8RfYzEvFscjLUgtQWmz +QoMVan7SKMjCLyk6R9M5UarzQiUWT7FcKRJzyXdV0+k4lYnG3GjcUZSmrnVIM554JhBOTvpEPPwB +NRjEQFyeywpIgKgVDus0Zfv9wuQUEwgp4WgyGncjUY9hywxTwNlCYVy5xUuVGOX5A0IkksRF+v1K +PJ7m+BrDVgWhKasdVWu2Wtvp/Dga0ygmp2jdpDetmu1wNBEOafFYCifk5RbNl0NRNxROimLFskYJ +s0tTKdseiko1xnhICYrJSGpH1rqCkEsm6qGwigeS00zOyvqIk5BdXSQnafXN5yIRg+Eypj1KlzYS +HmnMycqNKJtmuPzm1j2V5hbNpSkmrZvTudIpJ7PNic0YnYmSFuZ2NG6RXvUxC+MlXYGlRozOxehs +MGz6AxouGy8gXYvkcpzNMkJJT4wyhd1a8/jM8kVGSsUYSzW7dm6t2DrlFrZ4rccrLURkZflWf+Z8 +XMiFokk9OVNtnc+W93mlyymdOJOLRJOYRopOkwaNYWPKL4WjNmnOHbV8fkRHjlEpFgkvVVhMOJuP +M4UYXaC4MiMWSYNPvoo5RAbiZTgwErORqIGgTHqvks6aTiSaCIWMaNiKRW0kGBKJprKFzEomvejz +ib4pIRjUfH5pcopDEDFYmqsKUpdm63G6oshDVR0EQyZpmEFnOL6MkAEQ4jTwoZ2wZig2PeFjj0xS +SE6Aiq73NbWHYiFnCxqRCPmu84lJyu/j6LjL8zVBrLNMdson4DIoKhUIKqGwhlyKRFO+QDIccaMx +0oBK0PoEWMIaRuHHJPglisrYzrLrrTnOiiQ3s5nFa9ffPL927vYjIc0ckP6LtR1Ra5EvGUcRxUlH +jWDEIN+aHcH0pg2rp5ttDhnO5RcWLpt2LxRL+kIKxxUz+R03u8nxeZZzQyH1sHNSDwgTZwtRpsBJ +LTM5k8quqHqbilum2cqWVk1vwKslXqlj5mW9a7mzw/FZyx3RbBppmXQWEt4Sr7Rj8Q== + + + HMOX4wzJt8NvHheDGFHcQgEyHGqnyPENIBvH1Wg2E44apBuKXEDOU3zechdbg2u92av1wXFKTPFy +wbB7ujNQnSGntu30Wq11Olfc6HQPsqVlIDBNp01r5GSX1MSQFuqshCHUaCYPeCHdVYMqoCAQNGm2 +dNj310SAAkGNZsjX6AejyUDMiSKsTJ3hWqazwkilQFjBPGuJ6VDE9gf1iSkZOBOnUtEYEMwGTMXi +5DkasYIB1e+TAn6EMhGN2IbeluU6Msrnk/w++Tct0n1+IRy1aK6k6mNRHopy3zQXdH06EkVWlGOk +xVEuTiEEDZqra8Z0KrPJiqUJH+MPiBRNWoVxfImms4ACXPZhB1l3YoJGaoVCChV3WLZGMYDQdDSa +4vmmqjQFIa/IRRTCVMDwBx2gNE16kxfiXDMO0GZSOO2UjyNYR2clqY4XsBwor5a0ZqrNg0RqePuR +sGI23AxpPxAjDZbKQAOKyQcPiQBlhRlgeZwwGyMhzppaazQ+JSrlSNxmuJxIOpr0KA4zaQBAWDZn +GJ2EPYjTaUmrsVKZk2o06lqsHfbENT1vutraS3pDJz003D6v1BSzq9sjPHNiheGKudyyYXf9YSUQ +1ikqp6h9lqsgoMAQ0k0hBvhC+ZvBcDIczQhiG1MtKaT7EeaW44u8WJTVmmK0RJV8vb6VWTXcWUYs +OelFOzUjmy3T7opmPVPaHs/drLZPYf5RIwATU28BUaf8IlJIN0b50nFERzdHitpkuQJgh3wpfzQJ +7PIHNeRAPJ4BATEsYCoN1osismyVZpuCNLRTuyiZGJ1y3QU1MQ6EE76A7gsYYCucBKAXp12wGMuX +Ue+RcBLoFA6ZeJAc80tx8BpbOOwhpPoDRiiUQCYcmWRIt1rSMLIZijrBEK7ECoUBoRlRbmC2QYik +PRiAMWZTbJGXuogjME0QSnHKBP4gsSMxwJEHhGRAo1R6clIIBoxAQJmYYKPRrCR3GOAtW4lEUgJf +cZ2hlexM+QVcfCBEuC8cQW5XJG3W8pbM5BDgNjnFBwIysGtyip6a4jg2VyqsqUaf4ivBSBIVEaPU +w7brNcRINacprhJnSP9piAFZLsViGk07rFAW1Z6ZnLMchLJCMx7IsdY6GaeziDVYg7TKkEn7NJwH +xWWYw1R+EWpnKqgA9AC2stJGbpvWQE/2sumFh+996+rRm5SQjnOeoEKSDW1vKZNbL5S3RLVORoEz +xzyaqUjKSE8u64kl1ZjFy2gmK4tFIzkIxVIg63A0hZnUjKFqjCR9kEotLq9cr7d2w3HSvzzpLuQr +Rwu14/navumMXGf61h1vtIsjf8SIkYZtVcwV5IGmdSFvDlWKCXLhD3uz4cx4RAgRQP8UKDY/6aOC +pK+YFyNlW/IHE+FIOhbP63pP1euTfmCLHo7mJXVWTyzoiVlR6R62e4FgQ2j0YFAiTaECUihisGAW +oYoIUvFMOGyHwyAXKRhUQEBEwAS0KZ8SCCaAk0gtMAggyw8A8fNHJqLQYIGAHgpZ0agLoEAIkDOg +xamA6A9rMdpD0qr6SJBQFGVMOyqaZZE5dZwcOAPK8/kUn08Nhx06ng9hFEGTins+HwcQm5jkQVt4 +fTzuThK0lOMQezHwkclwmJY8zRUltYtJ44U6NBgVB3axODAaxVEZf0iZDCiTfhWja9YPAiERuhSa +gbRIYXMUW1b06XRuJ53dTiS6ipTOZ6dTuUVeriHBIJs5qWCanXxuNV/ZCUcdTavJahVykagOsSXI +Xc2YzZf3vRx0bBayJGEPObHME1AqJ+yZdGG11T1++eobBgunaCEj6U01OVITI1iG37Qx46QGkhxA +h7qQlKaRHOuJaVHuqPoAXGkkxsP+2e74QiiWDsfSLF9V1Jamd3Gsovc8b6Fa2TKSvThLWinzYhU6 +0Emv5sp7WnLopObOX3wqW11GwkfiLrBO1ntQ7EBU6GEgQDSexs+gDCrukt7GWge4RKiELbN8LRQ2 +QyTcMh7BIPAcWNEAbGZzpBWxLyAjT+JULkrlSV8TpsgJDUFsMEw5Gs3gr5M+NhAUoUWj0SRwSVVa +klgThaoit6OxNDAqBlaNuT6/FgyRpnrBoI4cCwQ0RJZh86FIAuw2NcVEo47fr09OgjGVWBxkhJqF +SLZAHDRoiykg0ziuTPwXW0KakdCwBUGoQDPjnNBvOCeuH6kF0RWAngcuBVSi3gPy1JSEdCJ07Jd/ +g1TIH44rgZ6MxAhSDfIeOYbTIqA0kwkFdWg2nJA00qacKUwCm2eFkigjD71AUCJtZQGSbJ7EQh3m +isfLzTNmcloUi5pcGPSO1du7DJ8T5Jqo1LRE2/HGxfK6bvX8QUM3WqrehMbzUkuWs2LZa6hZ01ni +JOSbLQmlYnUtHEtAjXN8pVjeb/bOdGfOd2bPKk5H0uqNzgk7sxSmsoe9Uqp2aimV304XdhR9gEtS +9RZpOxrzohTApGx7C6nsRrN71s2vheNFGlqLK3BkIIDchpEc6eaAOEomj4mV1QZkP83lndRSe3De +Si+a7ky+ukZx2QCpwQJUHJwImBc8Akkvik28EYjD51dEvuh6MzC/SAlEBNJON2dFqRUNoboPkSeU +QMQp0veoJsh9PEMYs3QB8zDpk3wBFbSFa8N/IxFos7w/QJoM+QIImRCNWfDgiDWUqqZ0MqkVWe6E +IvDRiUNHVkJ6hIIwU3YobOCQcARmDR7ZC0eI2ietgoOQxMkwODGUgPKnD9UC4FGQGgg6/AIyQdN7 +eIZAwn/xRrrRB32AxMGAoaARi6X8fm1qigeOEVHnV4GEsShpOUNQMQg7Bi7W/UiwoIY3ouJZ5BJE +HUNlFKnhDyGjOGTj1CQfIU3lKxCloF1fUMGkxWnb56Nuvz0EBctBckcdQQB+Nkn5Gx1GKEQIKad1 +pV6tbSe9MU6rm0Nob0bMCkreTFYlBZzlkLWC1BIUbza3IWt9WOMYnQ9EvDhdgI617Rkt0QlGdVZA +Zlb0RE/Wm7LZoaUqJRTt9GJndNHOLMQADkqLlZC3w4S7qFtzijGG3cbrIxAnTAaZEKVcRe+b9rJs +zDJSh4VXEupQMgDbwzauhWjcQ/GGIhAzRTOxQDoURg3gCcga44XiokkH2TInVhPJ6XR2LUK5kbgF +2R8jvX4hsMEpGqQFIihLdccZx1CGUxy0N85/aLrdEMRPAEF34OwAIHhmuaqqz8vKGNabpUsBUsWk +1StqeXIKBo0OhZ14rASFTIIeJZ3a4WeRrkAkJMbhnNdpphgMO9BOSBJRbECZs3RKFcvxuDUxGUM2 +Iq/i8VwsBp7KgaDjsbQKcx0xjkxE/KTPLhDPZkhBQZcizQxN62v6ANEBh0IzE51/2PIQv/H5BFw2 +3oIMgXAZgwcAMBpJxWIZ5BsuDAIb1E+oM6CQbqNBA7INFQHaLeUW1xbvmPQLtx+J4VQMlTOgls0K +RSfIxQTA6YkpH3Xkdr9/igKsRWM2khMyEgoT4QhFVDh9iGpN7Rh6TzPaCCvss2r0WLkUjMg05whi +VtUqwCsns6wnB+G4JRu9GJv1k/5PWSSY4y256UVZawajJuwSxWXAjxHKpvgsHJysD3LlAyu1qpj9 +OJexvTmkGWJNekgrnVR+r9Q6ozlzjESayyKvKD4XiidxlOmu6/a6iswRqxEKuWR7qcWkOwPfQXxc +2EBhgpVw8fgvIoVqBTnCXcpqy82tG848R/qvk+50cHaa0VGTw1DcmQxI+I0o1VB9mCuedGUmve1Z +Ooe3mCQhiCKIUESxqMXSadQjIo7SBjKHoyamFNmCuFMUSjKDnJmcEojwBmrFLDDsFNEtKviFqKaA +BmQDq4IBGTYXIZ7RI8xLWswi32BFIbRk5FUkagT8giLBHDUPmRpjNCan5HDIQkzhziYmQjTl8Fw+ +QvqHWT4QKAEZQxQaRmIWmExYOKT+pi8v6Rga9+BtAVNIlSMT4SkfjcSD4WVoUJuKOoIhBXwRtOFz +CZhltni4+sEeIb23ZYyF4bIwSqRvIuVIUj4UlqZ8sampiG8qFgmbklg1jQ5NJ2NhOWnWoDABuZFI +gug9PhdEGtBJQcwhWOB3Mjkw1yGNLL5pbV6pRqK6nmiwYg6/IQs1EKhRAh2Zwp5qDqAKnMxMhEpg +wkOH/WXDUK1cxknNJp1p3Wyliou8WmPFiqi24UnDyAQ2lyvu5qtHKQ6MXM5V9uzsmmT0YbvCpHNn +1U2vesU1gB50mmL1Q3Gb9AQNkn5sYEPHnQfSYgia0UQaQKsQ9Ru2YjHPtuayuXVBqcaiiUJ5RXNb +gYjkD+sBDC1OuLLROtEYXOL1DsWkndQMzYN3oEZkKF6EErSVdhdVteUL8OGwzDDelI9BpSPcSADS +8ZRJRylQKh+nHbjISNSFtAZb+f2Gz494lWDQwhE9RB5kWSxE1AvJw8kpES+WpA5EAhxHjHbCMRNB +nJgggicUAj1JLJuKhHWeTaVT/SgFoINrcA5hrRqNuOEQkFP3+Viey1ExC8AFzopGvRhpcJsh3SvJ +ii7mJ4N39welQEghTdkDuDAFDAX55A9gFFIsnjyUWNzEBAUcBkYdegQzYfYuXH6GLI5NxgMBATIP +v0TeggoDOHnUKZdXKtV5JFU4yAhsUmA92M/DbLGAVCyTqdQ24MXgRpG3h4hnB0h74KRpNA+XVuRg +IBGLunHSbjktShWy9MTnW72jolaemOL98J5EEtuCXC+UdyW1ZRrdtb27/GGRrHFR8NFZjsvLShWp +pZudcmFxeeemkmz7DxMDEM1xFcte7E/fLDYOaL4kyTUrMx9lU+G4A+YSIOOtmXzlmJNfTbvj4yfu +dwvTR6boQ3wmXcNRjJo+5sQG7Hylvgf97PNp0Az4L/5qmAPYZNLoncn3RqcEPTsxGQZWkNbyfFZU +Kt3Rme7sJdnsJvTWePZkKK5PTEYmJymWy5E2nELFSo5BWCgTlk9TtHNIT1yIQArxxch2hkvF4kbS +BW7bv1nonpyC14PDLSnQYAyEkGeYLV4sHpmgJibi8OngkUPSycrKgCP6wYvStj8oHOKJDMyB2wJC +otIhtxJGw8sM/GHlcFkMRgMCzyUk5dcjIZNncwmjE0cKsWlJqsLWAUhJN2sQGYib8iqVdU7IAbtQ +EUhFKp4PHxYdxDkySuA8XUOOIbV4AHLAD9FFDgStw1HOLV0KRtWAj2PjDgwIsGtyklx8MARyyaWz +C0m76/dRLGUInBWPwlnAp+gcX9D0NuBOVJqQSQGQaVDz+eBfjDgCwecUtQpIBwWHgkkKGcKlSGGS +bMy59mytvSfIJYA8RVb/UODOoWDOxMh6aXtl51YobnBcVlHqPF8EjrF8gWYzNOtVigt7px5KeMMg +kaNp1I6qdBLWdLa8IWrN0CGbi0bdH9V5qZDJLdB8MQ4jzOYFpdHt7N3/8Dvbg128r8CVGGBaNIkU +5YWekVzSzGk3vxUX6rBjugqFBqQFv5MSho6VxXrSGYfjJmZYIcKpFI0nYnQS2MuIeQ== + + + hs82SysPP/K2GJOcnIwztO2mRkBaxGjKh9oxINUspw/LA8yhaDseT1C0B1LAmTFwJzk4dfmpGAu3 +Lhzek3LwTFEZ0B+gxvWGO3t3t3r74JTJyVggwCETQC5TfhnYixgJUgXgAF0HPgXaQBv7fdzUFAtF +pyttK9kXlZIvpIIxgZMTUxwYBKQsC0VZKOlqw7L6LJP2nEEkagJ2JiZiYQyc6OQM6jSVmRPl/G9g +MBiUDu2hTHwi6JtyDL1kGrXDLt2QiCRzkGAQhHggQJjAySkKjsbUuoDH228LTE3i5DCDVYAtXAMs +pM/HhYmUkvDW+DkeSwG7Dm8iaHEaWtecmGKBUWBGhsnQcOJUGm5lykcS2E+AS6YZl6Y9Ra5lM8tq +cgCRT7pvxu0ouSNmUGwKSSXKVc3swEJKap1is5YzdnILnAjzXhTlCivkBaloO31BqfjCoDOTSO6w +SdoPg6HCKrhYkiuYZ5w/zuU4sQQw9Idw8lzCGhdrO5nanuHN02I5FE0CeIkZD6v+sMaJZbhRlq+J +6jDOVi172XLmIa5CUR3xwhVi3oIhuC2PSOWIFYwgYejJqRieGVynu5DOL6ezo3xxBiIHCkdFKAPU +lC+O/2IqdH0oyh1egt90IZXjlB0My6Sa4H+VChLV81by9V0/ueWkoKB8Pkwyqpv1+7lwWJO1umEP +RKVBVp9iZigoBgI8AoHox8mKWT4U8SDyeb6VtNdprkQsYRiKC+HQIOxDYbJ2x0ttL7sFN0GY+rD3 +/BQgwi/FI0YkZDBUKuWOkQzhsA1MpuLgRy0STsKPhKPkvpiiNPGaCcjsKQHvG42SrslTRDoKxO0C +J8ldGx7Io8pV4kHIQ8AjHEmwXAVJAsii4nCjJkoPHnnKJxGLGiEXo0gtEH3Qr+pSY2KSve026C7S +eJuIkyConyMQShY0ZNBxDCPlaoBNgCdZ9PAjtVKktXMUiWSDagnXGD1ZrsegWGhX1WuskI3E3RiT +i1JFiq27qa1C9aRb2IRh4YUiaBQwghwGRIMEw7FUNJ4Ba+NNGSqtKrVwPCHJRUWpymrHzawn3UVa +KMDCQ6tzcNBclmIzur3h5A8Mb5mCW4ynKbbEkHWGTCimRiEOhWqhfFxPzlBMORzzUNoMlwe2oPwx +rngcKq7Dkx7whSBZIFKIBw9pQFpBLdNCmhFzNAtHlie6OkqKkaJdmktFYshPF84CjpXmymBhcleR +yYKsITUxokNrXxWVLs2UWKaI0INPwyFMIz85GQF7hmMO9GSMzrFEdyUAKQgoCMLvEwgNwSdGccIy +yyP3cuFYjuXqktiIxRMkPQ4XSxGjOJNn8O5QnmzR0EdhCB4fT8VsCqIxIIeDoKRGnMrH4+lIBGoT +CQPBnEHe0iwEfD1hjgytA4iIhJLBAGmlfNttfogoP9E8wsQkCo0spQaJ+U3BbkSI11COTLJA0UDA +DARw2UnXGSJAyGom5saj5EYqwBADwVGgNpaqpK0VmM3JSQg2Cdb49iNxAHg4nCALdGBbmMcIsLQg +SU1ACqg/4NdxIMcVQ2QpQwgSnPEEvp5IjDHDuABJLGWycxTnkYV3Oi8qw4S9li3sa8lpGDHMhpea +lw/7GSPcoljStLamDwWxBrLwB1SJK2fTi6EYIFoBF5v2bLV9xs2uI3/CUcew5kS1R+oxkrQzO6a3 +SgsVBIvhSqY9b6XXZAVKOKslWixf0sxBjE6R5sEUnH5RUpoUjYkSofcgbEKRdCiaCUbcYBiMlhdF +6J8q8gRFQQsZQYay6sbg72K23y+GArpCkDA16WdAgorRlvRmGD6arHGVdHM6Yc1HCHIaMXI3MAVp +AXdPUblAMAGdTKOCItrkVBz+izRWx0jBGpi6iMNQIIVMMJiYOEKh/CG/oUZ8ZNULHORIysCy1szE +PFkpkhoMm5rys8TlhXWgOksEVUk3BtGIQcVMic/7puhJeLcpSeQ6OASMSWof6jdiQWzE4h60E7gp +GkmxdBHPdCyPQrv99iDYze8jdyePHInfdlvUR1wnoMMGmPiBLfEM+PrIBEfTxXgcs1egqJJtj2UZ +mjaT0LrxmPsb6Rj0K8g6KpaGZ2Go7OQkFyROkwd8hYJGIrmAWTpcvlBRyEizALnRAF42gyRMqVgM +SjU9hYv0yWAiRDkYJDcjIMZC0HtS27CmyeaTsM4JFU6oxpg0LMmknwceonac1BxoLkw2lqRiFDgU +yQle0Fk2J4l1Te2qBlQ9F6cTiLKoVTmF3CqSIeDNgWIOY2SxCNoGAGLgtP6gDEKEoOWVDiO1orH8 +dPPEzMLZIIgvZCCTQWEa2QsEPnX8ZER6PjsfJDfyLJqty2qXJTdSKxzfiFIZzP/W5p3r2zfh0SCr +pvxw4gmOSQtcIW2NWcaLESNfAF9P+OmpgMSLtYQ146bXdHMMlSVKeVEuTvn5CUIBKYIbVIY8Yg7Z +ihN3BQF/lchd/mgSHh+STxKaNFUKhRzULBVzgwER1gymDFd1uCuArG5NBeAHU/n0qqrkgkHgpxUM +48JkfwBUixcrdNxW+KyhVEFPQQh+eCKkaABUC83DEQ1MYwJbABZYzljE4emyAGgVmxxdCYeMI0ci +R0hii8gE/BDwaTAFEFFR2HnMYSwlyT3QSjCUxHMIMBhITPphM83DGxDVhDkGbcFvYkR4kH04AKsJ +mlwJJBzGTq4Hye+i9HyEcE2WNH0HleiYDfhHXgDvkzV/YAtOC7OMsYdJjEDEnB8KP2QeLlmg3BI+ +nwSyi5Jm88hYmiw7IwciOMoCuFFwoFxJkJvQOX4/S1G4AJB4Oo63O7wRD83peXOSXp3wc2ABRWsp +agN5Eoo4KOdwxI0QoBboeELg07jgYMQCwkhKTzdHxeq+lV+C6EL+KFoHyoGsw6CcfRwugGayLFcK +hiyKLsSprA8Jj+gEtWjUpdmsk5rvDE/U2jtwBDRFln1A+sgoKu5BvvJMRmRzqlLFhAB2yJIspFqI +JLamt3StISlV5PChDFYPl/dTyHyQAqQUpggJA6SCJkyYHfgpTGYUwyEL6fYU6bOOuFiRSPKQLFTM +85HbY0duj/p9YjTigjhE0H3MioR0WUIgeGIBQK8hTJcB5RwO6gjrIa0rU1PUkdtDyFL8MhJKcFRW +lmuHkkyXhCKkI9gZ3hbmFG+BdJqc5PEW5K4BIUG8b3DyCE4u8IzL0V4slo7E8uEYxtid9EsT4O4Q +vHwayS+KNTMx0Mx+NE7uaJBF5in29tsDoNpYJBENG1NTSG8MDZYQ80Adro5mKSYdi1kEEqMQBlmO +z5P9URTxfcgxeN4YWct1yQoYKUCQb8LvV1HpuH4kKkWn42w6EDExgcg3HIJg4WeoSssepXNLljsX +I8uPCcg22M9ITI1R8Ecp5L8KjepA8JeDURyuZrLLokyWg8g+FkAouQuMkNmwhIYB2sodrs9DukDg +1Wi2QNY/+SLZcRdO0mweSIX4Ah6h5EkiEdBIomAluQXmQhyhdhBQFAJMKydVEu60kRzQTEUQWzgW +CsSH5Afg8KVYzEV6YE6AJOFYFpIYcYzHMFGeLFfIXWy6KAhNni1FyF0AXLwIujm81yzD/kC1hqI2 +ZjKfm2v1jh4BsoWge7OHe6Uk8JTPD+WfOLy7ZCMovimUv4Bnckdvkp+Y4ALgsnASeQKOAzjEoHVD +CrQcChkUhvBFyAYwpBZoCNKFn5yITE4gOQV4eR8ZqZVNrfCCd/vtviO3B8IBkku4MMACGDNweD8R +2gl/gunADzgJ3oUmG066ktKGVAOMH5kS4ZGJ/Tn0DiA7XG0kBlrPM3QRWgXox1KZWMScOAILzBOJ +iCyKOBBOokx2ofBSGVKHYjIMXzm8U0xu3sl6Q7cHarIXIFYUktUlSpIv4kHCFETeOhSOIkbMCsct +ouRponMUsoWyDOMvSRXTbJjJlqp3GL4qSDWBrEQ1Gc613b7jzcIgM0wWYfKHDX9Yhz7vD84pWgUO +nWJcX0ibIENLhKAWyA39BtnJKVYZsm3DmfCpkz41ThOlRHNFoDeYlOHLstZmhPzEFAXv7A/IwEzQ +NMtXoZYZtoZkDoXhICQwOMOX6q3TjdYZRR1xPLmHiMIhW1BC5NbJ4VZP5XCvXY5iSjBKMOyAPlRW +iKCHFY3lZKmrkbWONBKPLDscbrYhK9iTvN9HdntiaIbZ0ZI9xOhwJTNJfPqUEIExjGTDETgUstUk +RFZBkz6fOjHBgsUO9TBSSw1C+cTIEihDpxWxEo0oAT9gzQOfwsGBa6IxsqGU43JBP3/7bUihkG+K +AwIj/6H9OK4B/0UMxVRcYMj2BpBXwK8c7hy2w+Q+OMbIYciHN6cEaJUoMaHpGJVFLFDUgJogWeeX +brstfOS2KLkqQmFpmimwZPdaHj8ISAnGRVpOkfIxfpNasXheNfpudjHpTiecvpOdFRS4+JZs9FWz +b6cXvPx6prxD8bU42VgCAwgjXEdwyb1XGlVfolmgWZLAEZdFfqoGfHoNsUZ8VQOE1ZeUsploJ+2x +qLQlpcWTm+ZV3eh1Oqcq1V0j0YWRB4AgLXFOaCGIZLghUarCtofiEB4qah+ZQ7EFWe+oiaFiDmDW +oMYP7/mahztd66xQDkMhs8WEM58pbnIKWeUGdYYOcW8qoMFOquZYMWbBsJNk0RLI5miJrmp2cLX+ +IIxYKk6T/auK3garwl0CyZFdAOEY2d4DAzLC2ONsHskGtaOqVUGsM2wFSQuXF6WRJHAB6SBZrCaY +QAgRxE2nOaFM4YKjqQjlhaJkAwN0ZhxOOYJSzQcjHiNUNaMP1RoKO2SNMWwc7j0QoZoga2E8aTon +8GWRLyGvcD1hcg+d8A65tcQgvgU48QCxveBcwAjkihgOw505QEWOBbyA33MJsxkMSQBeSS45qVkU +AvATaSnIdcjdKDFHWV2vkr3N4QQCjQhyYpMRalGygTY9RRAPyUNuO4JQCIxQHoAi6c67qXkvPYdw +w0FHIyRdya3YWApxlDTMcK/c2nTyc3BDdnpWNnsCUsIeZEvr1d6pVGlT1rvkJi/teNk5SWsDH3iy +MlBCdAyrJ+n1pDcSpLKe6Lr5BcUk2/MUo+dkF4u17Vx5JZma5ZUmKMyyZxzIKqUhys3D17T1ZKfc +2FbMVozNYCCiNlATs7o9J5sjBrETy5rZTRUWAURudtUrbItal+KLotoRkKhyHYBweF8yG2NSrJjH +Q0u0E87YySxb3oKsdUWxwfFVUGeELFmUabJxMQldHYO25BBZ8DLURYrcRuGKOCEeooJDyN74KAWc +MSW5jASm2KyktuFDRbnueDNJmHG9JUhVUW3EuXwAvIYM5IoJd9awR4xQJDGK2uQeKF/gcFoFFDBM +ejOC2uDlKq6Tk3JQETSf0xId0x6h9HAZrFjGG4FekcDRaJKKWwwNG2VLYlWS6hImTcC0A4TLGBHS +NQxFGrVxCP6Lv1rJEcgCUB+M2GSDTcQFg8OtKErddgeZ0ryTHVmpbnt6307Pk/0/8Q== + + + rCC3RKXHiXVFq6fcXsobcVI5yqQR2QjZBqbj/BgOITUaekmLxc2k06JZV5Jzql6HhIaPg2E3zHmy +cU7H7BWgScB9FJMTSID6qdKiavWtzHyqsKTbPcMGdlUSXrfS2a70jpruEDmQtFuD2dO61WehD40O +St5OzyW8sZrsaBbxeuXqent0XNLqcUCQ3nWzC8irbHklU96QjKGkjUC1vJhmBUQ5A3xwM7N2ZsZ0 +R8iWCJ3WrKGkN0Strpg93Z61c+tufj1d3EymFsxEZzBzwc2vhqmUoDS93LqXx++Xk968oFQZIYdU +4cneeBdsKyulYnW91jmar6wVqxtJZwaoEo55itEVlXqM7GD0DrdGWLBvENuHN38N8uEONiuIZUVt +e+ll3RrIRkNPtp3MjGzUKC6lmG0MGQ/TncFEFapbmeKKnZvltdoUzDudkdWGluib7iyeyQDNjpuZ +702fzjc2NXeULq1myutpsoV7utDYTBfnkF2KXirVl+rdnXRx4fDO/m8225cFtZpIdlkebKiD+A4/ +EVA3rDHYhBBKZp5kqVzlZOA5JhMHlpPOdKt30OgfSHoHUMNJVTh0csuesjg+l3QH5e5ObbA/XDq/ +efK+Su9A1NuyCS3UCIQhhBqy1nHcmXb3oNTYxQBVsxs5XBBgmJSoVKCORLKDt5kpLBbrG+niouV0 +yAd2OGTCQJAaFNmiVrNSs15hQbPAL33ykRyxJCgVwx3oznTCm/PyS5XOXnO0n0x1El4rXZrzivNu +cT5TXUmmR9nKspkaq1ZXSbSAJJJWVcyGYfdxVKm6s7h2Y3HzWrG+bmdmlWQfsbBTIyczXWzspivH +GoNLmBNOgPsAeqQFuWR5Q9CxW1iVE0PJ7Jdax+3UTMLpqQkkdsvJrSZSi4Yzp1szheLSwvo1KzMX +jNkIXLa46eZWdWusWyMkOV4s6c2kN0txXiRuIHvtVM/NDXMVMpZMeQ2KkVeqpjOM0h5DIJdQNhAA +OQbUkrVmlHwipsAJRYrBb7xcabPa2S+1d4uNLTwwXRgmKoiTK5LZTKSmE6mZSutoobaFYCW8YTiW +ZLmMLANM8orec1KLqNBCbbM9OrNx/KHa4DimN1vZcHPLCP1w9fJw7XKlt2tnprOF6bnV0/MbF7uz +B0gVIKHhjFSrh7dw0mPNbNZqa4BQpJZpD/HQEoRKerNnG4ODVH6hO9rLludijMeKRcubLtY2K739 +KrLL7MTZnJed4eR8MCwJcj6VB2RNV9p7sxs3Nk49VOocq7Y2907e7aTmovFSwlux0st2eqlc2x0u +Xk2XtpCr/qBC057AZxN2J19b84oruerWcOlKY3gKccyV5ofjo7LejlPQZtDYFVUfefmNUvtke3zJ +Ss3XmtsoEBg6Uam5+bVi43h/9sremacuXv+t7aO3dk/eSpcXrPSo2tut9o+my0vV7u7i5s3NUw9n +qquiVhXUoqJXvNwsAKo9fbo/fzZXWT165pHh8lkx2RT1mpsZZUvz1f6xVHU319pPFpaS2blq7xgr +piJxTdGr+cp6e/ZSe+FKc+5ic/Zivro9v3a5WF+wM91ia9srrAKpUsW1WmdvuHwBByYc5OpMlHE4 +uaAgys7QSc+miyv1/qnO9AXZqKtmzUn1WNFVjELS7RYb283xyebo5HDu/OLadUg40xkZ9hh4i+Fn +imvF2lZ7eKY3e6nUOA6kBVcyfM5I9rKl1VJ7xyssWZlZJ79QqG+YqZFgNA1vOpGecfJL5dZRzPBw +6ZJp9zk+JUl5loYRsEW5lc6uzqxd6S+e6cycGa1eq/eOHj97L2YG7GnYg9bMybWDe/bOP7h/4aH1 +nauZwrTt9WudXVlvqYmeZHStzMLc+p2DhQvN4cHS5k0Ufpzx1GQTKJoqrrSGJ+c2rs5s3DFcOHP2 +2hOzq+ec7JiXixr5VMtavrHTW7pY658oVDeHi5dYuchyVq4wNhL1cETRzFpreLBx+uGNk/efufrE +s7/9YS+7YKdWF3YerHZPimpX1gdWZkkxhwzZtuQCqeK0DSrMlmbytZVyG/hwMl1a45Vaq7vzvj/+ +bK62Hozo6ezMwuq1dB7xAjBeyNX2ALwnTj8oGo1wzEpAWZXXO+PzvZnLM2s3enNnLlx54uoDv2V6 +o3J9e3nnzo3j96zv3zmzdmntxP075x9fWb/+3Ls+1JoG/FaLlYX2+PRg4dJ4+fLizs31kw+Ol8/u +HLt68trjINb5tbPbp+9vTp9zS2uzG9d3LzzdXb6Zyo/L7Xkr2+XlvOGMveJqoX200NrpzJ7pLZzL +VObHK8droz0nO5MqLKhWK12cz1WWc+Xlpa37672Tol403Faxvmo4UFZ9gsP55XRxrdQ81p+9NFi4 +mC2Nc6UZKzXMlJdrvaOV9m5nfDC9ePrMlUd3TtwDtDTtbmN4fHrpwvLOjfHihe702Vr/lOXNra5e +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 +B9GIFQkrPGvZVlPTmxyf4/mUphcNs9xszl28eOv+R197477HnnrmuXf+znvvuP7Ayva1maVzttMm +e1lvo5N6fmlm49Tx83deu/Oxhx58z7vf9skXP/ad737vRz/58be+9+2XX37533796x//9O8+/V8/ ++97f/8Mzl+8ezJ1m+QLPZktw5W6tXmwuwkJcuHnP3Q888tjj73znOz/1mc/++ef/8oMf/9j7/uj9 +n/3CF176/g8/9sk///JffvHXv/71i5/94nt+/0+v3/tErbnc7W8vrp3qjjcy+Xa7NTy6u/PAfTef +e9Prfu/33vPBP/vA57/8+R+8+uqXX/rGp7/4xb/6+jd/8Ytf/q///b9/+S+4kp9++Wtfe9M7X1hY +P1UozwEwVcUp5xvTw4UTJ07icf7CxceefPJ3fve9H/rYn/7Bn/3xez/4xx968WNffenr3/v+d/7x +H37y7//z33/w41ff9/vvv/+h13a6q06iZyitYmGl0z8QxLzIOflUA8B98cLlp1779PPveOfzL/zO +c+9+4cXPfO5vv/nS17710i9/9ct/+pd//f4Pf/zjn/zkxU//xYXLD7U628lkP5tZTCS7hepyvjQz +P7ezv3/2jqs3n33zM+944bd/748++JFPfvKr3/r2d374g5defvn7P3rlF//08//+P/4d1fq33/je +hz/62XZ/Mxo3wYkUlYyRHZIpVaum0v1Oe/HM2cvPPPeWZ97+3B/82R997bvf/tbL3/+Lv/7SJz/3 +mR+8+sorP/nRN7/70s9+8bP/53/9zx+/+qMPfuRD9z34eKM1bxjQ21IspvC8YyUqw/7m5vrJq1fu +et3r3/T8O97xiT9/8evf+faXvvo3n/3SF37ys3/81b/92yuvvvKDV7776//2629+/ztvfuvbF1dO +dIf7qewcRZHNz6GgnNCKllkq5gej0RY0ydLy9qVrt575ref+9EN/+tJ3v/Ojn/70M3/5+W+//P3/ +/u///otf/epPP/bRt77z7U++9o35/GwiMTSV9Nr85un9s3dfvfHEw/e+8XUPv/vtb/zcZz76D3// +Y2T0D1753re//ZWPfvz9jz9+/4kTJ1rd2UJlQRQLHOsaatbS03kvN90ZXD534fVPv/4tz735+bc+ +9/4/eN/ffvUrf/O3X/nUZz75xS9+4Rf/9E9f/863PvKxD3/0Ex99+InXHztxbW5x3/NaleK4219u +tWfq9cHu5vEzJ05dOnPwhkfv+6+f+uhnP/viX37psz945fs/++dfvfT9l1/63ndeffWH//Kv//zq +P7z6ub/6i2ff+oZjJ8+VajOO17LdmmcXRr2Z3e3jt27ec/3a9WuXL73+qcdefPHD3/3uN17+0Q+/ +8tJLn/vSX3zn5W/83U9feeVH3/3xj1As3/r4ix977Imnx3M7ipxXpHw2M67UNjS1ktDzpUxzpjd9 +4fTBu37rTZ/51Ce++Fdf+tAnPvz1l77281/+4lf/+uvv/uAbP//ZT7713a9/5CPv/9BHPnjl5n2Z +whByCGDlpQeF8mypPF5b3d3Z3L1+9dp7XnjHH3/wD//sI3/y0U986Ovf/Oq//Ld/+7uf/+yl7730 +V3/9mV/8/Kc//umrL/75p971znfPLRznhSyMWyyi03GL59JWsjke7vS7i5fOX3zXb7/zA3/2gT/5 ++Ee+9q1v/Pyff/HzX/3zV7/1tZdf+e7Pf/EPf/+PP3np23/7wx++9M2X/vqF97zj0cefaDRnLbtM +MwpSK53p5HPdSnF4cPT0W970lk//+Z9/7aWvf/lv/vLVv3vl5//081de/dH3fvjyP//qlzjP33zl +c1/9+he/+a2vvPDCu2/d9/iJSw9aXi8QkBnKZaiExCepqKRJ7vLi9t133fPmt7zpw5/46Ec/iWj+ +2Ve/9lf/+t/+9Sf/+NOvoey++VUE6oMf+sOHHnrg9MmLheLcYHgq51TnhovTg5l+s72+sbx/cHR7 +a+Xc6e2nn7r1/POPPvXkrQfvuzro17NpW1cNntdF3opFlFhEpmKyKthlrzqoDhZHC6uLCxfOnjp/ +7sSx3eW7bp169o13vfUtDz/+2ANPPPXEnfffu7a1XSg2HLddKEN791na/H9Jeu8mOdL0PvALHAdo +U96l9z6z0lSW9952dXW19xZt4NEABsDMwM0Mxu9wdses5S53yV1xuaJI0S1FSqJIiSdzF4qQQhFS +nIm7C/2hu49wT2IjKhBozHRV5vs+z89Uvu/vxRICTUgsKYBwuXvj0bVr1yv5wrBavHG08ezJrc8/ +e/7973/49//yz/8zwM1//U//2//xn3/5R7/7+O17y+srtpMzrSoL1hVXCUJTpdTt6w8fPXrZGyy3 +Wv218cLJ1srje9d++Xvf+Tf/+q/+63/7L//n//Xf/s3//Fd//etf/cWf/OwXP/nsuw== + + + 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 +PXTD4WD5OKnvdEdnu2efDhZPap3j2d6z3/75f4FDedHs+OGXD17+Yufyq+H6RWvwwAl2IGhni5dv +3v9xf/JQVIK4PF3sPj199OX5s68Prr69fPmrsHyQVM8tb5or6JAHlc7N0c0v9i+/60xfdRav20RU +nEzmV4udG04MGb4Epe1VDmNC7mfN3kOCrtFotfe8PbiAPQ8qJ/XR03L3qrd42uifU3xAMS7Ul2ZU +g3hRrp+2R4+G65ezg8/G++/h+yq140b/rNbdGS4f9GbXzdFlrXNwdvzy3/zN/zQ/eCEo5Vrr4Oz6 +d8+uf3Vy/f35s+8bo4er9ZO/+sv//J/8V/8WKuXo4RcPXv3q8Pqni5MvTp98f/b0Z0nj9Lsf//Ff +/Iu/qQ32c5Tjhju19oPh6uXxzdfP3/9mdfLJxeWn/+rf/LeTvefIgeX+69HqGVLuyce//ubn/+zt +t3/d7D09PX798OYrpIcfz0t1JNVpd/J07/KbJ+//5OMf/9P16ZfPX3z78OadFQzLzYNq5yys7MXV +/c7owdN3f/jsiz8DL1QbR0g8w+nhCG60gP0U1AGv9Fu9R7tnn6lGxXTbpdoOQgxpEdUgQfd3Dz7+ +wz/71ycP3mtOf+f8u9nhF4PFi7OnvzM9/jpqPorqF4Y1aDQvVbMrqdVG67A7fvjwxXeP3/7y4Oor +G+rFHu/tffybP/kvnaDf7h/tnb7fO/sqqB7g3Dqjm874EURpo3Naax8xQqDoVYAzBtUaPn7w5Cff +/OKvAOYvnn/74vWPvXDU6h0Nl4/H61cn1998+Omf/uYf/itgyLMnn//JX/6rk0dfwhPJRhdmAX55 +MPtsdfrT9em3lfrhixdffP3NL1vtpYpAl3eC6lnSvmoNHj948dt670ZU6uXGAfgUJRAmYPx1tXcV +Vfb6k6vf/aO/fv3Zz3g5gehSjeFo55Pe8lVcP1GNsR+svvrqD/7kz/91pbrn+FNkVHv+vL/8+OTR +zwx3xEuJqjd4qSRKUVRaVVsosVcI03j/Q33wVNO6R4fvktqMk20n7PQm14u917vHr9YHT04ffOLG +owJjRclkunw9Wb3tT5+DxcLaerZ69NWP//jp+1/Ien28fjbcedWaPNq5+Lq/87rcPkeUv/n6tz// +7T9Jmsts0QlKQKSzUuMASbt7/hkm7er683/7P/6vhxfvwnj66Nl3737yl5dvfn3z8a8++fpPL178 +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 +R47f0p8+1uhtSXLOWMv6L26B0XuNibWl7VPHTl25cOsHn3zklZe/8PO3fvHr3/7mzV/87O233/6v +v//9N7/7ty/961c/8olnNg7dXG6tI2gYRYJRcOVKMhXJdMFC7OydufmWS1euPv74469+5atf/vo3 +n/viFz767Ce/+o1vvPHLX33hlS9/+5uv//3vf3/5q69/8BOfPX72WjIzWihNdwdrhdqEpudy2cr8 +7Mwt5/YevP/Oj3/8g8997lNf//bX33nvvW+/8ZMvvf76d3780z/96c//5//+3z//J1zJ7779ox/d +//hTnfG1cKwFgEmRckxP1yudlZVV+Gzv7F657bYPfewjz3/hs09/7tMfee7Tz7/8hR++8eNf/PLn +v/+P3/7P//6fd37z3kc/8cnzF27PF8ZkvsiS2Ui4ny8t+zAd88q6mgbg3t05dP32Ox567PGHnvrQ +g08+9fJXXvvBT9/40Ztv/Plvf/7Lf/7jl7/6zW9++9uXv/S1nUMXsvlpQSgFtS4vFMKJUT3aaLdm +Fhc3jxzdu+999z721Ac+/uxzn3/llR+++bOf/+qdN95++5e/fvdPf/nj//p//we69Qc/+cULL341 +V5q0OzngRJdLcBgrJFWKTqiBUj7X3dg8dO+DD9z76INPf+7ZH731szff/uXXvvutV177yjvvvfvu +b3/907fe+MOf/vD//Z///Zv3fv3c558/d+vVdLbNsqC3cYeDRFFZ5OOV0uTk+OrRw6fvvOv+hx57 +7KUvv/zjn//sWz/83le/9Y3f/uH3f/uv/3r3vXffefetv//333/6y5+/7+FHu/2VQmVRDbZcLmPx +s8VM8HRE5KIRvVytToEm6Y1OHzx28t73P/jZ5z/7xls///XvfveVb379Z2//8n/9z//86W9/++wX +Xnz48Udvu/0eXW/yfIUjA4P25Pri5s1HT1y7ePaeOy8++eg9r33lxf/4999ARb/z7i9+9rPvv/jF +T169en5lZSVbaIbjHQwLexGFpYIiE9D9oXq+fGhr56477nrgwfc99PCDn3z6oz/44fe/94Pvv/qV +V15//Rt/+stffvzzNz//hRdefOnFi9fuWlg51uou+v3ZeKRWKI1mc41Uqjw7ubSxsnZwY/nuy+f+ +9dUXv/rVl7/5ra++8+4v//DXv73xy7ff+MXP33vvV//5j7++9x/vvfadr9338N0Lq1vRZEP2ZyUl +6ZfC1WJjdnrp5N6Z48eOHzt08K7rV15++YW33vrJ27/+1fffeOO1b33t52//5N9+9+67v37rN7+G +Znnziy9/4cq1O2qtGZLQSVwParV4coKm4jyjR7VMo1jfWV9+4v33f+XVl17/zreef+mFH7/xoz/+ ++U9/+8ff33rnJ3/8w2/ffOvHn//8J5///HOH985p4QrIIQArf6AcjjWjsdpgbHZmcvb40WMffOqx +Tz/3zOc+/5kXX3r+xz/94X/+93/92x//8MYv3vjOd7/ypz/+7je/e+/lL7/6xONPtjpLqC8Ixs1h +Y9xOEfUGRCFTq8yUCt2D27tPfODxT33uU5/54ud/9OZP/vjXP/3xb3/94Zs/evvdt/74p//499// +9o2f/eBXv3rjp29896kPPnb56rV0pilKMbeHhNIKaHk9VIhHKsvz6w/c/8CXvvzlH73x429/75vv +/du7f/zLH99979e/+NXbf/3bn+F7vvf9137449d/+ub3n3rqyZPnrq4cvFX0F00mwuNSPC4eRwWX +HadxZbQ7ffPpM+974P4XXnrxxVdgNj/3wx995x///Y/f/v53P4K2++kPYaKee/6ZCw== + + + F25ZX90NR1rlylpITrQq3Xq5UcrkxidGF5fnp6f6W+vTd1w/+dBDl6/fdvLWc0fLpVQwIDEUi6IM +hooOG+mwES4HQfmkmD9RTpS71c5Yt7Ozuba9tbIwO3r65Np995x++IGLV6/ccu36tVPnzw6mpsOR +tKzkwjHQ3iXEzaEejsQEGudAuBw/dGZz82AumWrn04fWZi6eO3L/vZeeeOKOb37tiz8DuHn7zXd/ +87NnP/uRs7ecGJ+eCOkJLZinwbr6ZAxTZCF89ODpM2euNFrjlUpzqtfdmJs4e2Lz2Y+//1uvv/r2 +O2+992/vfOs7r375ledeeuFjz3z43sfuv3Bke7PdnghFKm43T5IhBPVbbOBrcLud8rholVNLidjB +5fmHb7/46ueffeXLL7z8hY/85If/+uc//+5zn/3QtfOHjm7O9ZqtUqlGELzTgTN0CD4YrsKHplSO +EmOhZLPcXptZuHLq8FOP3fOpTzz6r688+9ZbP/j33//6L3/9/Zs/+cozH33w8qVjjVoRxzjMF6DI +qMMOksZYomwx+UjUH9MKCS0zNTaxND+7t3f04q1nr1+59d7bL33hsx/95jde+eLnP/X8sx/69Mcf +fen5px+9++qp3e1cukozAY+X83pFAtdYLprJjAa1LOnjE3pqZ3XrrtvvfPbpj334yUfuunb1o08+ +9v3vvv76N1955J5zH3vw+kcfveeWM8e2Vxf7rdFsttvp7+jhttmMWy00jkUQj+iyExjC5uKl3ZW1 +u65e+OIXnnv5lRc++uFHn3r8vuef/cj3v/u9Tz/99N1XLm8srVTLNZ5Rcczv9ihOO+O0oV4PjXlZ +Chc0LZdKtTrt6ZnZVUaQUR9oS86DcG4360Nlkgw6nfTQAavd4sMQhcQDPkSkMT9jfESOkWPhnB5M ++RAcRXw+L8ExEsv6BX/WjapWO+FysrixT0Gzu4gRE7hajPBJqIfFUVFRwaSEeV4NSCrtwySaycai +pXxmYmz00JFjiyvLiUQC5tHuwK12DEwHSGWXS7Q7WIeTkaRkKFTkuDBBKAKnRbUI2NGoFswmYulE +sliqDiZmwqFwKhIdbTTquWyIV3CEA9eM40GWjeuxLs2l9h9wgNoJKCWFz+hyvJkrlxPpdFBLasGN +hcV+I1/JRMfajWS8yHMqz+k0nfKhmt1K2iw+qxmxmNxmk/efSVYsk/SL+UpukImWyon8HVcu7h3c +qqXjg3q1kS/OdFuznWohWfQh5PCQxTTstlnw4QOO4SGX1YIDdqGInyHCqpyNgM2KZVOJvMQHfB6f +zKlJvRhSEoVUeaw1OdGeUAUxHU6GpCiNSU4HM2IhRyyUy6PKcsnvL7JsGPXyPgQ6NxKN1KCpJSHT +aK7PLZ8fnzzml2OY2xOW/ZlwUhODhA8Ak4AqkpRSs3csEOxZrfRN/48JhCiBR9wunsZUnvRH1Wgm +kkqGY9l4AeQ77yNFgg+IKU3J61oprDddLugUJRxtS/7q/pvsUComE+Kwk6iHp6i4IGRLhfHdY9fc +qOJyg7ZMcXxeEIvgK0ky6kH8MAIYajwrGxqyw2fEhFjMOOZVGCqmBWqSVBDYJM3EjCApB2Vz4F4s +6EUjMOYcncJ9QYsVdblpNyKCsCExBfGwTidDMglWzsmBot+fQxDKi1A0KeOYSNOapGRQXAXvT5Bx +aKX9xuY+D2hdrzeA4yGC1GhGd7pYh4NBEMlmw10uyukkSVwDjyxLeYZJcHwGwwIBJS5K+vCIbWTI +7XX7GToOtE6zeS08QVIZs5kADexFBIsZtYx4XFavw+JxWNw+DxP050QuROEShQddLgXct9XG/HNr +ucMu4lgYcUs2M+40diqJNofk9oYcLgU4jqL0Qr63u30ikyjazQ6R8EtURKR0Gm4HMGrIZTb5CF/E +bEL33WQyjSAEFrLbWfhAy3u8KlwPB5Uf6fp8AbiqgFbJ5GY1rR4OFGmf6nVzXhcz3l3jaB3gDr4K +o3IkX+XEmuKv4mTUhSge6Ogb4bf+QDsQHk/m1rKlldbYnhYZs1qB48RipufzKvv3WS1GooWiqc3B ++Ilm5zBJpYcOeCwjSCE9hmOhA0MemE2Hg8PQoF+ppjMz8di408aYhlyEF0hTtNtoxK14kSCGx8E1 +w89podHhYXTE5DaZXWaL22L2eMG3UgnOeHA9TlGJZAy00AQvZlku6/PpGB6ljGXtARSLuL2B/fut +Q0MO+FGblSGxMM+keT4L5VfKz1Xq68Mj3pERN0w6zaWVQFfyN+BrUa9fZMPNxiwrpE0mr9mMWK2o +16sk0vPB2LgcqLNsIpmshsJ5D8LD37XbATCDCBoV5Wa2sOODiTD7EDcY6RZ8ld1BW204VJ3XFxTl +oiRWrEYwGgVQhmEaIKTPF4QRc7kkkohrwQbFxU1mxONR/f6mGqhTdMqDhkmmYHcqZgsJ5edwUPuN +nQsOm9lrNXsdNpzEQ9BuPjQAIOl0yvtuxH243X4ECbvdRuYARaW8qG63gVTQEDRoJOmZabNNgLHS +I51Epu/DNbhTi8lLYzpU4NB+x5CxV50A8454ApHgwOvRzWYMPlYrMTzkttpoGGFjgQERD+qDUHTa +7VFZNqLpdZJNQm07LPSIsb4dJdBgrbjMMVHzCMJQEYYvuTxBh0t1GmlRWTU0JgfaiDdIECEwKdX2 +oVh6DidSBJV2OBWTCVWlbH/0CIaGDux3ElScptMil9X8JR8aBPV+YJ/dZSNmJw+RZMxsoUkqgeJR +ks741W46tyKKNauZtlkoH6pCa5hGPF6PSFMJXqrzUtOvjfJCyYigRP2SHGPluMmC2uyckQIqluVg +Ixwba/R2UvlJhk/wcoHl82qo7Q/1KK7gRiOOG/tbodndnht7/Id8JB7D8RjqC0liQQnUh0dQowxQ +Gadjfr1LCnm7W4J/TcYqi8vHRLVihjFEFAyHUg+BJ4Kpcbl44MeD23vTCztQWijAGplkmDxN5wSx +KiltqHaejYWCZQThh4fdMBc+n0oxCUGphxPTqjYg8Hg6NR7U63AvBgW7BQwLAbAIQhE60evVGDxU +Lc3SbApm0GzCLGbGg4RdHt3l1vRoH0TXgSEXOBQKqN9OuZw06lUsMOlGRGSQpjMAAi43XFUC88U8 +SHDEjNocHEqkA6FeOjfFiTmHUzLyzRDdjQRB3tNMArrDZCZ5rshQqf03WYf2g/7QVHVUEKqIJ2Rk +L5socBM8l4Dr8XoUh1Nw3liI4kECRqQJBiMTmZw+Wmsv+IgQXDnL5GgySZMpikx5PBr8LWBVr0dw +OgE2jcXYiC+eyKzMr91dbu66EA0GgRczGG4EpqHehLHBSquHghVFKktimSSiToexBtVmFLZjZBgx +j/iGhwwm8rhFTav4sDDUKi9kbSA/HEAxorH1bD/8l5jXG0S9wZv+xQQXQPj8BK6bLbzJIo6Y+f1D +vgPDOMjI7Y2z06unR2yk1SnQQk0JT8UKq5nqejAxzkuFsfbKifP3+Jiozc3bXKIHjfnwFC80A/qs +zaUCJng96g1D4WeYNMukCQIGJOYj4oAkBK0xYozk0xiTYKSipFUIJkELeb/ej6WXRKUG0M0JSZQw +NoL5QeqoRZwKeXENmJckDYwaGnYNDXvsDg7Kj2XTsligaWBbAjgFIBp4HLDdhQS9eJpia7xUk+SK +7K/BbUYiNbeHt1ox+CrAEIJMUnRaD9a2Ns7yQmrEhFosmA8NU1SWZYssVyLoFAwd2N5jRy+lMj2j +dC2Y1y2BphLEMrShx60AqMpqhaQjwybEZPbZ7JQbkQk66Q82UTzE8umZ5VNKqL7vgGvfPqfLKWN4 +hCDiAa0Ri4+5nJJlBKUwjeGSB4a8Nz4ofLzeqKa1o5GuIGYluehGFJOFsDs5l0cmyBT8dKm+ObF0 +jhWgxuR2d61cX0fRkMXKmEyk1cIgHpkmQ8CYI8Mekool0rOx9KyPSBjbrzwBXq3nG7vdqT3JXwaw +opgijDnDZZxO1u3i7Fb6xkY/Dfh9BFSfjTY2mLgkzBdCEdXlAHlAW6ysxxtcXDqnKrl9+2wmEw4o +qiptEs8QeMrtBrr0Oh08fOHQAZvdRoBWgaZwIxrvr4NESaVGA5GqGfyRT/PRCYLPBpOTtFTEmYSq +1dbXbjl5+SEfHcHIsKI1wpGJaGQimZxR9NFhC8VSscn+IVkpHzgAMEJDJRN4MhjqDabPlhsb8Xj9 +6IkrrFKkxWw8N5mpruTqa8XWdqFzWAp2CSaejDYef+xjg/nD0JJer4x4/V6fzvKlaHxWlBtOIw1e +A9DwGuE5aZzM+ogsRRe14KgW7rk8ksnkwYwVQcbuDMSn40QCPiybk+RSvrggSbmwXg1FuiimC1LZ +r/cEte6jUy6v5vIE4GpBNd3YhBtg+YIeGWXpFAhFLVRAMb8P9dNUBOrKYedRn05ScZBPOBWjuAwn +5YGCoYttNgrUu9VCMHSS5dIBvV2f2MO4jMlqpGQASPowDbQZlJ/L4wfGYUBtYtDa+L797qFhFMrD +49YoqiiKddAnolwTpArNZTEqzgg5ELceI3gqwgl5Ua26nILIRi9ful9WMgAaJpMPQVSgY4ZOkGQY +tJbTyfNcmuOSFBWBi0lkJtKVRSncDqUmOKlIULFgqInjEdMIZrWwXkQniLTANySx43brFitPYOFo +tAfKB7Q03NfIsHd4yAuXR5L5YLifysyCxbCCbTF2kwkoEjQ2hdkkj1cXlWokMQBNK4upgJaw2b02 +B+Fw8kaAjM948Qq05URkTikSfMqDh0LJCSU8Gk1OtUePtcdPJYpzPJ9Kpfrh5ChFQydqPlwF3B6x +kvCd9dqqqBg5OT40RBujF5flYrG6HE2N5XLje2fuYv15Ts2VOuuNwZHmxJF8cz1dWaWFAs3F+53F +l7/42vFb7nR7JRzTRLEoyfVEailX3OKEqqrWjSbFIsZGYDzDyx01PJ3Ibdd7N4dTswj4TUwNheoo +Fra7JBs4UDIqKmXQbDSXC4R71er8lasPTy7c7HSD9ynqyUktPiVovUB4MhybA2XiRvw0n7uRohM2 +9ji4g06bER2AePypRF+WC1DbVitLk1EtUGGFvKDUlGCr3FjPlJZ8RNjlBlQkbFYKdJ0SqMbzc9nm +Li1XeX9N0bqg3+x20nhXqLfgL0bik4nkNJTKkBHn7oNfAQSw28GqFHihzAklhjcCbVipIgbanFKD +RrbdCMPHySTckT9QCev18bE1HPdDPQNYSSJIhTQUmMmMDQ97RCEn8Cn4RZsVY+lwMt2LpkdpMadF ++qxYZrl8MNRm2LSRZGWk5iZRX+RGGoBmN0LkEn65kklPAi8gHgVFAw7g8RGMptIEmabZLMA+YBrQ +itsj33STedhI2gFxlRaEguwvw70D4UYjbfDlw8M2mw2YQoZJcQLm4zHwSuH4VLV7NBgdDacGYrCh +hDv+aC+anZaDHVAXg9rSfXc+NTZ/FPQ5mBcUTIo3ICmVQKitam2bg3E7GIKIOV2y2Q== + + + THkQEYR6JDlIFxeThTmKDatarja6biw2VvLGXoNYP1tabHV3Jmb2to/ewUlxLyaGQk0jN1WqwFWh +UDZkRI/1Y/kZJ+I3mYlIbKY5dqo1uRfNzdF80Usk3ChgUTFXnJO1GsVnGCHDSyBf62q4CTweiDVj +2W6jtxTLDQhCbbZXJ5ZurfZPcEpT8LfgY3cp/e761Ts+kC0MLDYa9CeGl3G8lEwu5ooH46k5Q8UJ +WTVYAxljASHqYPTExNTcmb1zD5db2xgZXVnZm5o+Aj0uiOlcbbHU2y2PHhlfuLC080ChdhhUKM2E +JbVAsDFQccCbBJO3G8EXst3BGtvDzTiCAPWH3B5jC6ePSvOBdryyEcos+aiMj9BUrSIoJcAxhs+K +StGvN7OVRS3SBg0D2ALWzGZj3cYKB9br9SPegNlC2GzgjlW71ecGT01FgOVDsUEkNUMLZYor+oP9 +SvtIprBud0jDw14fFmf5MkFlRKmMGVI5TrNQKhVAQpqO26zG20wjsQcBc5fhuEJI74CBvekmk9WM +WUw+8wgKUAbOguPBiWdYrkCRcacdOFqyG3iOgcyjuYwgl9PF+VRhYWL86G13fCgc77BiNl/fjGVg +4tqd0SOjg+PZ6podUcxmnGaSNPAmFpbEEs1mjHKyQElns8Vpgo7B/YpiNhBu64lBsrSoRcdUtTw+ +tnXlng+7vQoMUaqwVDQaf6HY3Cg0NiKpKRTTFAUoqW2zg7WnCTIGBRZPz89vXW1PnfDiYYedIemo +G9VsTsFsowBkRLWVLm3Or12LxEfDsV66NIMzYbMNw0g9FOvMrN18+Z4nT19+uDdznPfnM/Hq9sEL +aqRpsjEYnUjmp1PFOUHtpAuL/cktNVhwuQPZ8rYem6aYvKw0RX/d7VWBcEuVhXp7Ha4KDDhIdEWr ++4MNXina3LLHq45OHcpVZz24osdavekj4yunWhPb5c5mLDvD+4scF/vEJ18+d+kejNJAHOqx2VL3 +RL51WAmMWm08zFGvvbyxfXnffjCtQUnrpRtbzbkznfnzkcKyG48GQ5WPPP3i1s45i5UGVxuKDqq9 +Y9snHmiPnTKC44adEh9jmOSIGbfYGKhYVqgJShvcGdgEt5OhyBDNxBFUgy4utncbE3tzO3cuHb6v +M3GS4wsHDqC90d1QuGc3olZx+AkYAaCJzuSZRGbebaR/SKBXBR68jwrOAvSY3a2DoEVxI4Ub1PsQ +6B8TTvh01BugyATIbB8aBa70IqDnQwCeJBmAqXRAcSIKTofB40RTE6XmMs5EeLlYau9ma1vRzEJr +9Gg4MWXE4doYAlNlJev1wcgrTiPAU7ZaBY8nEgDLKRUBMCU+q0dqKK4gPvnGMrBMobban7t5sHye +55K93nq5ueyjdVBfsex0KDHOStVCda0xejicGAOVwgvFVHY2Eh+LJgahRJ9T6l4sxvPQuYmhEe+B +ERTxaunsbDK3mCishJNTJB0HsMpV5iStjPg0yV8FAqq1lg7vXTt96/1zazczUrrdnLt2x2OpnJHs +na9sHD71/usPPjexcaccnsDoOEwNS2ey+QWbkfNG+IycQN3pVnAyroX7Rj6AkcjN+3wRl1vyYmGM +TimhVjgxmaksBcKNZmf+8IkrgVCDZKI+wk/yGULI8f5CobZw6PS96cK48XgECzX6e0Cj/lDb7lTs +TgFF1WxqrNvbBlrEsAgjFlgpz4glNTyuxsZS5dn+7PHzd3ygN3102ET5iFgwOlC0DsVmwEONjDAA +KX65KEnZffsddpeohAbR1Ko/NFBDYyCHwGvTjAGVPjy0fvjy2euPrh65Olg4pyenAepHzOB92Mu3 +fyxXmgep6fPFNL2H+uIMW0jn58HbQh8hHiGfH8hiGmzjPvCAZpoW65HcWjy/lsytEHjGi4RUtenz +6sMHnKYR4kYIKgVeEkSR02nsAOoN1kHNwrUZN4sHoTYCsSlZNxYGQ2nJeoM0lqhlpECP9wOOVUg8 +wjNRmgpDCREAoViapsrw8WFZH54GmHU4+GppIV0YGKl6Fgy8sCDXSs2txuBorj6va/nz5+6fXdrz +YP5Ebnpu/crk0qVK+/Bg5szY/FlFb5utVCDYAqvrA8L1KTCkJFOS/T2oB8FfGgYQNs6+iQT1Fs1n +cSbFCEWczoh+Y3ckI+ZYMa9HR1k+JYnJRne1PXG4OXGo0JifWz49PntcDdb1aKfe3Wn0tjoT21pi +zI3FjdhnlxTVO7n8vMlCjZgIXiyr+phf64JeEqQ6ALLbJVNU3GtEUBKsUIympnszp6vdI4nstKoW +dnZPv/8DzwBvwhhiuC4HeuXmzsET95y97anOzEkoXadHiKW7wXjfg2o3DhsiLXbeh0XAmKC+sNst +8mIONXKJSZdH4+VmIje/feL6nQ9/6sztH4mXlq1OmRPzMBQeNAgzBSxG4GlJqgtiHQzO0DAC0BSK +TdNGMrwCJgjmDsjaD6KdjAACjE3u9AYbyex4ODnNym1KKDNiBaikO3Ueo9I2u6RFxmWtbqQr2Hi3 +RzPy7Ycx1KcVSguoVzmwz7T/JrMLRsDYBD3BKw0Ujw6NsE6PDq7KbDKegDnsktPpd7r84KEwLGrE +aBPRTGWRISLZzBhBhq12Gm4hnl/V4nNKqJ8orUIfAdvKxnOqJsnm4O5A8wNUOh2C0yF6XArYFhh2 +t1MCXQqlfiOWUAiFWk4jrgqBibA6eLgSVizIxpEZ1Wis0WivBUMNnk+Pz+5NLp+pjW4GonWGj+F0 +xIvpCBJQ1SqJh1xODpShEhjPFA5WW3vjc5d8RvgzyzLJYLgN0sjh4sGee8EyBHqa3gf1y0v5zuh6 +s7VCUyHCp+SLUwubFw+duf/omXuv3PuxWm9Xkiq3nrzjnvs/IPpzKB5CyQQLliG71Bnbm56/FcMz ++4e8w4AhZEqLjKnQyFgMuttmYUBsgxdzG2ceyf5gO6B3/KDumBRBxiUxly/NDFbP0GLR7Q6UyuvN +9olMbn5qbm9m5QwnF50uMagV73roo4Ho6MgI7UF0XgJN3qe5ksujgtQH+tCjPXBwdicriMVYajqZ +n+tNHj5xy71L2xc4fzUUap88dR18nxtRA6FOIj2dyS2ksku82DLOw7LTDB0FoQW8NjwC+jmYLi7V ++rup4gIoNAzX4omO08XbnRyUFjTB2rF7B8uX6uMnKL6w/4CP8EWP3/wALaaBEaDgXUgEQZNKYCxX +2s6Xd4eNZ1wOl5Oi6OjwCHrjcDfJA26dLWmRKUFuwi/arbjPp4BNtts4FItSLPjZxszq2b3Lj7rh +jrgUigZR1Fi9puptNdIPpeb1zBLBZUkiWizMsjxYb78AOC/kJbksioBUaY9bAe8/NGQfHnYPDbnN +Rto5dSOyTPK4AiQeI7Cgy8mIYt4fasSzE/H8dLmzHYqPgReOxkf1WJVkAzSn0awuihlBygW0ZiQy +joCsdQksFcbwoMPJgEDluQxFGxF/Xq/OMTlw1uCJoNk9iALgCYRlsXJAzbxQSmWmA6E6jgcoIhAM +FwKRfLzUb05uj82dKFUXC4XZ1bWzheoUxcYi8X6uuiFq7Wh6JlNeV/UprzeJolFFKQtiFsSVA7yh +jbshHoIMlQZ/wTBFHAuDuh42OfcP2RBECem9aHy2WN2Z374NNFhALa5v3aonBwBfTpeA3NjcwTDZ +SHS03FwdsTBmEyVwZUBFm4MbGkHg43AJvFgIhnsYlLpXhNaj6ZjLJYKQc/tUxFgFmmt3D03NnQDP +Jcm5ZneHYTMet2y3stYb4d52G80wUaeTwcmQxxukmVwo0pfhYsIdTi7z/kq7vyNIeY5PtLqr9dFN ++BOMybp9QQ8akP21cBwc96oRNAQGUGuF47N6dDaZX5TVls0egNqz29hOc2FqctOIiTPjbiQgqPVk +eaXSOeQPdoeGfXqwlst1zSbkwD4HoAEIg0isJ/sL0AgOG+vxaPARxDwvFxguCb4sXV5LFlZbg9Pp +0poW7SKYogWrzc6uX6v78KjTFQTT6jQOy6OtVtJiIcwW/J/nMvwzDY/EU5g3QvkisWBldu4IycU4 +Kd2aPHT0/CPHLj7emTujxsZpLhlSs4sz23NzpxS16kYkp1tEjbeNYRwLRvQajqkuFxXwZ/1yFgwL +TiS9vpTdEbhRwITDeGdHjYwANuKAouBuRKkhCDXwEV4swAvJendhcm5rcfP06uFLa7sXdo7fNrlw +KlNfw5lYpTy1uXGWFxMerygqBUVtMVxNUUcxLOnxBICLwVx7PSrq1TEsgaFRD0gsRIFB5tmMqJRY +PuZXcz48QFBRkkkTTFpQq5perzcWT5y6Uw6UJTkPzoLlc0qgEotPBgIdhs2BGI5GGpXSnN3IwfbY +7ALi1SW5xoslXiiQRCQUqgLqwv8LOgoseTK70B4c600fX9+9Dv8Mvd/pLK9snPtnuJwPDeDGUhwG +RWSOixNYoFSdFuUsgBgUHrSbFKjHi4vNmTMr27fHE/3V5WNf/voPIrG+1aYwXB08RaGycu7yY6cv +PiEHRw8MYdA1oliEX4G2MhkZg6zdrvnV0WB44FerqNcPwsnl5F0uwe7kbS7BZBPNxkEeqhZqi0rO +4WLARNvtlNWKW421ZzxmLOcA3o+TTE5UwRlVwXDlKgvR3Hg8P1NobYUzs5LeAYXc7myvbd0e0Js2 +I4LbCD/hmCyOxxBPAAgRWNJIJjcOR2OMe3driMtPoFpEL3X6S6Foo9ZcmNs6l6vP5uoLscI8p7Zx +OhUOVjZWTi8uX8ZuHKLhcvMUlRTECsNlZLlE0QlZyubz4yQZAq+NAHqwVY6v02zefiP82ZgFGw09 +DrRy4224hHhDDJ8U1QLMb72x8OGPvfD8q9+emD8KfwKwGctMdQaHK43Vsd7O3MxhTctpgaIaqCr+ +qqq1SSpvtynDQ8YRS6YRFErL6eAtxjssZHjIZTFjNgtBYHow2OqN7swtnbQ5WVA1qHEwny5p1XRh +KVtaVYNNgtR7vbVydd5jpPQLBAGK1HgFBsY8l+mXChOmYa95BCPwKPg7H6pZLLTTCT2lclw6FG5C +YRiPB6mU7C/F0gNVbwpSkRcrAN297upgfMdm4+AyGDoGTOp2Cj6vQpNhH+qPxVsceOQRD4aC5gkL +ctGvtzQAEKVE4IFcun7mzG0Aj5xQzxd3C+WdUKibSg1iiVGSyYIIV4RcMTcBbTU07L5xZkFKlMbm +Fu+cXb0uq02TiQTLAMzucXH79tv2G4doCA5niCRzYLhwJooSmtsjHjjg+Ce4sUI2UZgD0wdeO55f +iqTmGL6Qyk7qiRZC+dVoo9zd6owf2zh0x+kLj996/cM7x+/lxAwvpEFmoCi4zqDFSg4Pe8wm1O0C +RGVpJuU0cnI4oBKPS6DwAE6okpZu9ZaPn7ljsHAIgX8FcswvlpuHAXVVrRaOdiS17vQoFJci6KgX +DQCkM1xRlGrVxnazC1a9Y7UJODALC6heoei82xO0OlSrU71xwJ9MkBFoVZeLg37xIA== + + + QjjWXFg9tbp9vtxcWFg5vnP8YiBS5oREODGqRVqLa6e7g0M4GUV9ciCQXl4+kc2Owt8CB+3xBI1n +iWicZdIoEvB6FLPJZzGC8oywR7hHi9kHkiAa6yfTk4nUQJLT6xu3trpbGBMRgrVy72hr4nSysKiF +WnOLp6r1RYApGJB4ciIen5DEIpCj3cGYTN59N9lcdg5DDUweGrabTJgXCaBoAPSS3XhjIlJE3GF4 +Va/XB3yaBp1QKC8Fg8bbK7gemowF/EUjw20YATj1uEQCC5G48Y7bavE57QRN6A4HADtushAgJ2Qh +KfERWUpyXDIa71689tj2oSseJEAQSVGsAKdnCougYElM5pjQjeRngiTjxuNQriRwRT0MOjxpt1Ky +GIuEyqBwbtpn83gNmgPlYzZOwsKtNsrlkYB3TCOIzUaAUAGUA0fjQVTGcFsJgo6zYhFaL19d1vTC +ztELsys3V+srvcHuzOrN/bm9RH6WEzLZ3EANFm+szFFhBIaHjBVHJGYkg2ka2JZcrbGB4mGzGUU8 +IsOlMuW5rePXj194qDO2e+nSA1fueiqc7BN0kmKyJJ0WlVokMV3tnOzNXdJTk7yQajQ38/XVYLSj +aA0Q0ja7kW8cCPTBfewfcu0/4Bo2kxRf49VRginciOmTOTabKczTbBT0ZCozevjohUc/8PSxM9fT +1flgYsBLpdWty4ubtyqhko8MhCK93uBgubqg641stifLCZgOcL40kwY9Y3cYZ4wap+d4NCO9AQdj +GBg6YKCWy8EqclEL9hiuTJDpSKS6tHIsmW7TfCSS7k+unls7clt35mS5d0wOdV1uJZ8aP3X+PpwJ +WWy421icDDbfCNCzWzifR/MLuemJnbWN8wcOuA7st8H3AwkGowMYEIJMAHZVyjMr6+fAC6O+EM1C +O8cZJk74tGAQUD0OMM7TYUnOOh2Mw2GsnLGaCfgVxCOjiGIacfpQkefj4Iag0gql8fm1E9OLe/Hc +XK21CUjFC5m5lbMMk3E6ZSP/38Y5bIIXDYv+BsOmoKfMJi8gIdSt1yNTRJjEQP8Q8KPmERRkMM/F +9++z7t9n3neTeeiAHaoaONovZjlKr1VnEmAc7KSqZD1ePyfmpGBTj4PSXmwN9uqdzfnB6pe/+r2d +Y5fAMyqBWqowHU1NwI1r4QmKz3i8Ms/ElhZv9uHhkWGHxex0OnCHnQYkBFUJalaSU6KcwYkoLxaD +8W69u9Kb2C5Xpq5dvfvi9Qf0RJMW8snsciK1UGsdWty6Y3L+3NjUiWC4m4x1Dx6+IAeTbgysZQTF +0sBTqtaT/B2PN2R3imDKwKFYHIrFOAiMAIsEPiuamNVjk2DWDu3eOjq2rmhFPTGarazVe8emFi/s +HrvnzPUP1/o7jfbS8ZtvC6cmQ5GWqtVZLgO+GFQx4KHqb3u8is1udJwX1RW5q2ljYPB9vojdZmQy +82zOagWQ8YLIRNGkkZ/pDRivh8R8MNLk5DTDx2GsvFhM0ZpzS2cGEwehNiq1CYoLi3JSD9VcxiT6 +3e6g06F4nBqNx+rlhV53c+jGQyQM84MewMg4K1dYuQyt1x/bmpjcFaWcIABRVrRQVVYKLBtXg0Yy +EkVGK4VxmEe7nbBZcagoEoNG0BG3bDOTgGkRvZxKGvtxBCbSG1/fPXF59+RdemqW4koollhePvXS +l75RyPRBQNptDMukZLEmy21Rbrg9CsgM1V8YnTwaiTYddhLKyWYiXHbGh8i4168pGZoOAbDzbNZi +NlJ2h4bATfCYV3PbJR8SBOqPx7rX73rM6WJJOsJKWTnUDGcm0+XFbHFyYWb70Sc/1RtsANE3OttA +i7H0FJQWKwF5gYTgo1r5fQ88K+vVfftGhoesI8NuC9yRnQNmEdjYaH1y7+Zrql7xgiqQC7w/F060 +U4VBa3yt1J6nhUQsM1ZsbMhqQ4/09diAk/KBYF2SK5HwaLWxqARTiVxD1houjwakgJG63aWA82WY +nKw0weHiVMrikA4MoyC6ECyihrqskBeF7Mba2V5/TQ1VoumJSme3N31ycePisdN3jS/txbLj07OH +nn7+K4FoF9QRQJmoVCKJvqaPy8qoP9DDCN2vluqtTUkpGU9pnOo/E0HhQ1FZji+bjdfZ1IjJCzXm +9vjhMgSlnsjON0eP+IMwL+nB2FaxvMDymW5/fWxyWwSX5PUTVAwckCwV7DYB1CB8rccTQtxBxCEC +ywNcmEZITav51bwdWMzKKsFOd+Z0vrGhRbooEfX6Qo3WciRex8kISacisbFMYS4cHcgS8GMYKsrp +YBk67HKyTuNFW9iLqDZjOYSfubFzDbhSkfPw5ZFkd3rl7MrulfXdqztHru8cvTboz7EU2NIgQyeM +tZ0e48wmkkwZqzXIWFhvF4rz4VDVaaMwxE/6dJeNIdAA6dM8TsZqxhg6F4lMIUB5TNA4QOoA6nZI +DjvokzQIV0kqxaINnNBoJkpQIVHOxXMT4/Mnto5e3jp6fXz1LM4YkDs+e1LUaiR0CpslqBTD5Xg+ +Dfp8MLEOznH/PovTSnvdmssBt8m5XTyK8JV8Y+vIWdaf9GDBWG42EGnDNzcmD2Vam5y/LMuZU3tX +1rbOgrLCMMCNQjQ+OTl9YmHx5nhyUvJXmpWxD37omdbYwZtuslttpBuQxBeNxsYarV0tPIZ41Y2t +C+FE58AIYrHRCLAMYWTWyYFaPD0ol6dWV49NLx73EgFJgyHthKJ1OVioNBcP791+6vJjrAykP5ev +r1F8AcXCOJXwoGG313ivncnPZYtzCCoPj6AMkwrrhmfE0LjbHRoxsSYzjXiVYbPb6WZwQg9FB/HC +UqGxVWxugWvOpfoPP/LM8bP3utyyFq7HsgM9NdAiPcBt1KchiOxXKp3eEY4vmc208bzaeDbIDw15 +cSwRDHbHxzauXn+YE4qgJNVQS9JaXiINOjNbXlvevT0Ua83MHrx07ZH26JbLrRrLI70RI3gfj1KU +8b7P6xEYUgch7XQZEdkjJsruVBBfNBiZLNc2EsnOYHxz5eClI+fvP3L+vq0T10LxnhsN8GKmXF9u +Dw5CAahaCdwuSSVxwgBqu5V32kWnjQWYKmamNLW6/yaracTrcQtu430x73aDMlQ4Lre+c8Hl9v/L +vzhMJgp0sqJ2QpEBzNf+/YjLLaCY6iNUmospeqXc3ZzeuNCeOi2G+mKwGstOltobBBXX9V4iMxfL +zCRzi2qkg9Fhi90IRHU5RMQl2a00oOLQsAcqwYdpKB5yef0Oj+APldVYlRQiicL4xPLZYnOtWF9u +ju5UW2CmCqCffcYGloIA7puKU3ScE1KSku2058/dcqcebQ0dcJJkRAs1JaWMYpEbqX1xgo6lsuOs +lAYAsdlBQAIxRWS1DNULIrCU72xsHOmNr/hwNV9dmtu4snP8vs1Dt03MH+tPH46m+8lY68PPvHjH +I580DhfDo/XO7vzK1VLlcKlyKBjue7yqxYolE01JzsEcHRgyQp4tVsXliRB0PpmeuOXyvVfvehRM +q80puNCAj0pIgVq9vdbsHK50jhN8HqouXZ4FrMbpGMVkCCrp9QH2hjqD40qwYXVwGBEBP35DxWlQ +wwCAIFkpKpQtjIGscrkUKVAtNtbaY0dXty9ML54CzelXUlcu3vXiq19r9xZsdpHjSoCiglDF8BhM +q9MliUKOoqIWcNkeUbwxVrxcKbV2lnZvz5fm1pYOf/wTn1lc3ZvfPL96/M7O/Ln2zOmFnevrBy9u +HbpQaixXqrNfeu0HDzzycQIPBpSS398ABOPoZDjU0pSa1xM8cAADxwpCaGTY8Mv7b7INH0AMI+lL ++oM9Wa3nC7P+QJmTCkqoLWpNRe9psQmXR5bUfLow0e5v+UOVQmNldO7k7OaF2a0r46sXc60dNdpP +xgen9u7eOXKNlfKcWC7U1zPlVTk4LUhjCBKxWmmwUQ4H9AtrvrGMDYFZo2Lg+FKFqWRxvNKc2Thy +afPo5b1b7l7YPFtsrXP+Gk7FQagIYsHnC7hcLOINCmK12T3UnziZzM6yIkh0EQXeQVUwVtCMFKCl +3AqG55KZJTlQhZl1uHiKiTpdvMPJsHxCDTXS+clSbRb+V9PrLBsp1Rdb/Z1mbz2RmcqWF3KV+UCo +log1jhy7ZWH9KEYE46mJfG0+nh0LhDu8XHO6/dAaOKocO3qxVJoG/rLZJASJo2ga9aU93nA2N3Hh +0n2DiU2LhWC4jJ6aSpaWe1Mnz1994s6HnpvbvE7Q2XZ99vjeZVFOQY3lisujU7dMLV6rtE6Fon2v +T/Wh6tmb76jWV401zFYG3LQPj4NDTxYWqr3DYFU6rcWJyS3Ac4pO8kpZVGv54uzE/KladzeR6gNs +5vMDVauYjdN7cauVpdi8X+uG9L7HE7DbWSVQKbc2RaUEapzhU5yc9eGappVLlRlFzY3NHDt67oF6 +fzdTmpHUIlwhy8TDkeax03c+8sHPzi+fBmOlBfscV/C4FcTN2syYecQItDeNsHpkDCbippssI8Oo +1UI7bWAZdIYvw/WjaCgYqAEdE3SiOrq7sXfvsQuPjy2cA+tRba2t7Vw5d/nRqZkjt1x9aGbtVKo6 +NbZ4EhRTvLwaSQLFXDh768OTCydlra7HxkvNtVx5SY1MYmT6n6ctjAx7SSJCECG3sZKWJagoLxdE +fymWnUjkBjuHL5679v54oV9oznWmoLu3M5XVevf4YObWfGUNJYIYoUlqlRHzAb0TjE0oofFgfFbw +t0kyjRjv3TiKSVB83u2LYFTOiKJlM07jaIN4MFTDjCer9I2N52Od8RMTCzcXGhusWJKVXG98K1Mc +UGwkkZ+ZWbvl5K0Pb524O1ma06J1ktUEITq/uKeGcjitCWqJEYsGbPIphoyWCuPRaBN0o9tIxTcO +ZwHARLx6PDkoV+d5wdiVQJKg2OuKVvFrpXJzYXbtTKayiJGRraUjD7z/g5FIiaIi7dHjrf6JUnU9 +HJtyGM9nSLB4F87f3e6smoxDZo0MVTXUSxeWG/1j5fYOx8avXr7n7C1XbXYSei1XWZtauXj22lPH +Lz4ZL6wgqE4S2tPPfHZr67TDrfzzhBFNn4illliuZDJhqFfp9jaK9VWLlUaQgA8z1huI/ko0OaXH +B5KUuXj1gbve96FYrIv6grK/GkmMFypLq9u33HL9if7USU6sMkxW8TddxuHRnn37rHCbNisH6ErR +BZcrdGC/C0XkTGoc7KTFBPaBR30xoEWnK8AxWdB1MHqq3qy0Nhq9w4xYVQPFdv9gd/IoUMaJvSv3 +PPTh1mA9nO7vnX/wyr3PbBy7f37l8v0Pf25u7VIg1C7lZnaP3B5Nd+0uwY1ooNZEPo56RadxGpGa +jNT7o5uimHa7BR8elNRyrr5a6e/OrJ4bXzoZjNWXNk6Ozh7NNVezjTU9PS0FG6xSlMPNXG1ZTw+8 +lE4KaR/cnd5PVbcwoepEIjiTE7RGLDtD8VlBq/Bak+Irglxl+CLDGfbW7ZGh9Wg2Sg== + + + siEo+IWt2xZ2buvP3lzr7WYrSzD18URr/ejlaG6QyE/ObV/LtbbV2Kg/VAPHuryyh5Oq08VlCota +eJTnc8FQ0+cLu1wiw0T1cJMXivv3e0aMd3OKIKWL1VVNbyNI0Gnno5EWjsPfJTwettZavHT9kcu3 +PbywfiabmwyGqgjCE5hfErPgtszGWcAcwybKtcVyeS6Z7DsczNCQG1yPz2dkmFB0WBAzFBNhqGC1 +PAjpWbMZAW0/s3Z2c++O8YUTyfwsxRa9Xl3g4w8+8sTs3CGH22+xskawjHE8hPEEBuQcSYSqtVkt +WNl3kwN8KE2l/YGGorWVYNd4qx6p333vQ9duf1gUgT1TEzO3tMZO5MoLAIaR+BiGxW3GFgCh3dmh +qZjJhBNYTBBqHJulyagP1Q8cQFwOeqy79LFPfNFqxoeh6mwcKApV68Ti04lYT2BC45Nrij8LnMXw +dTHYp0il0lhoje12J3abo+up/ERQr9WbyyuHLi7tnOpOrGeKM/EMIEkbPG8k3OgPtlWtaixlEXI8 +l2bpMJSWkQzgleGfBT7pcFBOBw3KMBzrziyfO3HhsbVD1/rThxbntr7x2rev3vmQFu+E05PlzqFU +cbnY2FrcvHL64iNz6+ebvY07HvhwINZ3+8LR7Ey5e7DeP7W998j26fdPrt7a6Wy88NK3P/ypV71E +1O5Sb5yRp2J02h8eS2YX6o3FS5fvXD98a2fm6Pjyqe7MkXR1dmzu6MzSqRNn77l0zxPZ8ly9vXrh ++pN3vv/jh07fNTpzMpaZ5OUSL1ZkteNCABtZaHOvD/xRWpL/f5Le+0my67wS/AeGRJuqSp/5Xj7v +vTfpvXeVleW97erqrrbV3WiHBtBANwzRMARAAARBAxC0oIdEM5IoUhxakRxRpKTVSCu3sVptxMbM +xv62N1sRFRVlsirfvfd85zvnvXu/r2FYHZYvcnIjDlmCWEVQJRLD0LGoaytmV5LrOO6D9KRqpbml +85pVy+TarfZCobJsuPOM0KDpEk1lgfP6zy7SABLJpIYTfiwmTU4CK81RZBpFLJDuadqnGZ9hU7JW +0Yw2UGWBEJGABALYNwSYd1nR8q7fHc6fW968oZtNkraT2PhMx8MddwQ03lhls2zOcPoIasVjQjTM +A6aNRoRImIGB70OMWndneetaf+7QzSwQTC4S5XWl7Lk9HHcAzHA8BeyeobcYOp0A+KT8/zylBcfV +k8eTJ47FTxyPgW9xVCex8RM0ivKOPxKJRdhQkBy3R5yAHz6CYaNhShAyJGWCSEkXFjOldZG3CqXZ +amutOzqodPZtfyjLReAc89V5QXE4UdOsoqSWsqX1YmMPeL3YeIOrqSoNWak8PGNLjM8AJkSS8OJR +Hgx2ahIGRpgkbZJyJK3sFxYand2FlYtbW4e3n3hmZfNcZ3jqzJUXNg+euXTj1f1zT9Xba6ZTc9x2 +o7505dF7Vgr4hYXZ1Wub+3eml45KzTU3O1CdajE/ePr+q7eefgkhHNufV61hKr92+vIrpy6/VK6v +Lc7sfPd7f/bE86/Y6X6psdZbOJhdO3fnuU98/pt/8o0/+fmnP/jutevPffCVDz/+yS/6xSW/sGSm +For1vaWNx6889qnNgwesWJOE/Gj+HAiiOKTFEzJBe8A8Gv7icPGml50Hom56Zl2WS7rZdbIzqtMG +YlLSWt3hufPXXhaUrOWUbK/Fq43uzMWZ5dtOZgPFigRVNNyRYvaAd9PUHMADyK2JuBGJKuNnCiGO +YfPVxrYglaCkBvTAwvrtzuxZze3JwCRqZQQTKc5GCRVOcjRj8lJGkEuiWtKsOi8V4glOUPJbp29W +G8tA+4lKHUnqIH3AkC5JjSSshkIkIAEALQhRGSGre6Ny84ykdVkuL3IpkR9bS02vx6JSYIpimJRh +tXixCvgNyEgIWIwTyUiYBzoHBYiNKxhqhkM00NXjnYFRkSY98G0oSIHYmQoyMQioGpcR8hSXtrx2 +pbWO4l7Wq2TzfUHOuKmu5c3o1tBypnP5xUxhjhdtRXF0u0QxjmH3rPSCYvVAGmLZoueM0umZcIhK +xHgM0WAYaBJ+cgJ6WFMIQpMm8H0YZvJijpOKnf7e6cMnzx09Ve+vC0raTTWXNo6yxWG5OswWpjkx +B0CoaQ1dbzpuF4RwobJQ72woepkRSxjpEIyrGUXHrhbLs16mOy4CWQd4mwVRML98qTe9k/Wro87o ++ecfLG6cMq3y/OKZG0+9dPfFN557/TP3X/3U3Zdfv3DzqZWN/fvPfuzKzecXli4+eue1+c07i1tP +bu3fXVy7Akwrxfgpt/XCa+8vbV+ZmMKDIYrlc7LRydUPurNHnJiVxfTHX3vHsupAIMG44wLj3Nnf +Pvvs2Wuvz28/IUrZK5fvvPbGe73RPsHmJKNLCjVabE/PXT1//Y3W6AJGWE888UJnsB2OCuOW6FEF +wVIUW+4OgA65qhvN2dH+6vbN3sy5en9HNGoo4fNyRbVbtf4up5QTMA/GxQopQcpTrA0MCMVmDLcz +u3bt3utfHS6eV9Wq5U0nx4dEmPEj3dj4fhewDM3OjiAWZTmbyU3LRrc5fcnw5ykWWCdAv3VJboJ0 +Fo9rFJV2/F46PxKVKkZ44zZ5AcBIMFhonPAAx44PEE2NN7NNjbcRjjvcATF/4kQSRZ1x/6kJLIFY +utt3svNmaqjbXcXoxOK6oWRo1onEaJwyeCmfzi/lqzvZCjCAdVnJZrJt3alDsGi7/XrvsNw63eid +fViUclx/LxzEba3iggmPMZOTicmJBCAx4IVpEiToLEfn2t1tknUlOWcDJHe3dL8vaCXD6dSBZOW9 +eHy8EYgVarniZq6yq9tDDHNQRDOdDisWp0I0nLRYNguiycsMZbWK4U4szodCBEM7QBVEY+OdJBSh +66KTd8vFXFeSUqaWbbfmp+fW29Pz+dJAd2pmppOtzjd6ywubh+Xm2tzc3s17ry/u3gAzqetllnYw +VMZgJu/VTh/crLRWgH62zEEmteC404rWRgmQ8QlN0s6cuUiQDss3nPRyvXOwdfbe/qX7K3u3veys +Ivgfe/bFn/76r/cvPE6LlVx9t9y/OLf3/BMvfOHgwlONzrLjFN761LtnLj4ZhxRg7jRnLt843Z+7 +enT77Xx5OeN1XnzxU3eeezsUFYE9SSQNQapvnrp7/el3rj37Wa+w0m6tvvbO1xqdzURChpKyrNeb +vXOnLn3s8effnVu5CYzVrTsfL1dXToy78yRDIQ5FUwAVxdLK8sZ1WSzcuX3/g2//iSgVaaFp+Evg +3a306sHRq1fufqbePYcmrafvv/HUx95MZQeBEDUZwMHnRELBsRQvtCfGvVapC2dvPv7Y84BAjh0L +HXsk9NGPhI8dSyYgz3JXUMRcWj03mNkFtlQxAO+VMMJH8EwkAdYuB0wWSRiWVUEQOQm+ZlK6O8hV +NvqjMxunH7OzMziuFYsLbno07nkKqUA3BkPseHsk7ahSBoHYeATlaCUexaJRCqNSOJMDdoakcjiV +iUOCrleAhGvPnTt1+dm1gyf7KzdSpe1IjEWToq7Xksj41t9Dp89DcYXnCvnyCsMXQUSkU9PgkqCk +BGY7GBGAWxyX70NMVSxFx/tJxHxpCchdVSqxVApOKCSqA/LJZvsMZ0WjKE3bgHA0uzpcPLt79rHl +zSPb7WQyXTfVJ0hb4H1VzXOMR6AqRxoMBf6EnQrgwFuxdA6EPIFrKKLHY6LMZzjKoQkLWHIQ4DyX +B4KZIC2G81jWV9Rixmv2OyvN9irICODiZxYvN/p76VxP0XKy7Ju67+i+KmfHz+6DNM9mZXDBbArH +jSQsJhMcSE9+elrUu9GYmsotZctrpt2bXTy/une91tsmSauab589vFEszZG4n8nNp3KzptuRtaJu +loErB05WkksE6U09bE4BtKLtzPrpZVVrcayvS26jNhyOtsenFKtbqfJWc3TUHF7IlRe93BzDpilU +2N66sHP6hiQXgRQ0zC5JAfXlK1I5EqIiQcJWyy88/+bLr74NvMy4v2pQiEAuyVdzle1scdXS8u99 +8asPXnkrEqJPHIciYUEQG4X6meHWE7GYGI/QAgvWsUXgBiANkJLA5APt1x/tAyFEg9njvbWVs/XG +UgJSkrABRCzD5cDkIDAbC6PhAIQkMJmTkhCMQDjHpyrdA8ObU4xpRihzjLUws31w5nYqP6MYNS8L +zPIqRhYSCZEhdFlIJWIMFOMIzKZwj2dytt0HvgxBfZpIa2JJFfLdxvLy6hGEGiCtYLgFJZQooP0I +JTJWsTgTCbOBSWzcgjlAoYgB5oTj0iznAWB4fltSsiguOX672tpO5ZYNe7o7OPTTsyiq9zrr9fpS +Ij6uTJJEgFX3ozEXRUuS2ASXFIsgppKyjFoY+Ka4/J9PACHIHJ/Eh41IhNfNcYRSdM5yBo7dpik3 +HheBDGYYH0P1WJRiyPGORBLXAWgxVEtAaiBIgYigcDUSRMansyNMIspwpMXSaV6s4GQ6HmfzpVG6 +OEwmgUW1FK3IC2lVzjtGQRa8RJSSeD+X6yBJEFYkgasA3qoKLjgPhhOJMLEoT5IeDGkYauCYBWYJ +hUSFt3naBoYiCSv1/q6i12k6RTNpDLWAXhK4jK7mKUyLRYipCQjEJombJ08kJk/C0RDG4JzIqGm7 +Vi0ugDg9eRKemiSTyRTJlgkqjeM2TSssMC31vutUTp5Mjs+FubP92UuL23dm164Ci0EAOBEmhooE +Ko6zA6qAcYlyzvVajtcGyNck31DTDGWAhWBI4EkzOGEQuB4J4QQiYRBLJGmFlymMEFiZoXUv2+aU +AopbCKKYcvrU5uHRlSd0A4i0VDq70O5e8DOrBGGjMAdFyViYQBIijmoILKKwRBEWTWckucUzeQxW +LTl3af/q/QefRHA9AQsYpicBcSV1CgMfajRChANYAgjLCHBDMpzUHxZ5ECBI5tm047ZoxiYJtVxd +KFaXU7l5JzUy7WkeUCKiO1bDcVrgxWAV/NRMNrdFkC0UKcZjcmgKTkRRVbQlwTs+LiOTAAAmiBxN +lTE8BUEGglh+esjxeSBUENQFeXz8Q8wFwhgQ47gAyAQMxxgUeOcAOq6KMEVgOKC4LImZBCaHArCl +lnOpaQzRUUhGYZ0igBLQYYgrlYdeqhGJ4AxlimKKZRyecSlcQRIkFMU4Ss9nq4lIHIknSQzkGoem +PfB2kTA9OQGHAjiQvieOR4NTKAqr8QibBOuFqlgCsAeAmTSY2dOUPBxnGdrDMZfALRARYB2Dk1Bg +IhYNYhSqBcYVKhBgDwnEdK2ybYDozuFJ8/jxGEiFJ06MtfTDY7BEJExIgiXyJoFLoSAC3CLH5VWt +YdstP9NXtVokTCbiIJ8mTxwPwDEMx8ACCTxr1qszuVzPMMo4pkIJMhyG41GGIvIEZhGYkk/3mtN7 +k0HAFVBwKh6ailMoK1CybWTGlYi8gqCk4mOq93qN+RJQQYKHIUI21bLMMshEKG4GAg== + + + RCLGwglBAeZFKeGYAgInHiXhOI3AEuC0cJDGYN3Ri83qTLU6ZCjFMrIMbQONCv4QS0pIQjp+PAEo +K5kYD23iZCQcFeGky/FVTeta9sAw62iSB+SzuHRG1oAZ8YGKk5W6709XKsu2M75zGIsyDGNznAOg +Pn4uNm5ASaDA+yNiIk6GAolYCCYRAYXApXKRCJAxjqrWRWFMFBAkPTRZbcA5LNd0vbXxIRfUiI0f +tAFeJQOTMSjOApvDMGldK/Cc/7C0QjQaRFbm986du0MRZiSEJSIUEuNlzgeDQmExHqUCEwkclTgG +sI0Uj9J4kqdRniVECpfQJBoLRQgYBd+CSBT4HMdmxs+pwyQU58AaHX8kGJnCI0EsAGBwLDJ1PB4O +EAgkc6StihmgW/Kp0oVzN4DIBMkuEeEAq8BxMRkXGMwE8AtNIa7V9pxpFFJJkCPiQnASPfbRcCgA +1kUB73jiWJAmNIHzYxE6FgZThAP7FpyECVgW6RSJGHCM4yhPFhsTk4njx0PHjgXAkElc1VUgv1VX +cy9evGo75XCESsQFDDdoJsPyZZJKR0KIKTlHZ2++/aXvxZPyRz8ycfJEJBlnZM7V1ZTr5BTeuHzh +2vb+ZRgRAlPww4fy4+fyFKnznK6IRsoBCnNe5Is05QCNl4Q48HMCoXhK1MQ0muQQiEDiJI0rnlNn +GTMJgRmIyizjOgCTXAwi4wkUZARFyKtSF4prIBNNTsEnjgeRpCwIaZZ1kbFp1RHEJFBNFVM0riYh +WtPy+eoKgoF3FKH4eH/mw99mTL0YjuATE3HgpqGYxBAeAkmRMIYiXMbPZW1PoqV4BImEURSVbbdV +qq0ARMVjHLiiZnvdTw3GXaEnYQAnBBaIcQb0FbFCYg4AUtZrFdLtZIIAlC4yGoVKFCYzmAjHsXgE +Av//8tERifGBk/HQJHzyWHjyeCwepsdlHhnr4YNgCYHMZIyAo3BoKhKYiEBR2FXUWsZtFFKmolfr +fUnxggHgoWJT4yVGMEiGovzkidjxRwLHPxqIhRiRKwhsJhnjeFL3zXzaLupqIRrCkYSAJ0GuEUOA +WI4FJ45HQpNQIkwItI8npUgABggPBwHyWRJ1cMSLR4SJE7GJ42FFyABATp6MARyCtMuQlqUUGNSI +h7jASRSOgsiipk4mQgEMjgHy5KMhhKc5gSZVgaymrX6/xfICAgySma6WW76XZTk5CSeJZNIFprHS +TWUaJ05EpyYScIw1RN9TfZlmLJFtF1Lr68t+thBL4KEwBkMgh2qioKVcq5B1ixl7Z2X47L273e5C +IJAITMWmJiMcKSpAHmmKLogYlHQUseBbMgcQFUzGIgKZzHlSvWBdPr144fzG4vaw2gT/TNI1IDZk +IGAemmIcXIkmarah6KpkGy5HWZpUZEgHyJ7IFMyTYjlfbbSnNS1VyLVZ1sRRnkAEKEZNnkwcOxYe +38sixuViwNTFwyhQv+3aYHFhUZcUNEFEQiiOqkAVuE6JFzyKtqrVGcMoaFpBEFLRCJlMsAAzNCEq +nMbTJpYUQMrm2RzPOAorqzRV9HRXMxRetGRZIDABgIxGhu302nJP5AArUijEIzGGgCUS0UAiA/AA +HEIDhQlxcDSKxCLJaNQUxG7OXq57B3OlW4e962dmXn3x5pm9hYxp0KSMwDzIfRxmAoA98pHJk8ej +MeCyY1wskCQTlIAznqzakmIIMg6CN4YonCAwNA34keY4QpQZ11KLcIKdPBk5/sjkiWMhAA+QHCeB +65ykjh+Djx2LnzwBRQIkAH8ijCBxNOsXSIQlYdoUPTQOND/F4J7I+tEwevJEKBJEKaBh4ngyEhGI +uKcgrRy30HHWFiqthlvKK4O6fWWreffqyv52t1u1OmU37Xi64uCYcPLYVHgqisURk+U9ntSIaF5F +NgepVs22DNbUBdsyZZ7J2EKzpKz3zZee2H3pmTP3by4/c2ejXskEpqKByQQGA8Hq6bxoC5TLo56A +jCr65jA1U5ULJjIsSafnMi89ufXS3e0PP3PlNz/6xM9/+f7nP//E7mox6zKKyNG0jyIeCtsSbRY9 +s1c15zqpUTPjK1zBtSVWTEShZCxhi2Knmh8O69sbyy+9+mqzO0BQLBZFwQVMnAB8xapal6Zz41tz +x06wKJqzrFaxUM46eDKBJZBkHJE4uVspXD+6MD3o25a9vb2Uz2cwlIIgUpI8jvOAcmMALyUBEbDg +o2B7tWwRJMKSLZR17GC5ePnUaL6V7mbl/VHmudsbH7936t3XLr3+zMHd67sro3rOsUgIQWI4FCFp +1JSFPEdIHEpoDF73uZmKNqzoy13r0rJz76D4yScXv/T6/ldePf2HX3z1Nz/78lvP7J/fGQ0aJYOX +CJhEExQUZ1jaFSibTCDAVJd1qZPSqxY3XzM3pjNL3dz+cvfJR3euX1i4f2v9jefOffz+9euHZwfV +Wt5zdJHBEgmgvqAoE5rCAJxCUwRg1JPHQsHJWDKCIpGETpNFSxnUcr4imCzZzPn1fDZjeFkzSybZ +E8dDIGChCA7EloYnHDLctuHzs9pzFxqPHzbuX+m//4kL3/jsjXdf2Xrv2cHvvvf4P/z6nT/9+r13 +Xr5wsDYoeh6wD7FQDAoFOChcEJJzaXQ+G1uvJq8u6zdPF49281d28o8dtu5fbr/6+OgTTw0///z8 +X//ZS3/3609/53Pn7x5kyiaWCEciIZglFY6UKBhV0PjASp7rMVfmhAfnc++/sPKpp4dvPdn5/IO5 +n3945x9+8+mff+v6L7995X/89MX/+R8/+7Nv3H3jqZVH9xullEsmQbRyrmQUbbmT5dfb2rlZc7GA +LleJQZZc79lbQ39n6N7cr332wd7vf/vtX/7q61987+kHd3cOd2c0kYyGwlAUR5LS5GTsxLGJZCjo +83BOTJZUxOfCPh8dFqTllrXWNw/nzLee3X3rwbmX7u595e2rP/7BO6+9eLNVsZfnh0vLBxun7mpG +BY9FbAZJC2jPxs/PqM9fat47LF+YEV+6Wvv5957/2Q9e+twzK194dvTbH77wr3/35X/+/bs//tKF +f/rlC3/xjWuXVl2HgdDouCYhjUhUEheRaJqLLReJp/ZS3/3cuZ99/9lvf+7yp+/1v/7x+R9+6cLv +/+LBX3xw5UfvH/zTr1/8mx/efPde9d65wpnFfNHVSj7IlWlLy8k0lxGTAw/ZrLB3Nv03Hpt98VLl +weXCH713+dc/ev2f//47v/v5O7/87hP//jdv/X//71//4VfvPTiqf+utU7/4wTPvPL+bt5RYEAFJ +FthYnlKxeJwEKR8KGWTUIgJLRer6WvrRjfzhrHFlxX7hWu+Pv/LU+68cvP/6o2987GbB9RCYAwys +4GRVY+Yz+H6TenJNfe+JznffPvfh24c/+eqdv//x6//z3/7sdz/75I++dOGv/+tT//zbz3z9U1dO +z+fzwEEykqv7EklaNNIx8bUicnlI3VlWXzlMfee19Z98/c733734jTe2//wLF/7+zz/273/12X/5 +zVu//v6d337v+q//6Nartxbq7jgJAhESj8B4AvMlvaYrqxn6pVPa29dSn7td/PC1xd9889L/+ftP +/O3PXvzTLxz++jtX/uGn9//2h0/86L29n7y/88tvnvuvnzt1+1S+nffgKIomaAYmNqcrO31vsynf +Xje+/PzwR184+63Xlr7x+urvfvzSL7/39B9/5swPPrXzH3/73v/6jx/+w1++/rvv3vo//vDG996/ +sD8DsBAJTE4logjgdpvlFgrCwEr09fD1GfrZU/bTp+yXr5bef7Dw/c+d+uYbqz/5xo1/+7sv//ZP +X/j9j17817/5wl988/ELa9XF0bBY6mOomre9hiMPU9R+DX90hv783fYvvnb0m+/c+O47O9/55PZP +vnb9X3779i++c+t77+z8tw8u/e+/evXXX7/6zWern7+TuzAtAFaRaT40GTv5yBQWCqfZ2HwKutTn +bq9bDy6XP3tv/qfffuIf//K1/+0nz//hh8/+4UfP/eyDo5998cyffnL+M7eLjy4o0ykyI+PjcqKc +wZKmb5aGjfbmIDOfZ5az6LUR/bmnOn/8zqkffvHCn37h4OcfXvv9T577m58++MW3r//ii3t/84NH +/+mXz/zuBze+9fHBp675L1yotDI6kmBFvsAxri6onbzZcslpH784Up/aVl84MN+8lgez8Vd/8sQv +P7z2s68f/V//+NX/+1/+6Dtv7nz46UsPHt/mcQaHuZQkZwQyL8ADF1svEVdm5JfOV7756tb3P33u +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 +EU8V+hPzSxvHZla2WxPTk4urs+t7O/tnn3nuPT959ae//u1vXv7qVy/f88D45Hoi2XS7ebdD9LoV +HDUS8V65vEgQht1O8lysO1ht9Bdz1clksZerT26fuHTl5tseevypT7388oNPPH3PI++4+cQzWqQC +UgrgzuVgeCYt8EVJrgliHif0cKySzNaLlVajMzu7eGT/7LUn3/n8M88997Vvf+cXr7/xha99/eLd +N2cXjpYr05yQ8fo0j1cCCKKZOKhZOKHTyaNoOJYYVNtriVw3kWudOn/Xuz70oaff99573/bIw+94 +9sYDj16776FHnnrnF77x7fd+5CP3PfjwyYvXWTHj8fBuF0NRhqJVI9FxSSwlkt1gsBCPNxvN+a0j +Z6Zmpk+evuOOS1ev3HPvpz/7ud//8S//9qe//PFPf379zTefe+GDxeL4yCg6OkpC04XDk9nsit3G +26y438sLfJqk0j5/yO9XSCpMM9F0urm3d/ri1XtPXbh246HHnn7388dP3tmf2a93twUxa65l/R9u +jtK79cn15Z0z+2euXb70rmff8crLL/3itV/+5ne//dkvf/7666//1z/+8dvf/+sX/uXLz7//g5tH +7yg1N7x+w+8NRsCVS4lkON0BC7F7cO6OO69cu/vpp5/+/Je+/MWvfeNjn33phY986Mtf//qrv/r1 +S6988dvf+OY//vGPl7/8zXe9/xMnz19PpHv54kxnsJ6vTmp6NpspL8zN3nnh4LFH7nvf+971sU9+ ++Gvf/tobb7317Vd/8oVvfvM7P/7pn//8l//zf//vX/4DruT33/7Rjx55+rn2xLoRbQJgErgY1VO1 +cnt1dQ2Ond29a/fc8+73Pv/iS5/4wCc/+vzHPvriyy/98NUf//JXv/jDv//uv//3f7/x27deeP+H +Ll6+N5cfF9kCjWfCRj9XXAkgOuITdSUFwL23e/TGvTcff+rpx59792PPPvfyl776g5+++qOfvfqX +v//lr//xn7/69W9/+7vfvfyFr+wevZzJzXBcMah1WC5vxHt6pN5qzi4tbR0/cfDw2x566rl3vu8j +H/v0K6/88Gc//8Wv33j19dd/9Zs3//zXP/2v//e/oVt/8JNffuozX84Wp+xOBjjR5eIc5gpJhSDj +ilrMZTubW0cfeuzRh5587AOf/MiPXvv5z17/1Ve++61XvvqlN956883f/eanr736xz//8f/7P//7 +t2/95mOffvHCpbtTmRZNg95GHQ7c7xd5NlYuTk1NrJ04dva++x95/KmnPvfFl3/8i59/64ff+/K3 +vv67P/7h7//1X2++9eYbb772j//5j5/+6hdve+LJTn81X15Sgk2Xy1z8PGbBWDLMM5GwXqpUpkGT +dHszR/ZPP/T2xz7x4idefe0Xv/n977/0ja/9/PVf/a///u8///3vn3jpM088/eQ99z6o6w2WLTO4 +OmhNbSxt3XHi1PW7zj94313PPvngV7/0mX//t99CRb/x5i9//vPvf+azH7r77ourq6uZfMOItRHE +8HklmgjylKrLoVqudHR79/6b9z/62Nsef+KxD33ghR/88Pvf+8H3P/+lV775za//+a9//fEvfvbp +lz71mc995q7r9y+u7jc7S7KciYWr+WIvk60nk6W5qeXN1fUjmysPXL3wL5//zJe//PI3vvXlN978 +1R//9vdXf/X6q7/8xVtv/fo//vNvb/37W1/9zlcefuKBxbXtSKIuyhlBSsiCUSnU52aWTx+cO7l/ +cv/okftvXHv55U+99tpPXv/Nr7//6qtf/dZXfvH6T/7192+++ZvXfvsbaJafffbll65dv1ltzuKY +jqN6UKvGEpMkEWMpPaKl64Xa7sbKM29/5Euf/9w3v/OtFz/3qR+/+qM//eXPf//Pf7z2xk/+9Mff +/ey1H3/60x968dMfO3ZwQTPKIIcArGS1ZEQbkWh1MD43OzV38sT+u5576qMf++AnP/3xz3zuxR// +9If/8T//61//9MdXf/nqd777pT//6fe//f1bL3/x8888/WyzvewPBMG4OWyU28n7fSrPpavl2WK+ +c2Rn75l3Pv3hT37445/99I9+9pM//e3Pf/r73374sx+9/uZrf/rzv//bH3736s9/8Otfv/rTV7/7 +3Lueunr39VS6wQtRtweH0lK1nB7Kx8LllYWNRx959Atf/OKPXv3xt7/3jbf+9c0//fVPb771m1/+ ++vW//f0vcJ7vff+rP/zxN3/6s+8/99yzpy/cvXrkEi8XRkcxj0vyuFjUz7nsKIlKvc7MHWfPve3R +Rz71uc985hWYzU/+8Eff+c//+Z+/+8PvfwRt99MfwkR97MUPXr5858banhFulsrrITHeLHdqpXox +nZ2Y7C2tLMxM97c3Zm7eOP3441dv3HP60oUTpWIyqAoUQfv9FOLnHTbcYcNcDowICA== + + + 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 +saViEZvwN6zo2Un1hYPqrTPV+0edj948+Ob7V7/42toHD7q///6tf/rNe3/xjefee/Vgd6mbc11g +H0K+EOQbZSF/lo9NJZDpVGi5FLs4r107lTvczBxtZJ45U79/ofH6rf6b93ofPpz+u7985T/95nPf ++cLZu7vJgoFG/IGAL8oQMkuIZBSRkXDXjO236aMp/tHZ9EcvLXz22d47d5ofPpr6xXdv/tNvP/eL +b1/51Z8c/Zefvfw//vvP//Kbd9+6t3B5p5qPO0QMRCvriHrOkpopbrmh7k8as1lkvoR3U8Ry21rr +eRs959pO+f1HW3/43Z/86tff+PiDZx/d3TizOaEKRNDnh4IYHBOHh0Mnjg3FfGMeF00LsbwCe6zf +44K9rDhfN5c6xpkp450Hm+882n/l7tZX3734kx++98bL1+pFa366Nze/u7J9V9WLWChg0XCCR9oW +dnZCeXi+9tyZwsGE8MrF8i++//DnP3zlC88vfOlB/3c/eunf/tNX/usfvviTLx/8y69e+utvXjq/ +6Ng0hAQHNQkpWCRjmAAHE2xoPoff24p/7wv7P//Bgz/5woXPPdf5xqenf/Tlgz/89aO//uToxx/t +/stvXv6HH1374nOl5/aze7OZnKPmPZArE6aalig2KcS6LrxaZG6uem89M/ny+eKjC9k//eDCb378 ++L/+5+/8/hfv/ep7t//bP7zz//2/f/f3v/7g0WHl2+9s//KHz7/3cDNjyqExGCRZYGM5UkHDYQKk +fMinE0ETH53LkVeWEpdXMmcm9aMF66VL7T/76r2PXtv96PHlt168lnVcOMoCBpYxoqTS00lsp0be +WVI+uN383rv73333zE+/dvM//+Tx//j3v/z9zz/z4y8f/N1/uPdff/f5b3z26NR0JgMcJC06micS +hEnBTQNbysEXeuTNeeW1M/HvvLH802/c/MEXz33zrfW/+tLBf/6rF//b377/r7995zc/uPm771/5 +zZ9ef/36TMUZJEEgQsKBKBZBPVEra/JiknplW333UvwLN3LffWP2t986/3/+4c1//PnLf/GlM7/5 +ztE//ez+P/7o9o8/2PrpRxu/+tb+f/jC9o3tTCPjRoMIEqHoKL46XtzouKs16cay/pWHvR9/6fS3 +35j75uPF3//klV99/9k/+/zeDz+78d//8YP/+d9/9E9/8/j337v+f/z9W9//6GBnAmAhMDo8EgnC +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 +xX3ZzPj/8a/Na/3oN7/9uw+v9a93P3Nrx+ceM24pX23JxYfGY/7Wb/8jDvBbXz8zkfobf0ma91tu +6KXJFFjrzRwfRHHQ6r71jSfsgm9Njwz+73YQDKtCcProHP/no8TytSNt+O53ftALSI6Kx9e/a1Hr +//WNszL6gXf7dLrn/661mvVRGf3aoyj8VStr7s0L9mntj1tJCk9m/6X39Y8tT/mtT/7b3Mo058XP +Ws2jc5OCKd+csujnf/Ljv+tLovrj39EffeeHP//FT22yfP5HP/z7H/340+//2w9/9uUvzS/tP5P+ +w39v+8uc6ktaFv3Lwp9+qhfzFVu/zF99+fTHX/7S9PJN0tyff+ObP/v5H//o/c9/9JMff/9n//by +B/6z7/3Zp9/90z9++YOX9nc+19/5Ly9f0Z1Nn8tc/9NXXZP9nPv93Nfiv773v7iVb/6Uf/5j/uvP ++a/puC3+873v8yfz8Wff+zf+7b/rn/5Rf/a/Xubp5c9e/vpvp5e/+7L+x7/48pfSOi+3qUxT3ue0 +z9vLJ1ttfzAvaal6zH/+8pdyfhhNa1p6m5yWsuaXT3ujuu9LzS+fzOVyqU8/+L12qc5o3tOcLkZP +bkpG/++zV/uVfJvLvOzpqy/f+M7Pf/ajH//9y1f+6I+++V7f+S9+8vPvY3t5t7e6bfO+5KWmbc3r +9qI/yWupJc95mud53fUni25w2XUjW9kWffrptulP5jIt27Tqv1f9yTTv67T5721taEy3eVnrmray +THvVA/kDrdN+2/k/vYJ53+bzAXOdy7pvhdeuH7+bzXXJvVGadX8br6E3muvav/bjWlitH1xp+tBq +0n19aPT0rn7N732SX6j7su9l0X/yi/9kmrY17Vl/lme/hn32fZVZxrk8jBa91XnXx/BrOI10v0t6 ++WTdj6dJWR9oWrG6/2KZ12Vf5m39wExfJ6fe7GM39ut9Ey/f/OGXv/SL4R++1v7pp9Ekr3O9FX2o +ad6qhtvLJ2Xebrygss4acVvi3dWEUVr57HWbZ6zW21L2ZdPTbXP1J61pv2mYMyPzvk1Y5fVWq16H +XnDKi8dQndJtn+ek61UN5yqrommhV1K2VeNfs2Sr+oMpLbvuoex1xSTdmBwasHqh+WVbZ11407+V +SXc1jxbvv/ylLW83zSnNpTSveQmuoo9datZU1XPgf3TDyy2lUtOUJv389rJpMOsjMNw1gRN3mzSt +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 + + + diff --git a/static/img/conf/Partners/GraphQLWeekly.svg b/static/img/conf/Partners/GraphQLWeekly.svg new file mode 100644 index 0000000000..19990b6eb8 --- /dev/null +++ b/static/img/conf/Partners/GraphQLWeekly.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/conf/Partners/GraphQLwtf.svg b/static/img/conf/Partners/GraphQLwtf.svg new file mode 100644 index 0000000000..d7cd758bf3 --- /dev/null +++ b/static/img/conf/Partners/GraphQLwtf.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/static/img/conf/Sponsors/Hasura.svg b/static/img/conf/Sponsors/Hasura.svg new file mode 100644 index 0000000000..5de6aa73c0 --- /dev/null +++ b/static/img/conf/Sponsors/Hasura.svg @@ -0,0 +1 @@ +hasura-logo-primary-dark.svg \ No newline at end of file diff --git a/static/img/conf/Sponsors/Postman.svg b/static/img/conf/Sponsors/Postman.svg new file mode 100644 index 0000000000..33f93878a1 --- /dev/null +++ b/static/img/conf/Sponsors/Postman.svg @@ -0,0 +1 @@ +pm-orange-logo-horiz.svg \ No newline at end of file diff --git a/static/img/conf/Sponsors/Solo.svg b/static/img/conf/Sponsors/Solo.svg new file mode 100644 index 0000000000..8eb78f63a9 --- /dev/null +++ b/static/img/conf/Sponsors/Solo.svg @@ -0,0 +1 @@ +solo.io-svg-1.svg \ No newline at end of file diff --git a/static/img/conf/Sponsors/Stellate.svg b/static/img/conf/Sponsors/Stellate.svg new file mode 100644 index 0000000000..a51a6de09e --- /dev/null +++ b/static/img/conf/Sponsors/Stellate.svg @@ -0,0 +1 @@ +Stellate Wordmark Blue.svg \ No newline at end of file diff --git a/static/img/conf/Sponsors/TheGraph.svg b/static/img/conf/Sponsors/TheGraph.svg new file mode 100644 index 0000000000..2e653dd2ca --- /dev/null +++ b/static/img/conf/Sponsors/TheGraph.svg @@ -0,0 +1,28 @@ + + + Logo / Purple / The-Graph-Logo + + + + + + + + + \ No newline at end of file diff --git a/static/img/conf/Sponsors/TheGuild.svg b/static/img/conf/Sponsors/TheGuild.svg new file mode 100644 index 0000000000..3181c71f98 --- /dev/null +++ b/static/img/conf/Sponsors/TheGuild.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/conf/around.svg b/static/img/conf/around.svg new file mode 100644 index 0000000000..fba2b96a80 --- /dev/null +++ b/static/img/conf/around.svg @@ -0,0 +1 @@ +around.svg \ No newline at end of file diff --git a/static/img/conf/bus.svg b/static/img/conf/bus.svg new file mode 100644 index 0000000000..d473e609b1 --- /dev/null +++ b/static/img/conf/bus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/conf/conf-bg.png b/static/img/conf/conf-bg.png new file mode 100644 index 0000000000..11733a1486 Binary files /dev/null and b/static/img/conf/conf-bg.png differ diff --git a/static/img/conf/graphql-conf-bg.png b/static/img/conf/graphql-conf-bg.png new file mode 100644 index 0000000000..df7e58c44b Binary files /dev/null and b/static/img/conf/graphql-conf-bg.png differ diff --git a/static/img/conf/graphql-conf-footer.png b/static/img/conf/graphql-conf-footer.png new file mode 100644 index 0000000000..84492ad1c8 Binary files /dev/null and b/static/img/conf/graphql-conf-footer.png differ diff --git a/static/img/conf/graphql-conf-header.svg b/static/img/conf/graphql-conf-header.svg new file mode 100644 index 0000000000..5d60eb3ed6 --- /dev/null +++ b/static/img/conf/graphql-conf-header.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/conf/graphql-conf-logo-simple.svg b/static/img/conf/graphql-conf-logo-simple.svg new file mode 100644 index 0000000000..33ef6ed204 --- /dev/null +++ b/static/img/conf/graphql-conf-logo-simple.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/static/img/conf/graphql-conf-logo.svg b/static/img/conf/graphql-conf-logo.svg new file mode 100644 index 0000000000..d897871672 --- /dev/null +++ b/static/img/conf/graphql-conf-logo.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/conf/logo-color.png b/static/img/conf/logo-color.png new file mode 100644 index 0000000000..fc9f5112cd Binary files /dev/null and b/static/img/conf/logo-color.png differ diff --git a/static/img/conf/parking.svg b/static/img/conf/parking.svg new file mode 100644 index 0000000000..c851c85308 --- /dev/null +++ b/static/img/conf/parking.svg @@ -0,0 +1 @@ +parking.svg \ No newline at end of file diff --git a/static/img/conf/sf-hotel-image.png b/static/img/conf/sf-hotel-image.png new file mode 100644 index 0000000000..c649a4fee8 Binary files /dev/null and b/static/img/conf/sf-hotel-image.png differ diff --git a/static/img/conf/social-pk.jpg b/static/img/conf/social-pk.jpg new file mode 100644 index 0000000000..741ac47a93 Binary files /dev/null and b/static/img/conf/social-pk.jpg differ diff --git a/static/img/conf/speakers/leebyron.jpg b/static/img/conf/speakers/leebyron.jpg new file mode 100644 index 0000000000..3377fd7ee3 Binary files /dev/null and b/static/img/conf/speakers/leebyron.jpg differ diff --git a/static/img/conf/speakers/marcandre.jpg b/static/img/conf/speakers/marcandre.jpg new file mode 100644 index 0000000000..93bbcbd723 Binary files /dev/null and b/static/img/conf/speakers/marcandre.jpg differ diff --git a/static/img/conf/train.svg b/static/img/conf/train.svg new file mode 100644 index 0000000000..b3efbd6d4f --- /dev/null +++ b/static/img/conf/train.svg @@ -0,0 +1,21 @@ + + train.svg + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/downarrow.svg b/static/img/downarrow.svg new file mode 100644 index 0000000000..66d1586245 --- /dev/null +++ b/static/img/downarrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/edit.svg b/static/img/edit.svg new file mode 100644 index 0000000000..73f71098d5 --- /dev/null +++ b/static/img/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/favicon.png b/static/img/favicon.png deleted file mode 100644 index c803c5c397..0000000000 Binary files a/static/img/favicon.png and /dev/null differ diff --git a/static/img/graphql-conf-logo.svg b/static/img/graphql-conf-logo.svg new file mode 100644 index 0000000000..0fb776ca75 --- /dev/null +++ b/static/img/graphql-conf-logo.svg @@ -0,0 +1,19 @@ + + GraphQLCon-2023__400x425_Event Logo White.svg + + + + + + + + + + + + diff --git a/static/img/graphql_conf-details-white.svg b/static/img/graphql_conf-details-white.svg new file mode 100644 index 0000000000..ba59ed770a --- /dev/null +++ b/static/img/graphql_conf-details-white.svg @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/graphql_conf-details.svg b/static/img/graphql_conf-details.svg new file mode 100644 index 0000000000..5dc175f061 --- /dev/null +++ b/static/img/graphql_conf-details.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/graphql_foundation-hero.jpg b/static/img/graphql_foundation-hero.jpg new file mode 100644 index 0000000000..b9ecc462fe Binary files /dev/null and b/static/img/graphql_foundation-hero.jpg differ diff --git a/static/img/graphql_foundation-logo-white.svg b/static/img/graphql_foundation-logo-white.svg new file mode 100644 index 0000000000..1f58e2cfba --- /dev/null +++ b/static/img/graphql_foundation-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/logo-gray.svg b/static/img/logo-gray.svg index a61c0167ab..b0d1234306 100644 --- a/static/img/logo-gray.svg +++ b/static/img/logo-gray.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/img/logo.svg b/static/img/logo.svg index e46a30b59a..cbf9d25cbe 100644 --- a/static/img/logo.svg +++ b/static/img/logo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/img/logos/discord.svg b/static/img/logos/discord.svg new file mode 100644 index 0000000000..99b89c3379 --- /dev/null +++ b/static/img/logos/discord.svg @@ -0,0 +1,10 @@ + + Discord + + diff --git a/static/img/logos/github.svg b/static/img/logos/github.svg new file mode 100644 index 0000000000..29e6680d00 --- /dev/null +++ b/static/img/logos/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/logos/gsoc.svg b/static/img/logos/gsoc.svg new file mode 100644 index 0000000000..d8bc8cd4e8 --- /dev/null +++ b/static/img/logos/gsoc.svg @@ -0,0 +1,41 @@ + + + + logo_lockup_summer_of_code_horizontal_Roboto + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/logos/stackoverflow.svg b/static/img/logos/stackoverflow.svg new file mode 100644 index 0000000000..3e88022c25 --- /dev/null +++ b/static/img/logos/stackoverflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/logos/twitter.svg b/static/img/logos/twitter.svg new file mode 100644 index 0000000000..e74d0a7da1 --- /dev/null +++ b/static/img/logos/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/menu-white.svg b/static/img/menu-white.svg new file mode 100644 index 0000000000..38f2f03a09 --- /dev/null +++ b/static/img/menu-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/menu.svg b/static/img/menu.svg new file mode 100644 index 0000000000..b23e0a3c49 --- /dev/null +++ b/static/img/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/news/annual-report-1.png b/static/img/news/annual-report-1.png new file mode 100644 index 0000000000..2acb7e540b Binary files /dev/null and b/static/img/news/annual-report-1.png differ diff --git a/static/img/news/annual-report-2.png b/static/img/news/annual-report-2.png new file mode 100644 index 0000000000..8cc7554213 Binary files /dev/null and b/static/img/news/annual-report-2.png differ diff --git a/static/img/news/annual-report-3.png b/static/img/news/annual-report-3.png new file mode 100644 index 0000000000..6600d67828 Binary files /dev/null and b/static/img/news/annual-report-3.png differ diff --git a/static/img/news/annual-report-4.png b/static/img/news/annual-report-4.png new file mode 100644 index 0000000000..ed6e80dee7 Binary files /dev/null and b/static/img/news/annual-report-4.png differ diff --git a/static/img/news/graphiql-parser.png b/static/img/news/graphiql-parser.png new file mode 100644 index 0000000000..44be5b6d25 Binary files /dev/null and b/static/img/news/graphiql-parser.png differ diff --git a/static/img/news/playground-transition-banner.png b/static/img/news/playground-transition-banner.png new file mode 100644 index 0000000000..e5258341f2 Binary files /dev/null and b/static/img/news/playground-transition-banner.png differ diff --git a/static/img/og-image.png b/static/img/og-image.png new file mode 100644 index 0000000000..466376270b Binary files /dev/null and b/static/img/og-image.png differ diff --git a/static/img/og_image.png b/static/img/og_image.png deleted file mode 100644 index 6cd0d29f7d..0000000000 Binary files a/static/img/og_image.png and /dev/null differ diff --git a/static/img/oss_logo.png b/static/img/oss_logo.png deleted file mode 100644 index 726ccdd9bd..0000000000 Binary files a/static/img/oss_logo.png and /dev/null differ diff --git a/static/img/report/amazon-web-services.svg b/static/img/report/amazon-web-services.svg new file mode 100644 index 0000000000..4760c9b813 --- /dev/null +++ b/static/img/report/amazon-web-services.svg @@ -0,0 +1 @@ +Amazon Web Services logo \ No newline at end of file diff --git a/static/img/report/apollo-graphql.svg b/static/img/report/apollo-graphql.svg new file mode 100644 index 0000000000..bd0ad9f93c --- /dev/null +++ b/static/img/report/apollo-graphql.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/report/expedia-group.svg b/static/img/report/expedia-group.svg new file mode 100644 index 0000000000..aa42b07ba8 --- /dev/null +++ b/static/img/report/expedia-group.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/img/report/facebook.svg b/static/img/report/facebook.svg new file mode 100644 index 0000000000..8bed232831 --- /dev/null +++ b/static/img/report/facebook.svg @@ -0,0 +1 @@ +facebook \ No newline at end of file diff --git a/static/img/report/hasura.svg b/static/img/report/hasura.svg new file mode 100644 index 0000000000..c17349e8cf --- /dev/null +++ b/static/img/report/hasura.svg @@ -0,0 +1 @@ +Hasura Technologies (member) logo \ No newline at end of file diff --git a/static/img/report/ibm.svg b/static/img/report/ibm.svg new file mode 100644 index 0000000000..08bbfc7a58 --- /dev/null +++ b/static/img/report/ibm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/report/novvum.svg b/static/img/report/novvum.svg new file mode 100644 index 0000000000..f92e564e5c --- /dev/null +++ b/static/img/report/novvum.svg @@ -0,0 +1,15 @@ + + + + Novvum SQUARED + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/static/img/report/paypal.svg b/static/img/report/paypal.svg new file mode 100644 index 0000000000..150f7badbc --- /dev/null +++ b/static/img/report/paypal.svg @@ -0,0 +1,39 @@ + +image/svg+xml \ No newline at end of file diff --git a/static/img/report/salsify.svg b/static/img/report/salsify.svg new file mode 100644 index 0000000000..b52588935f --- /dev/null +++ b/static/img/report/salsify.svg @@ -0,0 +1,669 @@ + +image/svg+xml \ No newline at end of file diff --git a/static/img/twitter_image.png b/static/img/twitter_image.png deleted file mode 100644 index 2f882ed5ae..0000000000 Binary files a/static/img/twitter_image.png and /dev/null differ diff --git a/static/users/logos/coursera.png b/static/users/logos/coursera.png index 421e2888b5..056f8d9252 100644 Binary files a/static/users/logos/coursera.png and b/static/users/logos/coursera.png differ diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000000..9b9be2577c --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,19 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./src/**/*.{js,jsx,ts,tsx}"], + theme: { + container: { + center: true, + padding: { + DEFAULT: "1rem", + sm: "2rem", + lg: "4rem", + xl: "5rem", + "2xl": "6rem", + }, + }, + extend: {}, + }, + plugins: [require("@tailwindcss/typography")], + darkMode: "class", +} diff --git a/tsconfig.json b/tsconfig.json index 4e6519fe90..bf16986469 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,18 @@ { - "compilerOptions": { - "module": "commonjs", - "target": "esnext", - "jsx": "preserve", - "lib": ["dom", "es2015", "es2017"], - "strict": true, - "noEmit": true, - "isolatedModules": true, - "esModuleInterop": true, - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "removeComments": false, - "preserveConstEnums": true - }, - "include": ["./src/**/*"] - } \ No newline at end of file + "compilerOptions": { + "module": "commonjs", + "target": "esnext", + "jsx": "preserve", + "lib": ["dom", "es2015", "es2017"], + "strict": true, + "noEmit": true, + "isolatedModules": true, + "esModuleInterop": true, + "skipLibCheck": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "removeComments": false, + "preserveConstEnums": true + }, + "include": ["./src/**/*"] +} diff --git a/yarn.lock b/yarn.lock index beb86c53ba..7601b038e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,441 +2,717 @@ # yarn lockfile v1 -"@ardatan/aggregate-error@0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" - integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== - dependencies: - tslib "~2.0.1" +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@ardatan/relay-compiler@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz#2e4cca43088e807adc63450e8cab037020e91106" + integrity sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.4.0" + chalk "^4.0.0" + fb-watchman "^2.0.0" + fbjs "^3.0.0" + glob "^7.1.1" + immutable "~3.7.6" + invariant "^2.2.4" + nullthrows "^1.1.1" + relay-runtime "12.0.0" + signedsource "^1.0.0" + yargs "^15.3.1" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" - integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== - -"@babel/core@7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" - integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.5" - "@babel/types" "^7.10.5" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.15.0", "@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.20.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" + integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== + +"@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== + +"@babel/core@^7.14.0": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.11.6": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.20.12", "@babel/core@^7.21.3": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.5", "@babel/generator@^7.11.6", "@babel/generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" - integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== - dependencies: - "@babel/types" "^7.12.1" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-builder-react-jsx-experimental@^7.12.1": - version "7.12.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" - integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.12.1" - "@babel/types" "^7.12.1" - -"@babel/helper-builder-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" - integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-compilation-targets@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50" - integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-validator-option" "^7.12.1" - browserslist "^4.12.0" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" - integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" -"@babel/helper-create-regexp-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" - integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.1" + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" -"@babel/helper-define-map@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" - integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== +"@babel/generator@^7.14.0", "@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" + integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" + "@babel/types" "^7.20.2" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" - integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== +"@babel/generator@^7.20.14", "@babel/generator@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.21.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== +"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4", "@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" - integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" - integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" - integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-simple-access" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/helper-validator-identifier" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - lodash "^4.17.19" + "@babel/types" "^7.18.6" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-plugin-utils@7.10.4", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" -"@babel/helper-regex@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" - integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== +"@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: - lodash "^4.17.19" + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" -"@babel/helper-remap-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" - integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/types" "^7.12.1" + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" -"@babel/helper-replace-supers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" - integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== +"@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" -"@babel/helper-simple-access@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" - integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== - dependencies: - "@babel/types" "^7.12.1" +"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz#3c08a5b5417c7f07b5cf3dfb6dc79cbec682e8c2" + integrity sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18" + integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" + integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + regexpu-core "^4.7.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== dependencies: - "@babel/types" "^7.12.1" + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.2.1" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: - "@babel/types" "^7.11.0" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-option@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" - integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== - -"@babel/helper-wrap-function@^7.10.4": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" - integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.10.4", "@babel/helpers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" - integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4", "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-member-expression-to-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== + dependencies: + "@babel/types" "^7.20.7" + +"@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" + +"@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-optimise-call-expression@^7.15.4", "@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4", "@babel/helper-replace-supers@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" + integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-simple-access@^7.15.4", "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" + integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== + dependencies: + "@babel/types" "^7.15.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-split-export-declaration@^7.15.4", "@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.10.5", "@babel/parser@^7.11.5", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== - -"@babel/plugin-proposal-async-generator-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" - integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-dynamic-import@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" - integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== + +"@babel/parser@^7.20.13", "@babel/parser@^7.20.7": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088" + integrity sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw== + +"@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" + integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" - integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" - integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" - integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.10.4", "@babel/plugin-proposal-numeric-separator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" - integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" - -"@babel/plugin-proposal-optional-catch-binding@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" - integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.11.0", "@babel/plugin-proposal-optional-chaining@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" - integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-private-methods@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" - integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" - integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" + integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.15.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" + integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -450,26 +726,47 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" + integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-jsx@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" - integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-jsx@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -478,7 +775,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -492,434 +789,629 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" - integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" - integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" - integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" + integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-block-scoped-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" - integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-block-scoping@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" - integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" -"@babel/plugin-transform-classes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" - integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" + integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" + integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a" + integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" + integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-optimise-call-expression" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" - integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== +"@babel/plugin-transform-classes@^7.20.2", "@babel/plugin-transform-classes@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" + integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-destructuring@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" - integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" - integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" + integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-duplicate-keys@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" - integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-exponentiation-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" - integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== +"@babel/plugin-transform-dotall-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" - integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" + integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-function-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" - integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" - integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-member-expression-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" - integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz#0dc9c1d11dcdc873417903d6df4bed019ef0f85e" + integrity sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-flow" "^7.14.5" -"@babel/plugin-transform-modules-amd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" - integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== +"@babel/plugin-transform-for-of@^7.0.0": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" + integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-modules-commonjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" - integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.12.1" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-systemjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" - integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== +"@babel/plugin-transform-function-name@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" + integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-identifier" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-modules-umd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" - integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" - integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== +"@babel/plugin-transform-literals@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" + integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-new-target@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" - integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-object-super@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" - integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" + integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" - integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" - integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-react-display-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" - integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" + integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.15.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-react-jsx-development@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz#0b8f8cd531dcf7991f1e5f2c10a2a4f1cfc78e36" - integrity sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ== +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" -"@babel/plugin-transform-react-jsx-self@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" - integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== +"@babel/plugin-transform-modules-commonjs@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" -"@babel/plugin-transform-react-jsx-source@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" - integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" -"@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz#c2d96c77c2b0e4362cc4e77a43ce7c2539d478cb" - integrity sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw== +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-pure-annotations@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" - integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-regenerator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" - integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-reserved-words@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" - integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== +"@babel/plugin-transform-object-super@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" + integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" -"@babel/plugin-transform-runtime@^7.11.5": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-shorthand-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" - integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" + integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-spread@^7.11.0", "@babel/plugin-transform-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" - integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-sticky-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" - integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" + integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-template-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" - integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-typeof-symbol@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" - integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== +"@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz#b32a5556100d424b25e388dd689050d78396884d" + integrity sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.15.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" + integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" - integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.12.1" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" - integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-unicode-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" - integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" + integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-jsx" "^7.14.5" + "@babel/types" "^7.14.9" -"@babel/preset-env@^7.11.5": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" - integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb" + integrity sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw== dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-compilation-targets" "^7.12.1" - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.20.7" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-runtime@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" + integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" + integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + +"@babel/plugin-transform-spread@^7.19.0", "@babel/plugin-transform-spread@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" + integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" + integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-typescript@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.1" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.1" - core-js-compat "^3.6.2" - semver "^5.5.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" -"@babel/preset-modules@^0.1.3": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -927,214 +1419,471 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.10.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" - integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== +"@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.12.1" - "@babel/plugin-transform-react-jsx" "^7.12.1" - "@babel/plugin-transform-react-jsx-development" "^7.12.1" - "@babel/plugin-transform-react-jsx-self" "^7.12.1" - "@babel/plugin-transform-react-jsx-source" "^7.12.1" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-typescript@^7.10.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" - integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.12.1" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/preset-typescript@^7.21.0": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz#b913ac8e6aa8932e47c21b01b4368d8aa239a529" + integrity sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/plugin-transform-modules-commonjs" "^7.21.2" + "@babel/plugin-transform-typescript" "^7.21.3" -"@babel/runtime-corejs3@^7.10.2": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.1.tgz#51b9092befbeeed938335a109dbe0df51451e9dc" - integrity sha512-umhPIcMrlBZ2aTWlWjUseW9LjQKxi1dpFlQS8DzsxB//5K+u6GLTC/JliPKHsd5kJVPIU6X/Hy0YvWOYPcMxBw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.10" -"@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== +"@babel/runtime@^7.13.10", "@babel/runtime@^7.20.13": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" -"@babel/standalone@^7.11.6": - version "7.12.4" - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.12.4.tgz#1493960e765308cc06e9a75ba1affbe65a11124b" - integrity sha512-9vw7RYK7CWh5MdTfLyC7j6hZmDYmm6DieFP4yetvpVftKQ+yrEY7ovhnhsVHznLqx5luU9Bx4k7xoEc3acrsow== +"@babel/runtime@^7.20.7": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.7.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.1" - "@babel/types" "^7.12.1" +"@babel/runtime@^7.21.0": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.13" + "@babel/types" "^7.20.7" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.19" -"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.16.8", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.4.4": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@graphql-tools/batch-execute@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b" - integrity sha512-+ywPfK6N2Ddna6oOa5Qb1Mv7EA8LOwRNOAPP9dL37FEhksJM9pYqPSceUcqMqg7S9b0+Cgr78s408rgvurV3/Q== +"@babel/types@^7.20.5", "@babel/types@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: - "@graphql-tools/utils" "^7.0.0" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" -"@graphql-tools/delegate@^7.0.0", "@graphql-tools/delegate@^7.0.1": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.0.3.tgz#d25028de64acc886be6e0514162aa6739d9acd51" - integrity sha512-BSRF/Wg9XNllWo3Kdt0QBBaFltexn3vAnTOWH1qLrNcmfQAvUMf17/TsAqH9ZLSKU1NW9XCOsd7YMHhhUuTCEg== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.0.0" - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.0.2" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/graphql-file-loader@^6.0.0": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.5.tgz#831289675e5f446baa19afbc0af8ea6bc94063bf" - integrity sha512-vYDn71FHqwCxWgw8swoVOsD5C0xGz/Lw4zUQnPcgZfAzhAAwl6e/rVWl/HF1UNNSf5CSZu+2oidjOWCI5Wl6Gg== - dependencies: - "@graphql-tools/import" "^6.2.4" - "@graphql-tools/utils" "^7.0.0" - fs-extra "9.0.1" - tslib "~2.0.1" - -"@graphql-tools/import@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.2.4.tgz#0547f6d4754a924e80439d6af013577cdb617194" - integrity sha512-Q6fk6hbtDevoEVcgwb3WRn7XOqGY4MnX3Mvc+x8/b8k4RZ4wT+0WSLRDXGAKiVKRxGhgouU2lZVnGE/LDrGSCg== - dependencies: - fs-extra "9.0.1" - resolve-from "5.0.0" - tslib "~2.0.1" - -"@graphql-tools/json-file-loader@^6.0.0": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.5.tgz#1357d2efd2f416f44e0dd717da06463c29adbf60" - integrity sha512-9LS7WuQdSHlRUvXD7ixt5aDpr3hWsueURHOaWe7T0xZ+KWMTw+LIRtWIliCRzbjNmZ+4ZhwHB3Vc1SO2bfYLgg== - dependencies: - "@graphql-tools/utils" "^7.0.0" - fs-extra "9.0.1" - tslib "~2.0.1" - -"@graphql-tools/load@^6.0.0": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.5.tgz#7dd0d34c8ce2cfb24f61c6beba2817d9afdd7f2b" - integrity sha512-TpDgp+id0hhD1iMhdFSgWgWumdI/IpFWwouJeaEhEEAEBkdvH4W9gbBiJBSbPQwMPRNWx8/AZtry0cYKLW4lHg== - dependencies: - "@graphql-tools/merge" "^6.2.5" - "@graphql-tools/utils" "^7.0.0" - globby "11.0.1" - import-from "3.0.0" - is-glob "4.0.1" - p-limit "3.0.2" - tslib "~2.0.1" - unixify "1.0.0" - valid-url "1.0.9" - -"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.5": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.5.tgz#a03d6711f2a468b8de97c0fe9092469280ca66c9" - integrity sha512-T2UEm7L5MeS1ggbGKBkdV9kTqLqSHQM13RrjPzIAYzkFL/mK837sf+oq8h2+R8B+senuHX8akUhMTcU85kcMvw== - dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" - -"@graphql-tools/schema@7.0.0", "@graphql-tools/schema@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.0.0.tgz#f87e307d00a3d388f5c54d32f4697611396c0127" - integrity sha512-yDKgoT2+Uf3cdLYmiFB9lRIGsB6lZhILtCXHgZigYgURExrEPmfj3ZyszfEpPKYcPmKaO9FI4coDhIN0Toxl3w== +"@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== dependencies: - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" -"@graphql-tools/schema@^6.0.14": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.2.4.tgz#cc4e9f5cab0f4ec48500e666719d99fc5042481d" - integrity sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ== - dependencies: - "@graphql-tools/utils" "^6.2.4" - tslib "~2.0.1" - -"@graphql-tools/url-loader@^6.0.0": - version "6.3.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.3.2.tgz#ed4e9dafcd83bda94ba7114629e712fc81a6a3ef" - integrity sha512-nrrZD33T7lFeOjIufCrwk2PAHYqFtdFcb1pe1ULWnvuFmFuhZnRCgIsfCsoy+WOMwmZHQ/eXBem//I/bewXlgw== - dependencies: - "@graphql-tools/delegate" "^7.0.1" - "@graphql-tools/utils" "^7.0.1" - "@graphql-tools/wrap" "^7.0.0" - "@types/websocket" "1.0.1" - cross-fetch "3.0.6" - subscriptions-transport-ws "0.9.18" - tslib "~2.0.1" - valid-url "1.0.9" - websocket "1.0.32" - -"@graphql-tools/utils@^6.0.0", "@graphql-tools/utils@^6.0.14", "@graphql-tools/utils@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.2.4.tgz#38a2314d2e5e229ad4f78cca44e1199e18d55856" - integrity sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg== +"@builder.io/partytown@^0.7.5": + version "0.7.6" + resolved "https://registry.yarnpkg.com/@builder.io/partytown/-/partytown-0.7.6.tgz#697acea6b552167a4dd43ddd4827018aa42e0364" + integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.1" - tslib "~2.0.1" + eslint-visitor-keys "^3.3.0" -"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.0.1", "@graphql-tools/utils@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.0.2.tgz#1977d3277158bf32df792a5ff76d3fdc04647a64" - integrity sha512-VQQ7krHeoXO0FS3qbWsb/vZb8c8oyiCYPIH4RSgeK9SKOUpatWYt3DW4jmLmyHZLVVMk0yjUbsOhKTBEMejKSA== +"@eslint-community/regexpp@^4.4.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" + integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.1" - tslib "~2.0.1" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" -"@graphql-tools/wrap@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.1.tgz#a93e548439d19a1be6f7a032c7561059ea589b70" - integrity sha512-0feqjgEJSRLm2V0kEUaV2dw7ukVPjRujYMqNdcqHsIyXmf0VO8PGF5hcva/+5U/9Yfbf3Fck+P5JTJ5MlXPlsQ== +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.2" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.42.0": + version "8.42.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.42.0.tgz#484a1d638de2911e6f5a30c12f49c7e4a3270fb6" + integrity sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw== + +"@gatsbyjs/parcel-namer-relative-to-cwd@^2.10.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.10.0.tgz#3ad8ba465cde801282809559190893aab1f42e8e" + integrity sha512-HRHJua+grDQbYYg7jeOecT0CwVrDTalZq8Zq9leyszF5PlaVx/4IjXovoO4DwY0LNvRXIBk0vYAozuMB4yGqBQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@parcel/namer-default" "2.8.3" + "@parcel/plugin" "2.8.3" + gatsby-core-utils "^4.10.0" + +"@gatsbyjs/reach-router@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@gatsbyjs/reach-router/-/reach-router-2.0.1.tgz#8c4ddb6c38589fb4650408430e51220e31d04fca" + integrity sha512-gmSZniS9/phwgEgpFARMpNg21PkYDZEpfgEzvkgpE/iku4uvXqCrxr86fXbTpI9mkrhKS1SCTYmLGe60VdHcdQ== + dependencies: + invariant "^2.2.4" + prop-types "^15.8.1" + +"@gatsbyjs/webpack-hot-middleware@^2.25.3": + version "2.25.3" + resolved "https://registry.yarnpkg.com/@gatsbyjs/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#a00c5f526cbe178330b967f7ed6a487751ffd795" + integrity sha512-ul17OZ8Dlw+ATRbnuU+kwxuAlq9lKbYz/2uBS1FLCdgoPTF1H2heP7HbUbgfMZbfRQNcCG2rMscMnr32ritCDw== + dependencies: + ansi-html-community "0.0.8" + html-entities "^2.3.3" + strip-ansi "^6.0.0" + +"@graphql-codegen/add@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-3.2.3.tgz#f1ecee085987e7c21841edc4b1fd48877c663e1a" + integrity sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.1" + tslib "~2.4.0" + +"@graphql-codegen/core@^2.6.8": + version "2.6.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-2.6.8.tgz#00c4011e3619ddbc6af5e41b2f254d6f6759556e" + integrity sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.1" + "@graphql-tools/schema" "^9.0.0" + "@graphql-tools/utils" "^9.1.1" + tslib "~2.4.0" + +"@graphql-codegen/plugin-helpers@^2.7.2": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz#6544f739d725441c826a8af6a49519f588ff9bed" + integrity sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg== + dependencies: + "@graphql-tools/utils" "^8.8.0" + change-case-all "1.0.14" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.4.0" + +"@graphql-codegen/plugin-helpers@^3.1.1", "@graphql-codegen/plugin-helpers@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz#69a2e91178f478ea6849846ade0a59a844d34389" + integrity sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg== + dependencies: + "@graphql-tools/utils" "^9.0.0" + change-case-all "1.0.15" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.4.0" + +"@graphql-codegen/schema-ast@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.6.1.tgz#8ba1b38827c034b51ecd3ce88622c2ae6cd3fe1a" + integrity sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-tools/utils" "^9.0.0" + tslib "~2.4.0" + +"@graphql-codegen/typescript-operations@^2.5.13": + version "2.5.13" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.13.tgz#f286c37f9c023356aacaa983ebd32e9e021a05ca" + integrity sha512-3vfR6Rx6iZU0JRt29GBkFlrSNTM6t+MSLF86ChvL4d/Jfo/JYAGuB3zNzPhirHYzJPCvLOAx2gy9ID1ltrpYiw== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-codegen/typescript" "^2.8.8" + "@graphql-codegen/visitor-plugin-common" "2.13.8" + auto-bind "~4.0.0" + tslib "~2.4.0" + +"@graphql-codegen/typescript@^2.8.8": + version "2.8.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.8.8.tgz#8c3b9153e334db43c65f8f31ced69b4c60d14861" + integrity sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-codegen/schema-ast" "^2.6.1" + "@graphql-codegen/visitor-plugin-common" "2.13.8" + auto-bind "~4.0.0" + tslib "~2.4.0" + +"@graphql-codegen/visitor-plugin-common@2.13.8": + version "2.13.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.8.tgz#09bc6317b227e5a278f394f4cef0d6c2d1910597" + integrity sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-tools/optimize" "^1.3.0" + "@graphql-tools/relay-operation-optimizer" "^6.5.0" + "@graphql-tools/utils" "^9.0.0" + auto-bind "~4.0.0" + change-case-all "1.0.15" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.4.0" + +"@graphql-tools/code-file-loader@^7.3.23": + version "7.3.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz#33793f9a1f8e74981f8ae6ec4ab7061f9713db15" + integrity sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/graphql-tag-pluck@7.5.2": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz#502f1e066e19d832ebdeba5f571d7636dc27572d" + integrity sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA== + dependencies: + "@babel/parser" "^7.16.8" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/load@^7.8.14": + version "7.8.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.8.14.tgz#f2356f9a5f658a42e33934ae036e4b2cadf2d1e9" + integrity sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg== + dependencies: + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + p-limit "3.1.0" + tslib "^2.4.0" + +"@graphql-tools/merge@8.3.11": + version "8.3.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.11.tgz#f5eab764e8d7032c1b7e32d5dc6dea5b2f5bb21e" + integrity sha512-IpZh8r8e8FycXaUv04xe5HQH9siD1tkS8MvaO8Wb2FaPXv15XSYP+Wsb2MUStpIqGfQxa6xY/+eEuxv+VqwXyg== + dependencies: + "@graphql-tools/utils" "9.1.0" + tslib "^2.4.0" + +"@graphql-tools/merge@^8.4.1": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.1.tgz#52879e5f73565f504ceea04fcd9ef90a6e733c62" + integrity sha512-hssnPpZ818mxgl5+GfyOOSnnflAxiaTn1A1AojZcIbh4J52sS1Q0gSuBR5VrnUDjuxiqoCotpXdAQl+K+U6KLQ== + dependencies: + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/merge@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.0.tgz#b0a3636c82716454bff88e9bb40108b0471db281" + integrity sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q== + dependencies: + "@graphql-tools/utils" "^10.0.0" + tslib "^2.4.0" + +"@graphql-tools/optimize@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.3.1.tgz#29407991478dbbedc3e7deb8c44f46acb4e9278b" + integrity sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/relay-operation-optimizer@^6.5.0": + version "6.5.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.11.tgz#93e8bd46257293b0878af698f843539430537fe7" + integrity sha512-afIcawEBYnLN/A0oGIi4wKPCSduhYcTkNCbplnFpfm0NSpQ6CfMs30rJwUrsKhkRmTi7wIpOhFk8i1Xe46LT0w== + dependencies: + "@ardatan/relay-compiler" "12.0.0" + "@graphql-tools/utils" "9.1.0" + tslib "^2.4.0" + +"@graphql-tools/schema@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.0.tgz#7b5f6b6a59f51c927de8c9069bde4ebbfefc64b3" + integrity sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg== + dependencies: + "@graphql-tools/merge" "^9.0.0" + "@graphql-tools/utils" "^10.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/schema@^9.0.0": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.9.tgz#aa24869a2231039dcd9b6b882a5c5cb186d1116e" + integrity sha512-hwg8trUytO5ayQ8bzL3+sAyXcu2rhKt5pLXpLO0/TMTN2nXd3DBO4mqx+Ra4Er2mE/msInGQ5EmZbxVBPv+hSg== + dependencies: + "@graphql-tools/merge" "8.3.11" + "@graphql-tools/utils" "9.1.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/schema@^9.0.18": + version "9.0.19" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" + integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== + dependencies: + "@graphql-tools/merge" "^8.4.1" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/utils@9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.1.0.tgz#c33893e0aa9cbd3760d94f1771477e722adb4e54" + integrity sha512-4Ketxo98IwKA/56LP6cI6PgQBwUCujszQcTNkzjq7liJPa2mLjKnmVOJ0bauMwKcEazeYuZagceljb0POmEGvQ== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.0.tgz#bfd3c78fb8c3d056d1f93956c83aaf1ab4a7dba6" + integrity sha512-ndBPc6zgR+eGU/jHLpuojrs61kYN3Z89JyMLwK3GCRkPv4EQn9EOr1UWqF1JO0iM+/jAVHY0mvfUxyrFFN9DUQ== dependencies: - "@graphql-tools/delegate" "^7.0.0" - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.0.0" - is-promise "4.0.0" - tslib "~2.0.1" + "@graphql-typed-document-node/core" "^3.1.1" + tslib "^2.4.0" + +"@graphql-tools/utils@^8.8.0": + version "8.13.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.13.1.tgz#b247607e400365c2cd87ff54654d4ad25a7ac491" + integrity sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@^9.0.0", "@graphql-tools/utils@^9.1.1": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.1.4.tgz#2c9e0aefc9655dd73247667befe3c850ec014f3f" + integrity sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" + integrity sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + tslib "^2.4.0" + +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== "@hapi/address@2.x.x": version "2.1.4" @@ -1180,70 +1929,609 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== +"@humanwhocodes/config-array@^0.11.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" -"@mdx-js/util@^2.0.0-next.8": - version "2.0.0-next.8" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-2.0.0-next.8.tgz#66ecc27b78e07a3ea2eb1a8fc5a99dfa0ba96690" - integrity sha512-T0BcXmNzEunFkuxrO8BFw44htvTPuAoKbLvTG41otyZBDV1Rs+JMddcUuaP5vXpTWtgD3grhcrPEwyx88RUumQ== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" -"@mikaelkristiansson/domready@^1.0.10": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@mikaelkristiansson/domready/-/domready-1.0.10.tgz#f6d69866c0857664e70690d7a0bfedb72143adb5" - integrity sha512-6cDuZeKSCSJ1KvfEQ25Y8OXUjqDJZ+HgUs6dhASWbAX8fxVraTfPsSeRe2bN+4QJDsgUaXaMWBYfRomCr04GGg== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": + version "0.15.12" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" + integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig== + +"@lezer/lr@^0.15.4": + version "0.15.8" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" + integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== + dependencies: + "@lezer/common" "^0.15.0" + +"@lmdb/lmdb-darwin-arm64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe" + integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A== + +"@lmdb/lmdb-darwin-arm64@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.3.tgz#c423b068165df18da57a81dce5c95f98c6ab9265" + integrity sha512-RXwGZ/0eCqtCY8FLTM/koR60w+MXyvBUpToXiIyjOcBnC81tAlTUHrRUavCEWPI9zc9VgvpK3+cbumPyR8BSuA== + +"@lmdb/lmdb-darwin-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc" + integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA== + +"@lmdb/lmdb-darwin-x64@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz#dde76e65595b34a17289a63f770a8aee13a85a9b" + integrity sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA== + +"@lmdb/lmdb-linux-arm64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268" + integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ== + +"@lmdb/lmdb-linux-arm64@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz#d98f32383d37a058e6c51b7ffd665c2c2f91c285" + integrity sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q== + +"@lmdb/lmdb-linux-arm@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1" + integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw== + +"@lmdb/lmdb-linux-arm@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz#6251143d7b470e126b0b0fc17ae64c6680e268b2" + integrity sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg== + +"@lmdb/lmdb-linux-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee" + integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q== + +"@lmdb/lmdb-linux-x64@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz#ef3a9793391ab4a68379e753943c9055fd0f5bf3" + integrity sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow== + +"@lmdb/lmdb-win32-x64@2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5" + integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA== + +"@lmdb/lmdb-win32-x64@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz#c72e8b6faae31d925d23a6db0379cc3fe0216fdd" + integrity sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA== + +"@mischnic/json-sourcemap@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" + integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA== + dependencies: + "@lezer/common" "^0.15.7" + "@lezer/lr" "^0.15.4" + json5 "^2.2.1" + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz#901c5937e1441572ea23e631fe6deca68482fe76" + integrity sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz#fb877fe6bae3c4d3cea29786737840e2ae689066" + integrity sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz#986179c38b10ac41fbdaf7d036c825cbc72855d9" + integrity sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA== + +"@msgpackr-extract/msgpackr-extract-linux-arm@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz#15f2c6fe9e0adc06c21af7e95f484ff4880d79ce" + integrity sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg== + +"@msgpackr-extract/msgpackr-extract-linux-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz#30cae5c9a202f3e1fa1deb3191b18ffcb2f239a2" + integrity sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw== + +"@msgpackr-extract/msgpackr-extract-win32-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz#016d855b6bc459fd908095811f6826e45dd4ba64" + integrity sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pieh/friendly-errors-webpack-plugin@1.7.0-chalk-2": - version "1.7.0-chalk-2" - resolved "https://registry.yarnpkg.com/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz#2e9da9d3ade9d18d013333eb408c457d04eabac0" - integrity sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw== +"@parcel/bundler-default@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.8.3.tgz#d64739dbc2dbd59d6629861bf77a8083aced5229" + integrity sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg== dependencies: - chalk "^2.4.2" - error-stack-parser "^2.0.0" - string-width "^2.0.0" - strip-ansi "^3" + "@parcel/diagnostic" "2.8.3" + "@parcel/graph" "2.8.3" + "@parcel/hash" "2.8.3" + "@parcel/plugin" "2.8.3" + "@parcel/utils" "2.8.3" + nullthrows "^1.1.1" -"@pmmmwh/react-refresh-webpack-plugin@^0.4.1": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== +"@parcel/cache@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.8.3.tgz#169e130cf59913c0ed9fadce1a450e68f710e16f" + integrity sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ== + dependencies: + "@parcel/fs" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/utils" "2.8.3" + lmdb "2.5.2" + +"@parcel/codeframe@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.8.3.tgz#84fb529ef70def7f5bc64f6c59b18d24826f5fcc" + integrity sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg== + dependencies: + chalk "^4.1.0" + +"@parcel/compressor-raw@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz#301753df8c6de967553149639e8a4179b88f0c95" + integrity sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg== + dependencies: + "@parcel/plugin" "2.8.3" + +"@parcel/core@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.8.3.tgz#22a69f36095d53736ab10bf42697d9aa5f4e382b" + integrity sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + "@parcel/cache" "2.8.3" + "@parcel/diagnostic" "2.8.3" + "@parcel/events" "2.8.3" + "@parcel/fs" "2.8.3" + "@parcel/graph" "2.8.3" + "@parcel/hash" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/package-manager" "2.8.3" + "@parcel/plugin" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + "@parcel/workers" "2.8.3" + abortcontroller-polyfill "^1.1.9" + base-x "^3.0.8" + browserslist "^4.6.6" + clone "^2.1.1" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + json5 "^2.2.0" + msgpackr "^1.5.4" + nullthrows "^1.1.1" + semver "^5.7.1" + +"@parcel/diagnostic@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.8.3.tgz#d560276d5d2804b48beafa1feaf3fc6b2ac5e39d" + integrity sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ== + dependencies: + "@mischnic/json-sourcemap" "^0.1.0" + nullthrows "^1.1.1" + +"@parcel/events@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.8.3.tgz#205f8d874e6ecc2cbdb941bf8d54bae669e571af" + integrity sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w== + +"@parcel/fs-search@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.8.3.tgz#1c7d812c110b808758f44c56e61dfffdb09e9451" + integrity sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ== + dependencies: + detect-libc "^1.0.3" + +"@parcel/fs@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.8.3.tgz#80536afe877fc8a2bd26be5576b9ba27bb4c5754" + integrity sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ== + dependencies: + "@parcel/fs-search" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + "@parcel/watcher" "^2.0.7" + "@parcel/workers" "2.8.3" + +"@parcel/graph@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.8.3.tgz#00ffe8ec032e74fee57199e54529f1da7322571d" + integrity sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg== + dependencies: + nullthrows "^1.1.1" + +"@parcel/hash@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.8.3.tgz#bc2499a27395169616cad2a99e19e69b9098f6e9" + integrity sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw== + dependencies: + detect-libc "^1.0.3" + xxhash-wasm "^0.4.2" + +"@parcel/logger@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.8.3.tgz#e14e4debafb3ca9e87c07c06780f9afc38b2712c" + integrity sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/events" "2.8.3" + +"@parcel/markdown-ansi@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz#1337d421bb1133ad178f386a8e1b746631bba4a1" + integrity sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ== + dependencies: + chalk "^4.1.0" + +"@parcel/namer-default@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.8.3.tgz#5304bee74beb4b9c1880781bdbe35be0656372f4" + integrity sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw== dependencies: - ansi-html "^0.0.7" + "@parcel/diagnostic" "2.8.3" + "@parcel/plugin" "2.8.3" + nullthrows "^1.1.1" + +"@parcel/node-resolver-core@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz#581df074a27646400b3fed9da95297b616a7db8f" + integrity sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/utils" "2.8.3" + nullthrows "^1.1.1" + semver "^5.7.1" + +"@parcel/optimizer-terser@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz#3a06d98d09386a1a0ae1be85376a8739bfba9618" + integrity sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/plugin" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.8.3" + nullthrows "^1.1.1" + terser "^5.2.0" + +"@parcel/package-manager@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.8.3.tgz#ddd0d62feae3cf0fb6cc0537791b3a16296ad458" + integrity sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/fs" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + "@parcel/workers" "2.8.3" + semver "^5.7.1" + +"@parcel/packager-js@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.8.3.tgz#3ed11565915d73d12192b6901c75a6b820e4a83a" + integrity sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/hash" "2.8.3" + "@parcel/plugin" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.8.3" + globals "^13.2.0" + nullthrows "^1.1.1" + +"@parcel/packager-raw@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.8.3.tgz#bdec826df991e186cb58691cc45d12ad5c06676e" + integrity sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA== + dependencies: + "@parcel/plugin" "2.8.3" + +"@parcel/plugin@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.8.3.tgz#7bb30a5775eaa6473c27f002a0a3ee7308d6d669" + integrity sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw== + dependencies: + "@parcel/types" "2.8.3" + +"@parcel/reporter-dev-server@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz#a0daa5cc015642684cea561f4e0e7116bbffdc1c" + integrity sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ== + dependencies: + "@parcel/plugin" "2.8.3" + "@parcel/utils" "2.8.3" + +"@parcel/resolver-default@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.8.3.tgz#5ae41e537ae4a793c1abb47f094482b9e2ac3535" + integrity sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A== + dependencies: + "@parcel/node-resolver-core" "2.8.3" + "@parcel/plugin" "2.8.3" + +"@parcel/runtime-js@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.8.3.tgz#0baa4c8fbf77eabce05d01ccc186614968ffc0cd" + integrity sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ== + dependencies: + "@parcel/plugin" "2.8.3" + "@parcel/utils" "2.8.3" + nullthrows "^1.1.1" + +"@parcel/source-map@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== + dependencies: + detect-libc "^1.0.3" + +"@parcel/transformer-js@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.8.3.tgz#fe400df428394d1e7fe5afb6dea5c7c858e44f03" + integrity sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/plugin" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/utils" "2.8.3" + "@parcel/workers" "2.8.3" + "@swc/helpers" "^0.4.12" + browserslist "^4.6.6" + detect-libc "^1.0.3" + nullthrows "^1.1.1" + regenerator-runtime "^0.13.7" + semver "^5.7.1" + +"@parcel/transformer-json@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.8.3.tgz#25deb3a5138cc70a83269fc5d39d564609354d36" + integrity sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg== + dependencies: + "@parcel/plugin" "2.8.3" + json5 "^2.2.0" + +"@parcel/types@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.8.3.tgz#3306bc5391b6913bd619914894b8cd84a24b30fa" + integrity sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw== + dependencies: + "@parcel/cache" "2.8.3" + "@parcel/diagnostic" "2.8.3" + "@parcel/fs" "2.8.3" + "@parcel/package-manager" "2.8.3" + "@parcel/source-map" "^2.1.1" + "@parcel/workers" "2.8.3" + utility-types "^3.10.0" + +"@parcel/utils@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.8.3.tgz#0d56c9e8e22c119590a5e044a0e01031965da40e" + integrity sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA== + dependencies: + "@parcel/codeframe" "2.8.3" + "@parcel/diagnostic" "2.8.3" + "@parcel/hash" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/markdown-ansi" "2.8.3" + "@parcel/source-map" "^2.1.1" + chalk "^4.1.0" + +"@parcel/watcher@^2.0.7": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.1.0.tgz#5f32969362db4893922c526a842d8af7a8538545" + integrity sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw== + dependencies: + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" + +"@parcel/workers@2.8.3": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.3.tgz#255450ccf4db234082407e4ddda5fd575f08c235" + integrity sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg== + dependencies: + "@parcel/diagnostic" "2.8.3" + "@parcel/logger" "2.8.3" + "@parcel/types" "2.8.3" + "@parcel/utils" "2.8.3" + chrome-trace-event "^1.0.2" + nullthrows "^1.1.1" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.10": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" source-map "^0.7.3" -"@reach/router@^1.3.4": +"@pnpm/network.ca-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz#16f88d057c68cd5419c1ef3dfa281296ea80b047" + integrity sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^1.0.4": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz#3475541fb71d7b6ce68acaaa3392eae9fedf3276" + integrity sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A== + dependencies: + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@radix-ui/react-aspect-ratio@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.0.2.tgz#4d40e9d80d861ae5805e951bc319802d2d65a96e" + integrity sha512-YCujQYnwcVcakbdhE8eTjhh4QR8CsngEcRlSzIPWw1vp3KPC9orETo8CxuVM65j5HAp0oFoOlIy6v7SuF+9P+Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.2" + +"@radix-ui/react-compose-refs@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-icons@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-icons/-/react-icons-1.3.0.tgz#c61af8f323d87682c5ca76b856d60c2312dbcb69" + integrity sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw== + +"@radix-ui/react-primitive@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.2.tgz#54e22f49ca59ba88d8143090276d50b93f8a7053" + integrity sha512-zY6G5Qq4R8diFPNwtyoLRZBxzu1Z+SXMlfYpChN7Dv8gvmx9X3qhDqiLWvKseKVJMuedFeU/Sa0Sy/Ia+t06Dw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-slot@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + +"@reach/router@1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== @@ -1253,37 +2541,37 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@sideway/address@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.0.tgz#0b301ada10ac4e0e3fa525c90615e0b61a72b78d" - integrity sha512-wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA== +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/is@^4.0.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca" + integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw== -"@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== +"@sindresorhus/is@^5.2.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" + integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== -"@sindresorhus/slugify@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.0.tgz#2f195365d9b953384305b62664b44b4036c49430" - integrity sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw== +"@sindresorhus/slugify@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.2.tgz#c2c0129298b8caace2d9156176fe244d0e83156c" + integrity sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA== dependencies: "@sindresorhus/transliterate" "^0.1.1" escape-string-regexp "^4.0.0" @@ -1296,56 +2584,239 @@ escape-string-regexp "^2.0.0" lodash.deburr "^4.1.0" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.0.0.tgz#023cd0895b98521f566060d6bb92100b9fee3775" + integrity sha512-UKrY3860AQICgH7g+6h2zkoxeVEPLYwX/uAjmqo4PIq2FIHppwhIqZstIyTz0ZtlwreKR41O3W3BzsBBiJV2Aw== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.0.0.tgz#6d78100b3b6daf11c940b82d5bd8c3164b9c6ad9" + integrity sha512-KLcjiZychInVrhs86OvcYPLTFu9L5XV2vj0XAaE1HwE3J3jLmIzRY8ttdeAg/iFyp8nhavJpafpDZTt+1LIpkQ== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.0.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.0.0.tgz#e96829cdb0473345d5671568282ee0736e86ef12" + integrity sha512-aJKtc+Pie/rFYsVH/unSkDaZGvEeylNv/s2cP+ta9/rYWxRVvoV/S4Qw65Kmrtah4CBK5PM6ISH9qUH7IJQCng== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.0.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.0.1.tgz#b9495e06062cc0cac0e035751b69471ee328236b" + integrity sha512-bfCFb+4ZsM3UuKP2t7KmDwn6YV8qVn9HIQJmau6xeQb/iV65Rpi7NBNBWA2hcCd4GKoCqG8hpaaDk5FDR0eH+g== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.0.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.0.1.tgz#df0199313fdc88c3d7cd8e0dff16695e9718548c" + integrity sha512-29OJ1QmJgnohQHDAgAuY2h21xWD6TZiXji+hnx+W635RiXTAlHTbjrZDktfqzkN0bOeQEtNe+xgq73/XeWFfSg== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + +"@svgr/webpack@^8.0.0": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.0.1.tgz#a0e4a711daae347b515335449d198a275b3ab1e4" + integrity sha512-zSoeKcbCmfMXjA11uDuCJb+1LWNb3vy6Qw/VHj0Nfcl3UuqwuoZWknHsBIhCWvi4wU9vPui3aq054qjVyZqY4A== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.0.0" + "@svgr/plugin-jsx" "8.0.1" + "@svgr/plugin-svgo" "8.0.1" + +"@swc/helpers@^0.4.12": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" + integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== + dependencies: + tslib "^2.4.0" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - defer-to-connect "^1.0.1" + defer-to-connect "^2.0.0" -"@turist/fetch@^7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.1.7.tgz#a2b1f7ec0265e6fe0946c51eef34bad9b9efc865" - integrity sha512-XP20kvfyMNlWdPVQXyuzA40LoCHbbJptikt7W+TlZ5sS+NNjk70xjXCtHBLEudp7li3JldXEFSIUzpW1a0WEhA== +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@tailwindcss/typography@0.5.9": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.9.tgz#027e4b0674929daaf7c921c900beee80dbad93e8" + integrity sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg== + dependencies: + lodash.castarray "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + postcss-selector-parser "6.0.10" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@turist/fetch@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.2.0.tgz#57df869df1cd9b299588554eec4b8543effcc714" + integrity sha512-2x7EGw+6OJ29phunsbGvtxlNmSfcuPcyYudkMbi8gARCP9eJ1CtuMvnVUHL//O9Ixi9SJiug8wNt6lj86pN8XQ== dependencies: "@types/node-fetch" "2" -"@turist/time@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@turist/time/-/time-0.0.1.tgz#57637d2a7d1860adb9f9cecbdcc966ce4f551d63" - integrity sha512-M2BiThcbxMxSKX8W4z5u9jKZn6datnM3+FpEU+eYw0//l31E2xhqi7vTAuJ/Sf0P3yhp66SDJgPu3bRRpvrdQQ== +"@turist/time@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@turist/time/-/time-0.0.2.tgz#32fe0ce708ea0f4512776bd313409f1459976dda" + integrity sha512-qLOvfmlG2vCVw5fo/oz8WAZYlpe5a5OurgTj3diIxJCdjRHpapC+vQCz3er9LV79Vcat+DifBjeAhOAdmndtDQ== + +"@types/cacheable-request@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" -"@types/codemirror@0.0.98": - version "0.0.98" - resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.98.tgz#b35c7a4ab1fc1684b08a4e3eb65240020556ebfb" - integrity sha512-cbty5LPayy2vNSeuUdjNA9tggG+go5vAxmnLDRWpiZI5a+RDBi9dlozy4/jW/7P/gletbBWbQREEa7A81YxstA== +"@types/codemirror@5.60.7": + version "5.60.7" + resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.7.tgz#efbb78e5e79f90c6762c2127c02096648e600808" + integrity sha512-QXIC+RPzt/1BGSuD6iFn6UMC9TDp+9hkOANYNPVsjjrDdzKphfRkwQDKGp2YaC54Yhz0g6P5uYTCCibZZEiMAA== dependencies: "@types/tern" "*" -"@types/common-tags@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.0.tgz#79d55e748d730b997be5b7fce4b74488d8b26a6b" - integrity sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg== +"@types/common-tags@^1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.1.tgz#a5a49ca5ebbb58e0f8947f3ec98950c8970a68a9" + integrity sha512-20R/mDpKSPWdJs5TOpz3e7zqbeCNuMCPhV7Yndk9KU2Rbij2r5W4RzwDPkzC+2lzUqXYu9rFzTktCBnDjHuNQg== "@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/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.13" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" + integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== + dependencies: + "@types/node" "*" + "@types/debug@^0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ== -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" "@types/estree@*": - version "0.0.45" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/events@*": version "3.0.0" @@ -1357,7 +2828,7 @@ resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-3.2.0.tgz#f9e0a11443cc21336470185eae3dfba4495d29bc" integrity sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q== -"@types/glob@*", "@types/glob@^7.1.1": +"@types/glob@*": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== @@ -1374,57 +2845,51 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/history@*": - version "4.7.8" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" - integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== - -"@types/http-proxy@^1.17.4": - version "1.17.4" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" - integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== +"@types/hast@^2.0.0": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.2.tgz#236201acca9e2695e42f713d7dd4f151dc2982e4" + integrity sha512-Op5W7jYgZI7AWKY5wQ0/QNMzQM7dGQPyW1rXKNiymVCy5iTfdPuGu4HhYNOM2sIv8gUfIuIdcYlXmAepwaowow== dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + "@types/unist" "*" -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" +"@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== +"@types/http-proxy@^1.17.11": + version "1.17.11" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" + integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" + "@types/node" "*" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/keyv@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" + integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== + dependencies: + "@types/node" "*" + "@types/lodash@^4.14.92": version "4.14.164" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== -"@types/mdast@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" - integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== +"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b" + integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg== dependencies: "@types/unist" "*" @@ -1448,10 +2913,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "14.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f" - integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw== +"@types/node@*", "@types/node@>=10.0.0": + version "16.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" + integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== "@types/node@^8.5.7": version "8.10.66" @@ -1463,33 +2928,25 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prismjs@1.16.2": - version "1.16.2" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.16.2.tgz#c130c977191c988cb35e97585da5d580948cc2d2" - integrity sha512-1M/j21xgTde7RPtpJVQebW5rzrquj7S+wnqt4x9uWrIPpr0Ya/uXypcqC2aUQL5gtLXFCKSH7GnjfAijMdfbuA== +"@types/parse5@^5.0.0": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/prismjs@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654" + integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ== "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/reach__router@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.6.tgz#413417ce74caab331c70ce6a03a4c825188e4709" - integrity sha512-RHYataCUPQnt+GHoASyRLq6wmZ0n8jWlBW8Lxcwd30NN6vQfbmTeoSDfkgxO0S1lEzArp8OFDsq5KIs7FygjtA== - dependencies: - "@types/history" "*" - "@types/react" "*" - -"@types/react-helmet@6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.0.tgz#af586ed685f4905e2adc7462d1d65ace52beee7a" - integrity sha512-PYRoU1XJFOzQ3BHvWL1T8iDNbRjdMDJMT5hFmZKGbsq09kbSqJy61uwEpTrbTNWDopVphUT34zUSVLK9pjsgYQ== +"@types/reach__router@^1.3.10": + version "1.3.10" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.10.tgz#141d500213a452d9d9d71d5ad96c4104094f55a3" + integrity sha512-iHAFGaVOrWi00/q7oBybggGsz5TOmwOW4M1H9sT7i9lly4qFC8XOgsdf6jUsoaOz2sknFHALEtZqCoDbokdJ2Q== dependencies: "@types/react" "*" @@ -1501,6 +2958,13 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/rimraf@^2.0.2": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" @@ -1509,6 +2973,11 @@ "@types/glob" "*" "@types/node" "*" +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + "@types/tern@*": version "0.23.3" resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" @@ -1526,233 +2995,275 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/vfile-message@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" - integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== - dependencies: - vfile-message "*" - -"@types/vfile@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" - integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== - dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message" "*" - -"@types/websocket@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" - integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19" - integrity sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g== - dependencies: - "@types/yargs-parser" "*" - "@types/yoga-layout@1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== -"@typescript-eslint/eslint-plugin@^2.24.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== +"@typescript-eslint/eslint-plugin@^5.57.0": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz#a350faef1baa1e961698240f922d8de1761a9e2b" + integrity sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.59.6" + "@typescript-eslint/type-utils" "5.59.6" + "@typescript-eslint/utils" "5.59.6" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" + integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== + dependencies: + "@typescript-eslint/scope-manager" "5.59.7" + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/typescript-estree" "5.59.7" + debug "^4.3.4" + +"@typescript-eslint/parser@^5.57.0": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.6.tgz#bd36f71f5a529f828e20b627078d3ed6738dbb40" + integrity sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA== + dependencies: + "@typescript-eslint/scope-manager" "5.59.6" + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/typescript-estree" "5.59.6" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz#d43a3687aa4433868527cfe797eb267c6be35f19" + integrity sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + +"@typescript-eslint/scope-manager@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" + integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + +"@typescript-eslint/type-utils@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz#37c51d2ae36127d8b81f32a0a4d2efae19277c48" + integrity sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ== + dependencies: + "@typescript-eslint/typescript-estree" "5.59.6" + "@typescript-eslint/utils" "5.59.6" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" + integrity sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA== + +"@typescript-eslint/types@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" + integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== + +"@typescript-eslint/typescript-estree@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" + integrity sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" + integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + "@typescript-eslint/visitor-keys" "5.59.7" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.6.tgz#82960fe23788113fc3b1f9d4663d6773b7907839" + integrity sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.59.6" + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/typescript-estree" "5.59.6" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz#673fccabf28943847d0c8e9e8d008e3ada7be6bb" + integrity sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q== + dependencies: + "@typescript-eslint/types" "5.59.6" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@5.59.7": + version "5.59.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" + integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== + dependencies: + "@typescript-eslint/types" "5.59.7" + eslint-visitor-keys "^3.3.0" + +"@vercel/webpack-asset-relocator-loader@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz#e65ca1fd9feb045039788f9b4710e5acc84b01b0" + integrity sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.24.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" + resolve "^1.10.0" -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== +"@weknow/gatsby-remark-twitter@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@weknow/gatsby-remark-twitter/-/gatsby-remark-twitter-0.2.3.tgz#2b9292cc077196ebc6fbacf2af30bfe82f1f0f2e" + integrity sha512-24//k4QPUcZUv1f2ev4AzxBDMhvRdOyj/yiVDJ579WlsWZjKayPAi7TgeLRuejBTs4mfx3aBv4N/kD/oDvwsXw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" + babel-runtime "^6.26.0" + node-fetch "^2.3.0" + unist-util-visit "^1.1.3" "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1764,63 +3275,85 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: +abortcontroller-polyfill@^1.1.9: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +accepts@~1.3.4, accepts@~1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.24" + negotiator "0.6.2" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-loose@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.3.0.tgz#0cd62461d21dce4f069785f8d3de136d5525029a" + integrity sha512-75lAs9H19ldmW+fAbyqHdjgdCrz0pWGXKmnqFoh8PyVd1L2RIb4RzYrSjmopeqv3E1G3/Pimu6GgLlrGbrkF7w== + dependencies: + acorn "^8.5.0" -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-walk@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.4.1: +acorn@^6.2.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1: +acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -address@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" - integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +acorn@^8.5.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= +acorn@^8.7.1, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" +address@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== +address@^1.0.1, address@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.1.tgz#25bb61095b7522d65b357baa11bc05492d4c8acd" + integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1830,10 +3363,20 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +ajv@^8.0.1: + version "8.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" + integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +anser@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/anser/-/anser-2.1.1.tgz#8afae28d345424c82de89cc0e4d1348eb0c5af7c" + integrity sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ== ansi-align@^3.0.0: version "3.0.0" @@ -1842,12 +3385,12 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: +ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -1859,37 +3402,27 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-html@0.0.7, ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== 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.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1903,37 +3436,39 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -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" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= + application-config-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" integrity sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8= -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1941,184 +3476,110 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -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.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-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= +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -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= +aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" 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.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" array-iterate@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7" integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA== -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-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-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -array.prototype.flat@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" -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@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.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= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== +assert@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== dependencies: - object-assign "^4.1.1" - util "0.10.3" - -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= + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" 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= -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-cache@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/async-cache/-/async-cache-1.1.0.tgz#4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a" - integrity sha1-SppaidBl7F2OUlS9nulrp2xTK1o= - dependencies: - lru-cache "^4.0.0" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-retry-ng@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async-retry-ng/-/async-retry-ng-2.0.1.tgz#f5285ec1c52654a2ba6a505d0c18b1eadfaebd41" - integrity sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 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.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2129,91 +3590,80 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +auto-bind@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== -autoprefixer@^9.8.4: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@10.4.14, autoprefixer@^10.4.14: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -axe-core@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb" - integrity sha512-arU1h31OGFu+LPrOLGZ7nB45v940NMDMEJeNmbutu57P+UFDVnkZg3e+J1I2HJRZ9hT7gO8J91dn/PMrAiKakA== +available-typed-arrays@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" + integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" - integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== +axe-core@^4.6.2: + version "4.6.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: follow-redirects "^1.10.0" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -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= +axios@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.6.tgz#eacb6d065baa11bad5959e7ffa0cb6745c65f392" + integrity sha512-rC/7F08XxZwjMV4iuWv+JpD3E0Ksqg9nac4IIg6RwNuF0JTeWoCo/mBNG54+tNhhI11G3/VDRbdDQTs9hGp4pQ== dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -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== + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" + deep-equal "^2.0.5" -babel-loader@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== +babel-jsx-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz#304ce4fce0c86cbeee849551a45eb4ed1036381a" + integrity sha512-Mh1j/rw4xM9T3YICkw22aBQ78FhsHdsmlb9NEk4uVAFBOg+Ez9ZgXXHugoBPCZui3XLomk/7/JBBH4daJqTkQQ== + +babel-loader@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" schema-utils "^2.6.5" -babel-plugin-add-module-exports@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.3.3.tgz#b9f7c0a93b989170dce07c3e97071a905a13fc29" - integrity sha512-hC37mm7aAdEb1n8SgggG8a1QuhZapsY/XLCi4ETSH6AVjXBCWEa50CXlOsAMPPWLnSx5Ns6mzz39uvuseh0Xjg== - optionalDependencies: - chokidar "^2.0.4" +babel-plugin-add-module-exports@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b" + integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg== babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" @@ -2222,7 +3672,7 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-lodash@3.3.4: +babel-plugin-lodash@^3.3.4: 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== @@ -2233,44 +3683,111 @@ babel-plugin-lodash@3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" -babel-plugin-remove-graphql-queries@^2.9.20: - version "2.9.20" - resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.20.tgz#69ad42efdb3b4340992080afba101d2d1a2843b2" - integrity sha512-FB4tIvdXaGFBFhHAzlqB0NxVA5BcjzVYbY8ut7ProStW3cjv208ADMlfzmPdSP/I1Z0wl2MrXgHNCrL1TQ/Mew== +babel-plugin-remove-graphql-queries@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-5.10.0.tgz#0748944250e7aced4b91c62644c437516cdcf6ae" + integrity sha512-YVjBg0RD6aHE8LOWeuDSqadOB2lPV9FeGpc32rLClaDK+wHdIPaXYqUd9ty30UY30PfB/gDclyexXlfv7qgcxA== + dependencies: + "@babel/runtime" "^7.20.13" + "@babel/types" "^7.20.7" + gatsby-core-utils "^4.10.0" + +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-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-preset-gatsby@^0.5.15: - version "0.5.15" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.5.15.tgz#03b25bd6a12bbd4267612dd9425bc38ec106bd4c" - integrity sha512-0eno/GAvzmaLW/s+RzsLXrZVQwBMZYU/zMv1HpArGlYbNCon/fK53/Bz3pklJDq1pNAybXQ2RROpPHDyJM2EGA== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-gatsby@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-3.10.0.tgz#9bda03127130ac1a4896d57e0c220621534d248f" + integrity sha512-sogPa6DBrH2fZpiVOD6mYDCbnX/OEExl4jtZzfYPuKjcFDKPs8hs6lmmeLIdXKZhLIM2tJhJXQV/bqYlwWRARw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.11.5" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/preset-env" "^7.11.5" - "@babel/preset-react" "^7.10.4" - "@babel/runtime" "^7.11.2" + "@babel/plugin-transform-classes" "^7.20.7" + "@babel/plugin-transform-runtime" "^7.19.6" + "@babel/plugin-transform-spread" "^7.20.7" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/runtime" "^7.20.13" babel-plugin-dynamic-import-node "^2.3.3" - babel-plugin-macros "^2.8.0" + babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^1.3.23" - gatsby-legacy-polyfills "^0.0.6" + gatsby-core-utils "^4.10.0" + gatsby-legacy-polyfills "^3.10.0" babel-runtime@^6.26.0: version "6.26.0" @@ -2280,11 +3797,6 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backo2@1.0.2, 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.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -2295,171 +3807,97 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= - -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= +base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== -base64id@2.0.0: +base64id@2.0.0, base64id@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== -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" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.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= - -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@^2.0.0: +better-opn@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== dependencies: open "^7.0.3" -better-queue-memory@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.4.tgz#f390d6b30bb3b36aaf2ce52b37a483e8a7a81a22" - integrity sha512-SWg5wFIShYffEmJpI6LgbL8/3Dqhku7xI1oEiy6FroP9DbcZlG0ZDjxvPdP9t7hTGW40IpIcC6zVoGT1oxjOuA== - -better-queue@^3.8.10: - 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" - uuid "^3.0.0" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bignumber.js@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" + integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" readable-stream "^3.4.0" -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== - -body-parser@1.19.0, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -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" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.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= -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" widest-line "^3.1.0" + wrap-ansi "^7.0.0" -brace-expansion@^1.0.0, brace-expansion@^1.1.7: +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== @@ -2467,230 +3905,76 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -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== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + balanced-match "^1.0.0" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/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" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -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" - evp_bytestokey "^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" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.6.6: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" -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== +browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - pako "~1.0.5" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.8.5: - version "4.14.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" - integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: - caniuse-lite "^1.0.30001154" - electron-to-chromium "^1.3.585" - escalade "^3.1.1" - node-releases "^1.1.65" + node-int64 "^0.4.0" 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-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@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.5.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.0.tgz#88afbd29fc89fa7b58e82b39206f31f2cf34feed" - integrity sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" - integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== +busboy@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: - node-gyp-build "^4.2.0" - -builtin-modules@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -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= + streamsearch "^1.1.0" bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -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" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-manager-fs-hash@^0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.9.tgz#a65bb7ca2c9f9f9cf7035945bbfab536c5aab340" - integrity sha512-G0RUUSMZADiMx/0tHjPa+uzJyjtVB/Xt9yuFm6g/rBpm0p/IMr4atUWX2G2f1yGCPmDnyUcFz4RlSpgNRgvldg== - dependencies: - lockfile "^1.0.4" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cache-manager@^2.11.1: version "2.11.1" @@ -2701,87 +3985,78 @@ cache-manager@^2.11.1: lodash.clonedeep "4.5.0" lru-cache "4.0.0" -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.1: + version "10.2.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.2.tgz#07c3d5afcaa2de2e9f66959bacb3ff78da3735fd" + integrity sha512-KxjQZM3UIo7/J6W4sLpwFvu1GB3Whv8NtZ8ZrUL284eiQjiXeeqWTdhixNrp/NLZ/JNuFBo6BD4ZaO8ZJ5BN8Q== + dependencies: + "@types/http-cache-semantics" "^4.0.1" + get-stream "^6.0.1" + http-cache-semantics "^4.1.0" + keyv "^4.5.0" + mimic-response "^4.0.0" + normalize-url "^7.2.0" + responselike "^3.0.0" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" http-cache-semantics "^4.0.0" - keyv "^3.0.0" + keyv "^4.0.0" lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.0" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.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= + normalize-url "^6.0.1" + responselike "^2.0.0" -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= +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2792,28 +4067,31 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001154: - version "1.0.30001154" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001154.tgz#f3bbc245ce55e4c1cd20fa731b097880181a7f17" - integrity sha512-y9DvdSti8NnYB9Be92ddMZQrcOe04kcQtcxtBx4NkB04+qZ+JUWotnXBJTmxlKudhxNTQ3RRknMwNU2YQl/Org== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400: + version "1.0.30001431" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" + integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== + +caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001473" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz#3859898b3cab65fc8905bb923df36ad35058153c" + integrity sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" -ccount@^1.0.0, ccount@^1.0.3: +ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@1.1.3, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2822,21 +4100,63 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" +change-case-all@1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.14.tgz#bac04da08ad143278d0ac3dda7eccd39280bfba1" + integrity sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA== + dependencies: + change-case "^4.1.2" + is-lower-case "^2.0.2" + is-upper-case "^2.0.2" + lower-case "^2.0.2" + lower-case-first "^2.0.2" + sponge-case "^1.0.1" + swap-case "^2.0.2" + title-case "^3.0.3" + upper-case "^2.0.2" + upper-case-first "^2.0.2" + +change-case-all@1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.15.tgz#de29393167fc101d646cd76b0ef23e27d09756ad" + integrity sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ== + dependencies: + change-case "^4.1.2" + is-lower-case "^2.0.2" + is-upper-case "^2.0.2" + lower-case "^2.0.2" + lower-case-first "^2.0.2" + sponge-case "^1.0.1" + swap-case "^2.0.2" + title-case "^3.0.3" + upper-case "^2.0.2" + upper-case-first "^2.0.2" + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" character-entities-html4@^1.0.0: version "1.1.4" @@ -2858,51 +4178,27 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -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== -chokidar@^2.0.4, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -2919,41 +4215,11 @@ ci-info@2.0.0, ci-info@^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" - -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" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.0: +cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -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-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -2961,35 +4227,11 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.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" - optionalDependencies: - colors "^1.1.2" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -clipboard@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" - integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - clipboardy@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" @@ -2999,15 +4241,6 @@ clipboardy@^2.3.0: execa "^1.0.0" is-wsl "^2.1.1" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -3017,54 +4250,54 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-response@1.0.2, clone-response@^1.0.2: +cliui@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +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@^2.1.2: +clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" +clsx@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -codemirror-graphql@0.12.3: - version "0.12.3" - resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-0.12.3.tgz#8b76f59ea02ead356ca39c9574827396e4b4b454" - integrity sha512-u0TooVA2MWGNV+Bio89RCTRW9P5FqegB1V9rnz9I0QKoGXX/c9z9/Fc+nj18p8jxkWK8ii8d7hkz7vsNsHxdkw== +codemirror-graphql@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-1.3.2.tgz#e9d1d18b4a160f0016a28465805284636ee42d2a" + integrity sha512-glwFsEVlH5TvxjSKGymZ1sNy37f3Mes58CB4fXOd0zy9+JzDL08Wti1b5ycy4vFZYghMDK1/Or/zRSjMAGtC2w== dependencies: - graphql-language-service-interface "^2.4.2" - graphql-language-service-parser "^1.6.4" + graphql-language-service "^5.0.6" -codemirror@5.58.2: - version "5.58.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.58.2.tgz#ed54a1796de1498688bea1cdd4e9eeb187565d1b" - integrity sha512-K/hOh24cCwRutd1Mk3uLtjWzNISOkm4fvXiMO7LucCrqbh6aJDdtqUziim3MZUI6wOY0rvY1SlL1Ork01uMy6w== +codemirror@5.65.1: + version "5.65.1" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.1.tgz#5988a812c974c467f964bcc1a00c944e373de502" + integrity sha512-s6aac+DD+4O2u1aBmdxhB7yz2XU7tG3snOyQ05Kxifahz7hoxnfxIRHxiCSEv3TUC38dIVH8G+lZH9UWSfGQxA== -collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== - -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" - -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: 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== @@ -3088,31 +4321,31 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" - integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== +color-string@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" + color-convert "^2.0.1" + color-string "^1.9.0" -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colord@^2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== +colorette@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" + integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== combined-stream@^1.0.8: version "1.0.8" @@ -3121,7 +4354,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1: +comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== @@ -3131,41 +4364,36 @@ command-exists@^1.2.4: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@^2.20.0, commander@^2.20.3: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +common-tags@1.8.2, common-tags@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -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: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-emitter@^1.2.1, component-emitter@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -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.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -3191,7 +4419,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3201,6 +4429,14 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -3213,61 +4449,32 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.9: +confusing-browser-globals@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -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= +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" -content-type@^1.0.4, 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-management@^5.26.3: - version "5.28.0" - resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-5.28.0.tgz#f3b58d60400d66e42439bbd9085cecb0e486f0bb" - integrity sha512-o+qihN3zrD6+/BT/e8n26jl/zQvmV6+9S6NY5QDmzM+IaiSeCk6yvPMq74s+IZT9mOS54igl6qFTbeIpdJ9FDA== - dependencies: - axios "^0.19.0" - contentful-sdk-core "^6.4.0" - lodash "^4.17.11" - type-fest "0.15.1" - -contentful-sdk-core@^6.4.0: - version "6.4.6" - resolved "https://registry.yarnpkg.com/contentful-sdk-core/-/contentful-sdk-core-6.4.6.tgz#a94b1355afd292dfddb0cdc16b565980f9a03c47" - integrity sha512-6KVLeCdn1akqjGvVMUgMxQ3B+zNIYeq3MUlqWsSLLJozr++0ZYWU76XmHf4n5MPTMoX9RGbRSR8hJAaKcUNDFw== - dependencies: - lodash "^4.17.10" - qs "^6.5.2" - convert-hrtime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa" @@ -3285,75 +4492,51 @@ cookie-signature@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= +cookie@0.5.0, cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -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== +core-js-compat@3.30.1: + version "3.30.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.1.tgz#961541e22db9c27fc48bfc13a3cafa8734171dfe" + integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^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= - -copyfiles@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.0.tgz#fcac72a4f2b882f021dd156b4bcf6d71315487bd" - integrity sha512-yGjpR3yjQdxccW8EcJ4a7ZCA6wGER6/Q2Y+b7bXbVxGeSHBf93i9d7MzTsx+VV1CpMKQa3v4ThZfXBcltMzl0w== - dependencies: - glob "^7.0.5" - minimatch "^3.0.3" - mkdirp "^1.0.4" - noms "0.0.0" - through2 "^2.0.1" - untildify "^4.0.0" - yargs "^15.3.1" + browserslist "^4.21.5" -core-js-compat@^3.6.2, core-js-compat@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== +core-js-compat@^3.25.1: + version "3.27.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.2.tgz#607c50ad6db8fd8326af0b2883ebb987be3786da" + integrity sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg== dependencies: - browserslist "^4.8.5" - semver "7.0.0" + browserslist "^4.21.4" -core-js-pure@^3.0.0: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== +core-js-pure@^3.23.3: + version "3.26.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.0.tgz#7ad8a5dd7d910756f3124374b50026e23265ca9a" + integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== core-js@^2.4.0: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== +core-js@^3.30.1: + version "3.30.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.2.tgz#6528abfda65e5ad728143ea23f7a14f0dcf503fc" + integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== 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= -cors@^2.8.5: +cors@^2.8.5, cors@~2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -3361,7 +4544,7 @@ cors@^2.8.5: object-assign "^4" vary "^1" -cosmiconfig@6.0.0, cosmiconfig@^6.0.0: +cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== @@ -3372,46 +4555,33 @@ cosmiconfig@6.0.0, cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== +cosmiconfig@^8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" + integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +create-gatsby@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-3.10.0.tgz#eb246547db8cce0934dc2b1fa07e7fd1e09ad099" + integrity sha512-ZKkibIo8B75yxw0/IobjMITZKdZJ+m24mbFY/nLwrMcN6RfkZ98Pa4DNTmUIyfA4AFF4nZCDgVkl+3sfoNk8iQ== dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + "@babel/runtime" "^7.20.13" create-react-context@0.3.0: version "0.3.0" @@ -3421,22 +4591,13 @@ create-react-context@0.3.0: gud "^1.0.0" warning "^4.0.3" -cross-fetch@3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" - integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== +cross-fetch@^3.0.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" + integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== dependencies: node-fetch "2.6.1" -cross-spawn@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^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" @@ -3448,7 +4609,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3457,63 +4618,44 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -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" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -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@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec" + integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +css-loader@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" - integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== +css-minimizer-webpack-plugin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-2.0.0.tgz#3c42f6624ed4cf4780dd963e23ee649e5a25c1a8" + integrity sha512-cG/uc94727tx5pBNtb1Sd7gvUPzwmcQi1lkpfqTpdkuNq75hJCw7bIVsCNijLm4dhDcr1atvuysl2rZqOG8Txw== + dependencies: + cssnano "^5.0.0" + jest-worker "^26.3.0" + p-limit "^3.0.2" + postcss "^8.2.9" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" css-select@^1.1.0: version "1.2.0" @@ -3525,157 +4667,145 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +css-select@^4.1.3, css-select@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -css-selector-parser@^1.1.0: +css-selector-parser@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759" integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g== -css-selector-tokenizer@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" + mdn-data "2.0.14" + source-map "^0.6.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" + mdn-data "2.0.30" + source-map-js "^1.0.1" -css-tree@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0.tgz#21993fa270d742642a90409a2c0cb3ac0298adf6" - integrity sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw== +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== dependencies: - mdn-data "2.0.12" - source-map "^0.6.1" + mdn-data "2.0.28" + source-map-js "^1.0.1" css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= +cssnano-preset-default@^5.2.13: + version "5.2.13" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz#e7353b0c57975d1bdd97ac96e68e5c1b8c68e990" + integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.3" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.1" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== +cssnano@^5.0.0, cssnano@^5.1.14: + version "5.1.14" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.14.tgz#07b0af6da73641276fe5a6d45757702ebae2eb05" + integrity sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw== dependencies: - postcss "^7.0.0" + cssnano-preset-default "^5.2.13" + lilconfig "^2.0.3" + yaml "^1.10.2" -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" + css-tree "^1.1.2" -csso@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.0.tgz#1d31193efa99b87aa6bad6c0cef155e543d09e8b" - integrity sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg== +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== dependencies: - css-tree "^1.0.0" + css-tree "~2.2.0" csstype@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.4.tgz#b156d7be03b84ff425c9a0a4b1e5f4da9c5ca888" integrity sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA== -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" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -3684,56 +4814,46 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== - -dataloader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" - integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -date-fns@^2.14.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" - integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.9: +debug@2.6.9, debug@^2.6.0: 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: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== +debug@4, debug@^4.3.2, debug@^4.3.4, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "2.0.0" + ms "2.1.2" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -3744,177 +4864,124 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -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= +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: - mimic-response "^1.0.0" + mimic-response "^3.1.0" -deep-equal@^1.0.1, deep-equal@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" 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: +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= -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - 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" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -del@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" - integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== - dependencies: - globby "^10.0.1" - graceful-fs "^4.2.2" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.1" - p-map "^3.0.0" - rimraf "^3.0.0" - slash "^3.0.0" +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -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= +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +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= -detab@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" - integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== - dependencies: - repeat-string "^1.5.4" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-newline@^1.0.3: +detect-libc@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-1.0.3.tgz#e97b1003877d70c09af1af35bfadff168de4920d" - integrity sha1-6XsQA4d9cMCa8a81v63/Fo3kkg0= - dependencies: - get-stdin "^4.0.1" - minimist "^1.1.0" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -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-libc@^2.0.0, detect-libc@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== -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= +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: address "^1.0.1" debug "^2.6.0" -detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== +detect-port@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: address "^1.0.1" - debug "^2.6.0" + debug "4" -devcert@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.1.3.tgz#ff8119efae52ebf2449531b7482ae0f7211542e9" - integrity sha512-7/nIzKdQ8y2K0imjIP7dyg2GJ2h38Ps6VOMXWZHIarNDV3p6mTXyEugKFnkmsZ2DD58JEG34ILyVb3qdOMmP9w== +devcert@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.2.2.tgz#7ebbefeb74991e269ceafcd66f2bb78677c12652" + integrity sha512-UsLqvtJGPiGwsIZnJINUnFYaWgK7CroreGRndWHZkRD58tPFr3pVbbSyHR8lbh41+azR4jKvuNZ+eCoBZGA5kA== dependencies: "@types/configstore" "^2.1.1" "@types/debug" "^0.0.30" @@ -3931,6 +4998,7 @@ devcert@^1.1.3: eol "^0.9.1" get-port "^3.2.0" glob "^7.1.2" + is-valid-domain "^0.1.6" lodash "^4.17.4" mkdirp "^0.5.1" password-prompt "^1.0.4" @@ -3939,19 +5007,10 @@ devcert@^1.1.3: tmp "^0.0.33" tslib "^1.10.0" -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/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" - randombytes "^2.0.0" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== dir-glob@^3.0.1: version "3.0.1" @@ -3960,33 +5019,10 @@ dir-glob@^3.0.1: dependencies: path-type "^4.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.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" - -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" - -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" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== doctrine@^2.1.0: version "2.1.0" @@ -4026,25 +5062,29 @@ dom-serializer@^1.0.1: domhandler "^3.0.0" entities "^2.0.0" -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -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== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" - integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^2.3.0: version "2.4.2" @@ -4053,13 +5093,27 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.0.0, domhandler@^3.3.0: +domhandler@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -4068,7 +5122,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -4076,14 +5130,31 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" - integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^3.3.0" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" dot-prop@^5.2.0: version "5.3.0" @@ -4092,53 +5163,40 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +dotenv@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -duplexer@^0.1.1: +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - 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.585: - version "1.3.585" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.585.tgz#71cdb722c73488b9475ad1c572cf43a763ef9081" - integrity sha512-xoeqjMQhgHDZM7FiglJAb2aeOxHZWFruUc3MbAGTgE7GB8rr5fTn1Sdh5THGuQtndU3GuXlu91ZKqRivxoCZ/A== +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -elliptic@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" +electron-to-chromium@^1.4.284: + version "1.4.345" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.345.tgz#c90b7183b39245cddf0e990337469063bfced6f0" + integrity sha512-znGhOQK2TUYLICgS25uaM0a7pHy66rSxbre7l762vg9AUoCcJK+Bu+HCPWpjL/U/kK8/Hf+6E0szAUJSyVYb3Q== "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" @@ -4155,10 +5213,10 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" - integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojis-list@^3.0.0: version "3.0.0" @@ -4170,61 +5228,59 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -engine.io-client@~3.4.0: - version "3.4.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" - integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== - dependencies: - component-emitter "~1.3.0" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.2.0" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.6" - parseuri "0.0.6" - ws "~6.1.0" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" - integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== +engine.io-client@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.4.0.tgz#88cd3082609ca86d7d3c12f0e746d12db4f47c91" + integrity sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g== dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.4" - blob "0.0.5" - has-binary2 "~1.0.2" + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.0.3" + ws "~8.11.0" + xmlhttprequest-ssl "~2.0.0" -engine.io@~3.4.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" - integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== +engine.io-parser@~5.0.3: + version "5.0.6" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" + integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== + +engine.io@~6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.2.tgz#ffeaf68f69b1364b0286badddf15ff633476473f" + integrity sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg== dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" accepts "~1.3.4" base64id "2.0.0" - cookie "0.3.1" - debug "~4.1.0" - engine.io-parser "~2.2.0" - ws "^7.1.2" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.0.3" + ws "~8.11.0" -enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^5.13.0, enhanced-resolve@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" + integrity sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" entities@^1.1.1: version "1.1.2" @@ -4236,71 +5292,98 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -envinfo@^7.7.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" - integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + +envinfo@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== eol@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +errno@^0.1.1: 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: +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, error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== +error-stack-parser@^2.0.6, error-stack-parser@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: - stackframe "^1.1.1" + stackframe "^1.3.4" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-module-lexer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" + integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== -es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -4311,7 +5394,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -4320,7 +5403,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@~2.0.3: +es6-iterator@^2.0.3, 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= @@ -4329,6 +5412,16 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +es6-promise@^4.1.1: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -4337,22 +5430,27 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -4367,124 +5465,115 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== dependencies: - debug "^2.6.9" - resolve "^1.13.1" + confusing-browser-globals "^1.0.10" -eslint-loader@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" + debug "^3.2.7" -eslint-plugin-flowtype@^3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== +eslint-plugin-flowtype@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb" + integrity sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw== dependencies: lodash "^4.17.15" + string-natural-compare "^3.0.1" -eslint-plugin-graphql@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz#d238ff2baee4d632cfcbe787a7a70a1f50428358" - integrity sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw== - dependencies: - "@babel/runtime" "^7.10.0" - graphql-config "^3.0.2" - lodash.flatten "^4.4.0" - lodash.without "^4.4.0" - -eslint-plugin-import@^2.22.0: - version "2.22.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" - integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.0" +eslint-plugin-import@^2.27.5: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jsx-a11y@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== - dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" -eslint-plugin-react-hooks@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" - integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.20.6: - version "7.21.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" - integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== +eslint-plugin-react@^7.32.2: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" - has "^1.0.3" + estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.18.1" - string.prototype.matchall "^4.0.2" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-plugin-tailwindcss@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.12.0.tgz#cb386920ae9d15d4bd1d3f250357062cec17ccb5" + integrity sha512-DMfg8NcSV04V1v3iBgJGEhmRuapW36XZXyRV8WHdNFGEXGUkBwM9R8MujguKXeQKBG6VhjiX4t98rhzXdIlUFw== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + fast-glob "^3.2.5" + postcss "^8.4.4" -eslint-scope@^5.0.0: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4492,90 +5581,182 @@ eslint-scope@^5.0.0: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-utils@^2.0.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== + +eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint-webpack-plugin@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz#0525793a4f8c652c1c6d863995ce1e0f2dcbd143" + integrity sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA== + dependencies: + "@types/eslint" "^7.29.0" + arrify "^2.0.1" + jest-worker "^27.5.1" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + +eslint@8.42.0: + version "8.42.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.42.0.tgz#7bebdc3a55f9ed7167251fe7259f75219cade291" + integrity sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.42.0" + "@humanwhocodes/config-array" "^0.11.10" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: - "@babel/code-frame" "^7.0.0" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" + glob-parent "^5.1.2" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" 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== -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -4587,10 +5768,10 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" @@ -4602,47 +5783,23 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-source-polyfill@^1.0.15: - version "1.0.21" - resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.21.tgz#6b11b1299517a48e04540748b7c23f5a7620155b" - integrity sha512-Mz8LO8hPgg2X6VcSXmq7gvgFU3kUnTZb4zU3tTYDx8cJHRXP15tjdpGUiP2IUUwOqAGZ1TEfe+KagjMXfFgwLA== - -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= dependencies: - original ">=0.0.5" + d "1" + es5-ext "~0.10.14" -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" +event-source-polyfill@1.0.31: + version "1.0.31" + resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz#45fb0a6fc1375b2ba597361ba4287ffec5bf2e0c" + integrity sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA== -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" +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^1.0.0: version "1.0.0" @@ -4657,99 +5814,68 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^4.0.2, execa@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -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" +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== -express-graphql@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.9.0.tgz#00fd8552f866bac5c9a4612b2c4c82076107b3c2" - integrity sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w== +express-http-proxy@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/express-http-proxy/-/express-http-proxy-1.6.3.tgz#f3ef139ffd49a7962e7af0462bbcca557c913175" + integrity sha512-/l77JHcOUrDUX8V67E287VEUQT0lbm71gdGVoodnlWBziarYKgMcpqT7xvh/HM8Jv52phw8Bd8tY+a7QjOr7Yg== dependencies: - accepts "^1.3.7" - content-type "^1.0.4" - http-errors "^1.7.3" - raw-body "^2.4.1" + debug "^3.0.1" + es6-promise "^4.1.1" + raw-body "^2.3.0" -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== +express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.1" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.11.0" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -4768,28 +5894,11 @@ extend-shallow@^2.0.1: 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" - extend@^3.0.0, 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 "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -4799,94 +5908,68 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.0.3, fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== -fastq@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" - integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== +fastq@^1.15.0, fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -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.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: - websocket-driver ">=0.5.1" - -fd@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c" - integrity sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA== + bser "2.1.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +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== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +fbjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" + integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== dependencies: - escape-string-regexp "^1.0.5" + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" figures@^3.0.0: version "3.2.0" @@ -4895,45 +5978,42 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -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== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - loader-utils "^1.0.2" - schema-utils "^0.4.5" - -file-type@^12.4.2: - version "12.4.2" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" - integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + flat-cache "^3.0.4" -file-uri-to-path@1.0.0: +file-is-binary@^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== + resolved "https://registry.yarnpkg.com/file-is-binary/-/file-is-binary-1.0.0.tgz#5e41806d1bcae458c8fec32fe3ce122dbbbc4356" + integrity sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y= + dependencies: + is-binary-buffer "^1.0.0" + isobject "^3.0.0" -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== +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.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= +file-type@^16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^7.0.1: version "7.0.1" @@ -4942,61 +6022,33 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" -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" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== +find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" make-dir "^3.0.2" pkg-dir "^4.1.0" -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" - -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" @@ -5012,45 +6064,81 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + locate-path "^6.0.0" + path-exists "^4.0.0" -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" + flatted "^3.1.0" + rimraf "^3.0.2" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" +flatted@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" + integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg== + +follow-redirects@^1.10.0, follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== +for-each@^0.3.3: + 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@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +foreground-child@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.0.tgz#8eb5f65161c7972ef8784ee42831d41549b8ef64" + integrity sha512-lXeSPRCndWPaipZbtI4CkvTZpF6OPsy19dkvf7+5AHeJD+w+iAKPc9Q78xWBmX4SdR+8xrtY9jTXs/YDv8q+Ug== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data-encoder@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.3.tgz#682cd821a8423605093992ff895e6b2ed5a9d429" + integrity sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ== + form-data@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" @@ -5060,577 +6148,602 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -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= +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: - map-cache "^0.2.2" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 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" +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-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@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== dependencies: - at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" -fs-extra@^8.0.1, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== +fs-extra@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: - minipass "^3.0.0" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -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" - imurmurhash "^0.1.4" - readable-stream "1 || 2" +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== 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.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 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== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + 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= -gatsby-cli@^2.12.114: - version "2.12.114" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.114.tgz#49019eeb4b11a9fb0514eb3a2f1d89c584c03025" - integrity sha512-5VH1GUvdrDkjAHjWN8H+xzCdbkCZjuTDeqXXaXoH3e4MnTjb1YAiX+RrQqJY9fhUVo51hdCGlddWZwANdYoWog== - dependencies: - "@babel/code-frame" "^7.10.4" - "@hapi/joi" "^15.1.1" - "@types/common-tags" "^1.8.0" - better-opn "^2.0.0" - chalk "^2.4.2" +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gatsby-cli@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-5.10.0.tgz#f3971ce42afa6cae3139baab13e3b6bf6f5685e3" + integrity sha512-k8Z5l+2pAzf09/w1YgODAExjJKnZCd8WON6pxsHV1nht9I+zXE3sqB5FbsitckufaHhoOer6ezsQjxLVAe4+mA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/core" "^7.20.12" + "@babel/generator" "^7.20.14" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.20.13" + "@babel/template" "^7.20.7" + "@babel/types" "^7.20.7" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/common-tags" "^1.8.1" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.2" clipboardy "^2.3.0" - common-tags "^1.8.0" - configstore "^5.0.1" + common-tags "^1.8.2" convert-hrtime "^3.0.0" - envinfo "^7.7.3" - execa "^3.4.0" + create-gatsby "^3.10.0" + envinfo "^7.8.1" + execa "^5.1.1" fs-exists-cached "^1.0.0" - fs-extra "^8.1.0" - gatsby-core-utils "^1.3.23" - gatsby-recipes "^0.2.35" - gatsby-telemetry "^1.3.38" - hosted-git-info "^3.0.6" + fs-extra "^11.1.1" + gatsby-core-utils "^4.10.0" + gatsby-telemetry "^4.10.0" + hosted-git-info "^3.0.8" is-valid-path "^0.1.1" - lodash "^4.17.20" - meant "^1.0.2" - node-fetch "^2.6.1" - opentracing "^0.14.4" - pretty-error "^2.1.1" + joi "^17.9.2" + lodash "^4.17.21" + node-fetch "^2.6.9" + opentracing "^0.14.7" + pretty-error "^2.1.2" progress "^2.0.3" - prompts "^2.3.2" - redux "^4.0.5" + prompts "^2.4.2" + redux "4.2.1" resolve-cwd "^3.0.0" - semver "^7.3.2" - signal-exit "^3.0.3" - source-map "0.7.3" + semver "^7.5.0" + signal-exit "^3.0.7" stack-trace "^0.0.10" - strip-ansi "^5.2.0" - update-notifier "^4.1.3" - uuid "3.4.0" + strip-ansi "^6.0.1" yargs "^15.4.1" - yoga-layout-prebuilt "^1.9.6" - yurnalist "^1.1.2" + yoga-layout-prebuilt "^1.10.0" + yurnalist "^2.1.0" -gatsby-core-utils@^1.3.23: - version "1.3.23" - resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.3.23.tgz#5d99e86178b2aa3561f58fde4fdffbebecb0dd0c" - integrity sha512-H6n6dDeRZ22HAJaBUIt5YjB/BSaE8Jq+kayMUv/YzL1RL2yFZ5lqcLwIL1OE2vWk1mQjMUBZCRxLODU0q1i3bQ== +gatsby-core-utils@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-4.10.0.tgz#affc18e2a64f2e49e50c59ec13c7114c7937ad7d" + integrity sha512-7wNANRPzxyTsZMnZFyCq1f2D0T6299l1qUew8q8Ax2QJM0kzFY/4uuJaV/fnrC0RdjWnkwGIAiZ1ZnGK4E8HSA== dependencies: + "@babel/runtime" "^7.20.13" ci-info "2.0.0" configstore "^5.0.1" - fs-extra "^8.1.0" - node-object-hash "^2.0.0" - proper-lockfile "^4.1.1" + fastq "^1.15.0" + file-type "^16.5.4" + fs-extra "^11.1.1" + got "^11.8.6" + hash-wasm "^4.9.0" + import-from "^4.0.0" + lmdb "2.5.3" + lock "^1.1.0" + node-object-hash "^2.3.10" + proper-lockfile "^4.1.2" + resolve-from "^5.0.0" tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-graphiql-explorer@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.4.15.tgz#3a2a8d09cba4bdd1c37695b80f71b9ef9983206e" - integrity sha512-Mo6wo6EX3pIL7ErKI0yJIfJw9iYDZyPyEsCQJDhcxymhqf1x0d8DRGDjyJDndDBiSuSUfgdBrHz/MKh3ZOZnAg== - dependencies: - "@babel/runtime" "^7.11.2" +gatsby-graphiql-explorer@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.10.0.tgz#09936b478d8b572c758c55d18ef78ceaf76df7b7" + integrity sha512-KUYzObIk+W0zRlyVjOWdNLTTL4KyozygT54TOhbBMq4LgUf0mFtnA50UzwV/SqfjksUwE9Xtv7278K1z1Hjuiw== -gatsby-legacy-polyfills@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.0.6.tgz#7a28e8a01c3e5aaa9aed8a23e10d3d3ae5bd3453" - integrity sha512-23O0orFhu1zkCluIFBs8pu8psfyyWquczfRk2NNdT2x4wW/HkZEjonWM5AkM6kjzZL9JrVCAZEgL4qf9OjgUoA== +gatsby-legacy-polyfills@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-3.10.0.tgz#ca2e5f17966c9160d5574b049065814ff1c7f1ac" + integrity sha512-b1uNl/Fdfry+7cHjRNa9mtQcmN6xQgqgAOf5F9Z1rJ9vKCylNny4Fs1qkmI8H6UiZYyI33lZq+G1C0SYbhwgxA== dependencies: - core-js-compat "^3.6.5" + "@babel/runtime" "^7.20.13" + core-js-compat "3.30.1" -gatsby-link@^2.4.16: - version "2.4.16" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.4.16.tgz#e0dda6c6e8450412dca94989f8d3d583d3734b83" - integrity sha512-wsccuSOIAjhRDQRKmIj2+FUNR94QEBnELki0giN+lLKvWB3EO8mXjTIccXC0bMpe8VQcBlv3DHpUo72EAkkFAg== +gatsby-link@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-5.10.0.tgz#acdbf71c845913493cf6be09474883379405bd26" + integrity sha512-bcPFOcBQNJuSPRyqYE7ELBB4FEmQ7x/xWATzzs2ZCRMzp+SO13iZb5Vi+i0Obdu/YLJZhJ0f+pOIjlio4XNEZA== dependencies: - "@babel/runtime" "^7.11.2" - "@types/reach__router" "^1.3.6" - prop-types "^15.7.2" + "@types/reach__router" "^1.3.10" + gatsby-page-utils "^3.10.0" + prop-types "^15.8.1" -gatsby-page-utils@^0.2.29: - version "0.2.29" - resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.2.29.tgz#eadaa4c57a7a281d53fc9236272e16c718edc8e5" - integrity sha512-0xN3kBNd7PNwsJB1lJrsy7hEJbIIBcvnmbxGTplGenmGnOMoJqK6kEfM5Ru5dWBdSmwHrS+kcihFi0ZiGxpoww== +gatsby-page-utils@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-3.10.0.tgz#880662bc5973dbc3c9c94d9accba5cb382ba2b9e" + integrity sha512-tpbcPhpi1CNQVc/dZiroktSY3wGk0iQ57HpSGL6Xo92XOLtjNXl0ipkYQhz0ecWABDcsKKn7H+E+GBbi9XHYqw== dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.20.13" bluebird "^3.7.2" - chokidar "^3.4.3" + chokidar "^3.5.3" fs-exists-cached "^1.0.0" - gatsby-core-utils "^1.3.23" - glob "^7.1.6" - lodash "^4.17.20" - micromatch "^4.0.2" + gatsby-core-utils "^4.10.0" + glob "^7.2.3" + lodash "^4.17.21" + micromatch "^4.0.5" -gatsby-plugin-anchor-links@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/gatsby-plugin-anchor-links/-/gatsby-plugin-anchor-links-1.1.1.tgz#6a04441f5acc42768447dc6c12474630520a9f90" - integrity sha512-mgSHUAEa7RRWD/lcmJVUWD9mIT14EIJvMPcxJ1W2Ev+rNuqBBpk1j4vDWy1uxas+qusi0vrtZ4HdU7mse12qDw== +gatsby-parcel-config@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/gatsby-parcel-config/-/gatsby-parcel-config-1.10.0.tgz#074c41a384397ed2b5a3ef05e089335998786884" + integrity sha512-F1ESLH7/RxdPsCHnpbB2tZ78+NDvUoawHi/3+QHLSt8p9PrejY9qFKV9vKBS9S4qI1k713enFF54zJo1O80aeQ== + dependencies: + "@gatsbyjs/parcel-namer-relative-to-cwd" "^2.10.0" + "@parcel/bundler-default" "2.8.3" + "@parcel/compressor-raw" "2.8.3" + "@parcel/namer-default" "2.8.3" + "@parcel/optimizer-terser" "2.8.3" + "@parcel/packager-js" "2.8.3" + "@parcel/packager-raw" "2.8.3" + "@parcel/reporter-dev-server" "2.8.3" + "@parcel/resolver-default" "2.8.3" + "@parcel/runtime-js" "2.8.3" + "@parcel/transformer-js" "2.8.3" + "@parcel/transformer-json" "2.8.3" + +gatsby-plugin-anchor-links@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-anchor-links/-/gatsby-plugin-anchor-links-1.2.1.tgz#c82ff8fdeda4b3f2ca036cec469f7c42da3b2897" + integrity sha512-BIhhljCxIUVluMltlCq5sKvVN9PfwqoUNaTjyPZUhtEu5JhEiK89HPNustSkjSLhnQmcYveS36TpjWK/rUnvhg== dependencies: scroll-to-element "^2.0.3" -gatsby-plugin-feed@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-feed/-/gatsby-plugin-feed-2.6.0.tgz#b5b1cf428011b457e31419e978614c6436740921" - integrity sha512-BxsFwp5tJVew4Asf6NOP2ebhonjBDL0CuQT5HaRzuDjBj9N1/Bc5VRfYQpFy25wj+qQ5CMm5rJWkNGVVwl9//A== +gatsby-plugin-feed@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-feed/-/gatsby-plugin-feed-5.10.0.tgz#d4ea4655091ee9f85a396683052bc8da29ea41bc" + integrity sha512-eZbcaVxAwn/bXv7Npjz8q/QEa3/yDCrpeYxc7u6cnkp8CPxUzs4qKFbipPsih1GfABM4E1kJ3o+S/lr6//2n8w== dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.20.13" "@hapi/joi" "^15.1.1" - common-tags "^1.8.0" - fs-extra "^8.1.0" - gatsby-plugin-utils "^0.2.40" + common-tags "^1.8.2" + fs-extra "^11.1.1" + gatsby-plugin-utils "^4.10.0" lodash.merge "^4.6.2" rss "^1.2.2" -gatsby-plugin-google-analytics@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.4.0.tgz#7c2d0dbb93910129518d325083ac740b756e2819" - integrity sha512-NKgYyICCo94OZ8SxoBEMxfRiJTRLBTYDIGkzhS+Dlzqt46T5UZARNcaPFqARw9/OdMf7FDUJ+6FSUqJoLKLNbg== +gatsby-plugin-google-analytics@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-5.10.0.tgz#a3744a323b400448be1bb0397879eabe994950d0" + integrity sha512-zMvqqOVyTx2IB3i3ObDL7mAAwyLW0ehniKeXj1oxx2gHF6hea0QxJ5GWl6+vtvCiBqI1/ZCwrS6zGwsxkMYd9w== dependencies: - "@babel/runtime" "^7.11.2" - minimatch "3.0.4" + "@babel/runtime" "^7.20.13" + minimatch "^3.1.2" + web-vitals "^1.1.2" -gatsby-plugin-less@4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/gatsby-plugin-less/-/gatsby-plugin-less-4.0.6.tgz#58d0d4e6a34bf3971b865a0dac3cee09734656da" - integrity sha512-82tCyb+AkseoPqQSaVvBPzNb2pNccP6jmp22yvIMFRi4P2dO4kxIOcl0zio27J7+1f4kqSSQla8bZTDxoQoISw== +gatsby-plugin-less@7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-less/-/gatsby-plugin-less-7.10.0.tgz#7de70abf0746812d2d840098d77d40562f412d5e" + integrity sha512-J6X5KIAVikTNygh9pu8fs6feoNAw3fz7rCqVdmP7AEGRv1w3vXlG21DtjvBYzVapSgDTroidSgl+DYzSufcv2A== dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.20.13" less-loader "^6.2.0" -gatsby-plugin-page-creator@^2.3.34: - version "2.3.34" - resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.34.tgz#4b76a63e3c68d0b8b4901cd778dff37d29f3813b" - integrity sha512-/rFG/ye4m0JJ8NAxTObkKKD8098KOVGE+dZrgBx9I3VN1TcKru0HprVe1xj679HBgKjjNUvchXZbhLl5I+2o4A== +gatsby-plugin-page-creator@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.10.0.tgz#bbbc2be56784e7f0e512dee5428ab6f299ef8084" + integrity sha512-Vji1iC9CabZExrJZkWvDNPbqJ8nwLJ1kE1u04HN+IopA+hheJ8natBucNf8Xol/40R/xk62peJXlkuV/s5jM1g== dependencies: - "@babel/traverse" "^7.11.5" - "@sindresorhus/slugify" "^1.1.0" - chokidar "^3.4.2" + "@babel/runtime" "^7.20.13" + "@babel/traverse" "^7.20.13" + "@sindresorhus/slugify" "^1.1.2" + chokidar "^3.5.3" fs-exists-cached "^1.0.0" - gatsby-page-utils "^0.2.29" - globby "^11.0.1" - graphql "^14.7.0" - lodash "^4.17.20" - -gatsby-plugin-react-helmet@3.3.14: - version "3.3.14" - resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.3.14.tgz#6eac5854e24d008352742783fe68817b18e24151" - integrity sha512-5GsIVZIVOax2V9g1UL8row1TG3p2zPY2I+8Rq52H0R5xD9QoMTPde2Q4N0Y2td+qzfRdcfkbSj/kokK2I5owPw== - dependencies: - "@babel/runtime" "^7.11.2" - -gatsby-plugin-typescript@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.5.0.tgz#b7daacff18da2926bf7f6a3251785356bec20c52" - integrity sha512-AGsUvjh/iiX5zo5cR88Rsj0da20oOVgzQK9bidMoDa42tjbskiu7oq6hl6NBo8TCuLeoHvf/enxXF1aByU7JGw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/preset-typescript" "^7.10.4" - "@babel/runtime" "^7.11.2" - babel-plugin-remove-graphql-queries "^2.9.20" - -gatsby-plugin-utils@^0.2.40: - version "0.2.40" - resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-0.2.40.tgz#20e997d10efb9a0368270f79ce2e6001346f6336" - integrity sha512-RKjmpPhmi8TDR9hAKxmD4ZJMje3BLs6nt6mxMWT0F8gf5giCYEywplJikyCvaPfuyaFlq1hMmFaVvzmeZNussg== - dependencies: - joi "^17.2.1" - -gatsby-plugin-webfonts@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gatsby-plugin-webfonts/-/gatsby-plugin-webfonts-1.1.3.tgz#429bed411e1be861920cb0963f2376fc75aa4b4f" - integrity sha512-L9BwptbT1i3bBv4ZAgDt10br/cpdosecRttm1TLzsQdiqt02uKjaP2tr4qLjUlEzu4YQQ8d8394Rm3ZCnvO8cA== + fs-extra "^11.1.1" + gatsby-core-utils "^4.10.0" + gatsby-page-utils "^3.10.0" + gatsby-plugin-utils "^4.10.0" + gatsby-telemetry "^4.10.0" + globby "^11.1.0" + lodash "^4.17.21" + +gatsby-plugin-postcss@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-postcss/-/gatsby-plugin-postcss-6.10.0.tgz#33eb3341108a01716f99404009bcb0ff992896c2" + integrity sha512-E9zm45xnWO69NqxvF0NsI+g8cRqjW5t9rXH8df37j+Nn6ukbiNvjgzbLMnhCZMpI7CKI/nimnlhBmjpjxsVq/w== + dependencies: + "@babel/runtime" "^7.20.13" + postcss-loader "^7.3.0" + +gatsby-plugin-svgr@^3.0.0-beta.0: + version "3.0.0-beta.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-svgr/-/gatsby-plugin-svgr-3.0.0-beta.0.tgz#7e5315f51dae2663a447899322ea1487cef93dd6" + integrity sha512-oALTh6VwO6l3khgC/vGr706aqt38EkXwdr6iXVei/auOKGxpCLEuDCQVal1a4SpYXdjHjRsEyab6bxaHL2lzsA== + +gatsby-plugin-typescript@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.10.0.tgz#d62c956e6f703747e5840fea4d2c412875ccc1ee" + integrity sha512-e/jkoRHUxHlswOWTJBwkQCI9iBh8JcRq9YZaibfWwY9cZBEtBHjMDiic8zhQvyObnUKhke5IYDqLLCignrvC7A== + dependencies: + "@babel/core" "^7.20.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.20.13" + babel-plugin-remove-graphql-queries "^5.10.0" + +gatsby-plugin-utils@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-4.10.0.tgz#828dbae087b5a749eafa770777336a698e3751e2" + integrity sha512-+hQ4wVvdai8cNI+Mg0CoJbZGJVXAda7hPEekiI9oTSbqGxtTkIw0L3s4EADUEJ5jTuuJhNQzuuueOBkwJVioIw== + dependencies: + "@babel/runtime" "^7.20.13" + fastq "^1.15.0" + fs-extra "^11.1.1" + gatsby-core-utils "^4.10.0" + gatsby-sharp "^1.10.0" + graphql-compose "^9.0.10" + import-from "^4.0.0" + joi "^17.9.2" + mime "^3.0.0" + +gatsby-plugin-webfonts@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/gatsby-plugin-webfonts/-/gatsby-plugin-webfonts-2.3.2.tgz#382f40aa9415e16c179e3649f03d79a7d606db48" + integrity sha512-ANnRNjYUbSs+THSLAcZb6LWZJ2rK9QHe/xXV3R2EX7mlDUmigs+vmFQaSBgrkom6purJ/4TInd1xz3AdY2ysnA== dependencies: - axios "^0.19.0" - cssnano "^4.1.10" - fs-extra "^8.0.1" + axios "^1.2.1" + cssnano "^5.1.14" + fs-extra "^11.1.0" lodash.isempty "^4.4.0" - postcss "^7.0.17" - postcss-js "^2.0.1" + postcss "^8.4.19" + postcss-js "^4.0.0" -gatsby-react-router-scroll@^3.0.15: - version "3.0.15" - resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.0.15.tgz#0d081941f63894a3b6f2e7c2986091e187875bbd" - integrity sha512-7tmpFuRZhP3QnONC4bMmV9lA032J2aYms5MkcAUVP6EGY3ZCNqbod+EFBECJS1R3tkqhtQLKWmooFSGxPulxog== +gatsby-react-router-scroll@^6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-6.10.0.tgz#c9e628a3d2af062ee6661edf3952107f4fb50171" + integrity sha512-jiI8Q2VDa2rAyK+NCuzCX23tYuCc6Me1kNOSMLDT6pto6x2+P/arnbNq+SL1G1u8u5bnijEwNm5fD/ivd6sqtg== dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.20.13" + prop-types "^15.8.1" -gatsby-recipes@^0.2.35: - version "0.2.35" - resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.2.35.tgz#e123c837010f191b6c42a28f222211ddfded76ce" - integrity sha512-qAddi9cZoDSYnwgII3NSuQ7LvF3oVguucKtxu6xa8LO3iEMhb/8XW9eIMmrANRpICxRvAaIUpeQO28+Yql3gRQ== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.11.6" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/standalone" "^7.11.6" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.5" - "@graphql-tools/schema" "^6.0.14" - "@graphql-tools/utils" "^6.0.14" - "@hapi/hoek" "8.x.x" - "@hapi/joi" "^15.1.1" - better-queue "^3.8.10" - chokidar "^3.4.2" - contentful-management "^5.26.3" - cors "^2.8.5" - debug "^4.1.1" - detect-port "^1.3.0" - dotenv "^8.2.0" - execa "^4.0.2" - express "^4.17.1" - express-graphql "^0.9.0" - fs-extra "^8.1.0" - gatsby-core-utils "^1.3.23" - gatsby-telemetry "^1.3.38" - glob "^7.1.6" - graphql "^14.6.0" - graphql-compose "^6.3.8" - graphql-subscriptions "^1.1.0" - graphql-type-json "^0.3.2" - hicat "^0.7.0" - is-binary-path "^2.1.0" - is-url "^1.2.4" - jest-diff "^25.5.0" - lock "^1.0.0" - lodash "^4.17.20" - mitt "^1.2.0" - mkdirp "^0.5.1" - node-fetch "^2.5.0" - pkg-dir "^4.2.0" - prettier "^2.0.5" - prop-types "^15.6.1" - remark-mdx "^2.0.0-next.4" - remark-mdxjs "^2.0.0-next.4" - remark-parse "^6.0.3" - remark-stringify "^8.1.0" - resolve-cwd "^3.0.0" - resolve-from "^5.0.0" - semver "^7.3.2" - single-trailing-newline "^1.0.0" - strip-ansi "^6.0.0" - style-to-object "^0.3.0" - unified "^8.4.2" - unist-util-remove "^2.0.0" - unist-util-visit "^2.0.2" - uuid "3.4.0" - ws "^7.3.0" - xstate "^4.9.1" - yoga-layout-prebuilt "^1.9.6" - -gatsby-source-filesystem@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-2.4.0.tgz#6401d03684977a5a2239c67b6be717358f6efd89" - integrity sha512-YfWSsF1x7vjj2uk3XI9Qldo+iO0TmbcgwX5XBEJJgIg8p3v43EZ1gCj0JGIyYyhvfmUaf5SQgFH03Yt3GURRyQ== - dependencies: - "@babel/runtime" "^7.11.2" - better-queue "^3.8.10" - chokidar "^3.4.2" - file-type "^12.4.2" - fs-extra "^8.1.0" - gatsby-core-utils "^1.3.23" - got "^9.6.0" - md5-file "^5.0.0" - mime "^2.4.6" - pretty-bytes "^5.4.1" - progress "^2.0.3" - read-chunk "^3.2.0" +gatsby-script@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/gatsby-script/-/gatsby-script-2.10.0.tgz#6b5e0dde88e3d413418b1fb239b64409887ba491" + integrity sha512-VeHXBNP3nZZCMILcVi8W+50clgH0b2X/Z6k2q3GNH6QNYxMy+Uyf9hgen0jPMH4B+O8anruAumOlDaO5srDY2g== + +gatsby-sharp@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/gatsby-sharp/-/gatsby-sharp-1.10.0.tgz#8aadca6146c46abfe4e59a11e1695aae6bbd01a3" + integrity sha512-9D1hYBRyr85RBCqbqXbKdGgSoNO5qrqhqs7F9igOEAT9Qv8m65gfBBg+rVz6eWhlCA7TvYRBIsUfpAbB2dfTUg== + dependencies: + sharp "^0.32.1" + +gatsby-source-filesystem@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-5.10.0.tgz#9b009a42ea1c202c7aa3dbd59d9042c2a6512814" + integrity sha512-pTcqFvngUqap4NJfzG9VMmJ4T5TTf/WsMVTVORw18kprXZBchioLu0m5vVb9Tm7/MW7XPXvKJPZQkw+/otmVYw== + dependencies: + "@babel/runtime" "^7.20.13" + chokidar "^3.5.3" + file-type "^16.5.4" + fs-extra "^11.1.1" + gatsby-core-utils "^4.10.0" + mime "^3.0.0" + pretty-bytes "^5.6.0" valid-url "^1.0.9" - xstate "^4.13.0" - -gatsby-telemetry@^1.3.38: - version "1.3.38" - resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.3.38.tgz#1c6a81ac8cca7117c09577fa2f4c8dd12573c14e" - integrity sha512-8AoSNzVgrtPJ0Jgd+cPSuVGj2uBCXI2aJ2ANokOVjPbZO/Z+Z9hcOFdU+AkeBdZWCHaJaX0+qpE6KbgkwBoWPA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.11.2" - "@turist/fetch" "^7.1.7" - "@turist/time" "^0.0.1" - async-retry-ng "^2.0.1" - boxen "^4.2.0" + xstate "^4.37.2" + +gatsby-telemetry@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-4.10.0.tgz#a49c204d6b66259c1b26f640922f049e6c9cc7a2" + integrity sha512-t3QRGZdRWIxMQ3yHtdON8KgihkMgq1VROjRb+fqzJtHRFIQu8wsrpXCrYmaYv2oWoWH9fWymMu5PhrSywjGuGQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/runtime" "^7.20.13" + "@turist/fetch" "^7.2.0" + "@turist/time" "^0.0.2" + boxen "^5.1.2" configstore "^5.0.1" - envinfo "^7.7.3" - fs-extra "^8.1.0" - gatsby-core-utils "^1.3.23" - git-up "^4.0.2" - is-docker "^2.1.1" - lodash "^4.17.20" - node-fetch "^2.6.1" - uuid "3.4.0" - -gatsby-transformer-remark@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-2.9.0.tgz#0c460e1eebdd0926219ed906a71f0f0bd7521c23" - integrity sha512-9dahd3SZ7R+wcURPEWQ8DmYqiTwzJ66ikW9O2G/HVRVF3Nu64GdegiKMretjR2lY6P9OBWZovjUUGpFPTbejkQ== - dependencies: - "@babel/runtime" "^7.11.2" - bluebird "^3.7.2" - gatsby-core-utils "^1.3.23" - gray-matter "^4.0.2" - hast-util-raw "^4.0.0" - hast-util-to-html "^4.0.1" - lodash "^4.17.20" - mdast-util-to-hast "^3.0.4" - mdast-util-to-string "^1.1.0" - mdast-util-toc "^5.0" - remark "^10.0.1" - remark-parse "^6.0.3" - remark-retext "^3.1.3" - remark-stringify "6.0.4" + fs-extra "^11.1.1" + gatsby-core-utils "^4.10.0" + git-up "^7.0.0" + is-docker "^2.2.1" + lodash "^4.17.21" + node-fetch "^2.6.9" + +gatsby-transformer-remark@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-6.10.0.tgz#f51298684c86657a9cc84f036b24e15b75d6b1e6" + integrity sha512-Je8K75eNuVeGClegqb09KNbF3bSzNJSslEdzlH6AyyJYsh4A3DxFotA+5qshWCVx3J5psQ0cYoXGBXBbAltXOw== + dependencies: + "@babel/runtime" "^7.20.13" + gatsby-core-utils "^4.10.0" + gray-matter "^4.0.3" + hast-util-raw "^6.1.0" + hast-util-to-html "^7.1.3" + lodash "^4.17.21" + mdast-util-to-hast "^10.2.0" + mdast-util-to-string "^2.0.0" + mdast-util-toc "^5.1.0" + remark "^13.0.0" + remark-footnotes "^3.0.0" + remark-gfm "^1.0.0" + remark-parse "^9.0.0" + remark-retext "^4.0.0" + remark-stringify "^9.0.1" retext-english "^3.0.4" - sanitize-html "^1.27.5" - underscore.string "^3.3.5" - unified "^6.2.0" - unist-util-remove-position "^1.1.4" - unist-util-select "^1.5.0" - unist-util-visit "^1.4.1" - -gatsby@2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.25.0.tgz#9ea8a3d52c1377a3443427303ed8be2595109b8a" - integrity sha512-rOmxdcGkiVB48ClYFHYsGHp/SvW8spHX9gsEjwMU/HLcVMhLoyKZgcOyaWDRpq1IPNKMjMVWAHngsPJGdAp8fw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/core" "^7.11.6" - "@babel/parser" "^7.11.5" - "@babel/runtime" "^7.11.2" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" - "@hapi/joi" "^15.1.1" - "@mikaelkristiansson/domready" "^1.0.10" - "@nodelib/fs.walk" "^1.2.4" - "@pieh/friendly-errors-webpack-plugin" "1.7.0-chalk-2" - "@pmmmwh/react-refresh-webpack-plugin" "^0.4.1" - "@reach/router" "^1.3.4" - "@types/http-proxy" "^1.17.4" - "@typescript-eslint/eslint-plugin" "^2.24.0" - "@typescript-eslint/parser" "^2.24.0" - address "1.1.2" - autoprefixer "^9.8.4" - axios "^0.20.0" - babel-core "7.0.0-bridge.0" - babel-eslint "^10.1.0" - babel-loader "^8.1.0" - babel-plugin-add-module-exports "^0.3.3" + sanitize-html "^2.10.0" + underscore.string "^3.3.6" + unified "^9.2.2" + unist-util-remove-position "^3.0.0" + unist-util-select "^3.0.4" + unist-util-visit "^2.0.3" + +gatsby-worker@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/gatsby-worker/-/gatsby-worker-2.10.0.tgz#ea004cf63f23bf6a9f0b82fff8973d7a8b88067d" + integrity sha512-LWsfp/NC4DljuQx5LxBwiz24yp8FpY1WLyZB61idc1Xqf2mhIYUKkeqpmPNzMiuICm44XkJadzdn77AdSEgw0Q== + dependencies: + "@babel/core" "^7.20.12" + "@babel/runtime" "^7.20.13" + fs-extra "^11.1.1" + signal-exit "^3.0.7" + +gatsby@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-5.10.0.tgz#ea3d652b41544b4167ac6a8eb03674697643bce5" + integrity sha512-/CsCBskAzrit4olmzzN58v6ayvUYUwVRwQVxkHTDb8b9bGRy0VBG9Ntsq/IvGtEYRvYd6VrWpj/U0Xfcf+pnDg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/core" "^7.20.12" + "@babel/eslint-parser" "^7.19.1" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/parser" "^7.20.13" + "@babel/runtime" "^7.20.13" + "@babel/traverse" "^7.20.13" + "@babel/types" "^7.20.7" + "@builder.io/partytown" "^0.7.5" + "@gatsbyjs/reach-router" "^2.0.1" + "@gatsbyjs/webpack-hot-middleware" "^2.25.3" + "@graphql-codegen/add" "^3.2.3" + "@graphql-codegen/core" "^2.6.8" + "@graphql-codegen/plugin-helpers" "^2.7.2" + "@graphql-codegen/typescript" "^2.8.8" + "@graphql-codegen/typescript-operations" "^2.5.13" + "@graphql-tools/code-file-loader" "^7.3.23" + "@graphql-tools/load" "^7.8.14" + "@jridgewell/trace-mapping" "^0.3.18" + "@nodelib/fs.walk" "^1.2.8" + "@parcel/cache" "2.8.3" + "@parcel/core" "2.8.3" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.10" + "@types/http-proxy" "^1.17.11" + "@typescript-eslint/eslint-plugin" "^5.57.0" + "@typescript-eslint/parser" "^5.57.0" + "@vercel/webpack-asset-relocator-loader" "^1.7.3" + acorn-loose "^8.3.0" + acorn-walk "^8.2.0" + address "1.2.2" + anser "^2.1.1" + autoprefixer "^10.4.14" + axios "^0.21.1" + babel-jsx-utils "^1.1.0" + babel-loader "^8.3.0" + babel-plugin-add-module-exports "^1.0.4" babel-plugin-dynamic-import-node "^2.3.3" - babel-plugin-lodash "3.3.4" - babel-plugin-remove-graphql-queries "^2.9.20" - babel-preset-gatsby "^0.5.15" - better-opn "^2.0.0" - better-queue "^3.8.10" + babel-plugin-lodash "^3.3.4" + babel-plugin-remove-graphql-queries "^5.10.0" + babel-preset-gatsby "^3.10.0" + better-opn "^2.1.1" bluebird "^3.7.2" - body-parser "^1.19.0" - browserslist "^4.12.2" + browserslist "^4.21.5" cache-manager "^2.11.1" - cache-manager-fs-hash "^0.0.9" - chalk "^2.4.2" - chokidar "^3.4.2" - common-tags "^1.8.0" + chalk "^4.1.2" + chokidar "^3.5.3" + common-tags "^1.8.2" compression "^1.7.4" - convert-hrtime "^3.0.0" - copyfiles "^2.3.0" - core-js "^3.6.5" + cookie "^0.5.0" + core-js "^3.30.1" cors "^2.8.5" - css-loader "^1.0.1" - date-fns "^2.14.0" - debug "^3.2.6" - del "^5.1.0" - detect-port "^1.3.0" - devcert "^1.1.3" - dotenv "^8.2.0" - eslint "^6.8.0" - eslint-config-react-app "^5.2.1" - eslint-loader "^2.2.1" - eslint-plugin-flowtype "^3.13.0" - eslint-plugin-graphql "^4.0.0" - eslint-plugin-import "^2.22.0" - eslint-plugin-jsx-a11y "^6.3.1" - eslint-plugin-react "^7.20.6" - eslint-plugin-react-hooks "^1.7.0" - event-source-polyfill "^1.0.15" - execa "^4.0.3" - express "^4.17.1" - express-graphql "^0.9.0" - fastest-levenshtein "^1.0.12" - file-loader "^1.1.11" - find-cache-dir "^3.3.1" + css-loader "^5.2.7" + css-minimizer-webpack-plugin "^2.0.0" + css.escape "^1.5.1" + date-fns "^2.30.0" + debug "^4.3.4" + deepmerge "^4.3.1" + detect-port "^1.5.1" + devcert "^1.2.2" + dotenv "^8.6.0" + enhanced-resolve "^5.13.0" + error-stack-parser "^2.1.4" + eslint "^7.32.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.10.0" + eslint-plugin-import "^2.27.5" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.32.2" + eslint-plugin-react-hooks "^4.6.0" + eslint-webpack-plugin "^2.7.0" + event-source-polyfill "1.0.31" + execa "^5.1.1" + express "^4.18.2" + express-http-proxy "^1.6.3" + fastest-levenshtein "^1.0.16" + fastq "^1.15.0" + file-loader "^6.2.0" + find-cache-dir "^3.3.2" fs-exists-cached "1.0.0" - fs-extra "^8.1.0" - gatsby-cli "^2.12.114" - gatsby-core-utils "^1.3.23" - gatsby-graphiql-explorer "^0.4.15" - gatsby-legacy-polyfills "^0.0.6" - gatsby-link "^2.4.16" - gatsby-plugin-page-creator "^2.3.34" - gatsby-plugin-typescript "^2.5.0" - gatsby-plugin-utils "^0.2.40" - gatsby-react-router-scroll "^3.0.15" - gatsby-telemetry "^1.3.38" - glob "^7.1.6" - got "8.3.2" - graphql "^14.6.0" - graphql-compose "^6.3.8" - graphql-playground-middleware-express "^1.7.18" - hasha "^5.2.0" - http-proxy "^1.18.1" + fs-extra "^11.1.1" + gatsby-cli "^5.10.0" + gatsby-core-utils "^4.10.0" + gatsby-graphiql-explorer "^3.10.0" + gatsby-legacy-polyfills "^3.10.0" + gatsby-link "^5.10.0" + gatsby-page-utils "^3.10.0" + gatsby-parcel-config "1.10.0" + gatsby-plugin-page-creator "^5.10.0" + gatsby-plugin-typescript "^5.10.0" + gatsby-plugin-utils "^4.10.0" + gatsby-react-router-scroll "^6.10.0" + gatsby-script "^2.10.0" + gatsby-telemetry "^4.10.0" + gatsby-worker "^2.10.0" + glob "^7.2.3" + globby "^11.1.0" + got "^11.8.6" + graphql "^16.6.0" + graphql-compose "^9.0.10" + graphql-http "^1.18.0" + graphql-tag "^2.12.6" + hasha "^5.2.2" invariant "^2.2.4" is-relative "^1.0.0" is-relative-url "^3.0.0" - jest-worker "^24.9.0" - joi "^17.2.1" + joi "^17.9.2" json-loader "^0.5.7" - json-stringify-safe "^5.0.1" - latest-version "5.1.0" - lodash "^4.17.20" - md5-file "^5.0.0" - meant "^1.0.1" - micromatch "^4.0.2" - mime "^2.4.6" - mini-css-extract-plugin "^0.11.2" + latest-version "^7.0.0" + lmdb "2.5.3" + lodash "^4.17.21" + meant "^1.0.3" + memoizee "^0.4.15" + micromatch "^4.0.5" + mime "^3.0.0" + mini-css-extract-plugin "1.6.2" mitt "^1.2.0" - mkdirp "^0.5.1" - moment "^2.27.0" - name-all-modules-plugin "^1.0.1" + moment "^2.29.4" + multer "^1.4.5-lts.1" + node-fetch "^2.6.9" + node-html-parser "^5.4.2" normalize-path "^3.0.0" - null-loader "^3.0.0" - opentracing "^0.14.4" - optimize-css-assets-webpack-plugin "^5.0.3" + null-loader "^4.0.1" + opentracing "^0.14.7" p-defer "^3.0.0" parseurl "^1.3.3" physical-cpu-count "^2.0.0" - pnp-webpack-plugin "^1.6.4" - postcss-flexbugs-fixes "^4.2.1" - postcss-loader "^3.0.0" - prompts "^2.3.2" - prop-types "^15.7.2" - query-string "^6.13.1" - raw-loader "^0.5.1" - react-dev-utils "^4.2.3" - react-error-overlay "^6.0.7" - react-hot-loader "^4.12.21" - react-refresh "^0.8.3" - redux "^4.0.5" - redux-thunk "^2.3.0" - semver "^7.3.2" + platform "^1.3.6" + postcss "^8.4.23" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^5.3.0" + prompts "^2.4.2" + prop-types "^15.8.1" + query-string "^6.14.1" + raw-loader "^4.0.2" + react-dev-utils "^12.0.1" + react-refresh "^0.14.0" + react-server-dom-webpack "0.0.0-experimental-c8b778b7f-20220825" + redux "4.2.1" + redux-thunk "^2.4.2" + resolve-from "^5.0.0" + semver "^7.5.0" shallow-compare "^1.2.2" - signal-exit "^3.0.3" - slugify "^1.4.4" - socket.io "^2.3.0" - socket.io-client "2.3.0" - st "^2.0.0" + signal-exit "^3.0.7" + slugify "^1.6.6" + socket.io "4.6.1" + socket.io-client "4.6.1" stack-trace "^0.0.10" string-similarity "^1.2.2" - style-loader "^0.23.1" - terser-webpack-plugin "^2.3.8" + strip-ansi "^6.0.1" + style-loader "^2.0.0" + terser-webpack-plugin "^5.3.7" tmp "^0.2.1" "true-case-path" "^2.2.1" type-of "^2.0.1" - url-loader "^1.1.2" - util.promisify "^1.0.1" - uuid "3.4.0" - v8-compile-cache "^1.1.2" - webpack "^4.44.1" - webpack-dev-middleware "^3.7.2" - webpack-dev-server "^3.11.0" - webpack-hot-middleware "^2.25.0" - webpack-merge "^4.2.2" - webpack-stats-plugin "^0.3.2" - webpack-virtual-modules "^0.2.2" - xstate "^4.11.0" - yaml-loader "^0.6.0" - -gensync@^1.0.0-beta.1: + url-loader "^4.1.1" + uuid "^8.3.2" + webpack "^5.81.0" + webpack-dev-middleware "^4.3.0" + webpack-merge "^5.8.0" + webpack-stats-plugin "^1.1.1" + webpack-virtual-modules "^0.5.0" + xstate "^4.37.2" + yaml-loader "^0.8.0" + optionalDependencies: + gatsby-sharp "^1.10.0" + +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -5640,56 +6753,68 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" + +get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" 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-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-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@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.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-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 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= +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -git-up@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" - integrity sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: - is-ssh "^1.3.0" - parse-url "^5.0.0" + is-ssh "^1.4.0" + parse-url "^8.1.0" + +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.1: version "1.3.0" @@ -5698,22 +6823,37 @@ github-slugger@^1.2.1: dependencies: emoji-regex ">=6.0.0 <=6.1.1" -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= +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + is-glob "^4.0.1" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: - is-glob "^4.0.1" + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@10.2.6: + version "10.2.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1" + integrity sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2" + path-scurry "^1.7.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5725,284 +6865,194 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -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== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^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= +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" + global-prefix "^3.0.0" -global@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: - min-document "^2.19.0" - process "^0.11.10" + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" -globby@11.0.1, globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globals@^13.2.0, globals@^13.6.0, globals@^13.9.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" + type-fest "^0.20.2" -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== +globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - "@types/glob" "^7.1.1" array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.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" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= - dependencies: - delegate "^3.1.2" - -got@8.3.2: - 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" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -graphql-compose@^6.3.8: - version "6.3.8" - resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-6.3.8.tgz#9f82a85d5001a83adf1f7c4d3b5e5f72c432a062" - integrity sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA== - dependencies: - graphql-type-json "^0.2.4" - object-path "^0.11.4" - -graphql-config@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-3.0.3.tgz#58907c65ed7d6e04132321450b60e57863ea9a5f" - integrity sha512-MBY0wEjvcgJtZUyoqpPvOE1e5qPI0hJaa1gKTqjonSFiCsNHX2lykNjpOPcodmAgH1V06ELxhGnm9kcVzqvi/g== - dependencies: - "@graphql-tools/graphql-file-loader" "^6.0.0" - "@graphql-tools/json-file-loader" "^6.0.0" - "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "^6.0.0" - "@graphql-tools/url-loader" "^6.0.0" - "@graphql-tools/utils" "^6.0.0" - cosmiconfig "6.0.0" - minimatch "3.0.4" - string-env-interpolation "1.0.1" - tslib "^2.0.0" - -graphql-language-service-interface@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-2.4.2.tgz#77b868c0dad8f18908ff5c6a7a1706d43370bd40" - integrity sha512-iFLMz51cA2L5Tu7/mP19++bRGUuIe2J9ekQZrcJ6sMYStsF60x5eNu3JqheduYTLhQaSdKN55jX7RlLeIDUhQA== - dependencies: - graphql-language-service-parser "^1.6.4" - graphql-language-service-types "^1.6.3" - graphql-language-service-utils "^2.4.3" - vscode-languageserver-types "^3.15.1" - -graphql-language-service-parser@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-1.6.4.tgz#d5b92db1e50a91cdcf7f54f79253e13455e20257" - integrity sha512-Y365zUFfJ1GJ9NeRHb5Z/HBo6EnbuTi187Gkuldwd1YIDc0QcD7kqz6U5g043zd7BI/UZQth13Zd7pElvbb2zw== - dependencies: - graphql-language-service-types "^1.6.3" - typescript "^3.9.5" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^11.8.6: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +got@^12.1.0: + version "12.5.2" + resolved "https://registry.yarnpkg.com/got/-/got-12.5.2.tgz#2c1b390918961cf50e61cb02d2085ba203d0df45" + integrity sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.1" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@4.2.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -graphql-language-service-types@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-1.6.3.tgz#1a6ba25140ec9ffc6d7f36eca7a4069e91500f3d" - integrity sha512-VDtBhdan1iSe7ad7+eBbsO5rrzWQpC6aV4SxSHEi8AtEQOFXpnL9Lq5jSaN8O02pGvAUr4wNUPu0oRU5g2XmVA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-language-service-utils@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-2.4.3.tgz#e4f4d1a7e950dcc5ada2456096c88ad5b2bab9f2" - integrity sha512-XSCMKsV4GuVSGdW8RJTpO/IJDMXgESDJLu67SAuXFXwfel84j1gWrsmBAUeu6Di6NUEoM9NOCEtJv3LbU+/8qw== +graphql-compose@^9.0.10: + version "9.0.10" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-9.0.10.tgz#1e870166deb1785761865fe742dea0601d2c77f2" + integrity sha512-UsVoxfi2+c8WbHl2pEB+teoRRZoY4mbWBoijeLDGpAZBSPChnqtSRjp+T9UcouLCwGr5ooNyOQLoI3OVzU1bPQ== dependencies: - graphql-language-service-types "^1.6.3" + graphql-type-json "0.3.2" -graphql-playground-html@^1.6.29: - version "1.6.29" - resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#5b0c60a0161cc0f3116085f64c5a16cb3b2d9a16" - integrity sha512-fbF/zZKuw2sdfKp8gjTORJ/I9xBsqeEYRseWxBzuR15NHMptRTT9414IyRCs3ognZzUDr5MDJgx97SlLZCtQyA== - dependencies: - xss "^1.0.6" +graphql-http@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.18.0.tgz#6a72fc6d085e0761d9d483273c6fa9a6de5f6c4c" + integrity sha512-r2sIo6jCTQi1aj7s+Srg7oU3+r5pUUgxgDD5JDZOmFzrbXVGz+yMhIKhvqW0cV10DcnVIFCOzuFuc1qvnjJ7yQ== -graphql-playground-middleware-express@^1.7.18: - version "1.7.22" - resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.22.tgz#e4bbe4faaa56b48e95769c8b87b65e53355d91a4" - integrity sha512-PJLiCxLmN6Dp+dHGyHU92m9y3hB/RAkcUBWcqYl2fiP+EbpDDgNfElrsVzW60MhJe+LTV1PFqiInH2d3KNvlCQ== +graphql-language-service@^5.0.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.1.6.tgz#0d6d2b2bb09cf0d02c82fd97628dfdc63ce7936b" + integrity sha512-sl9HTlE/sBoFvZ2SPGnApwpp/a4ahl1d49SOxGm2OIYOslFv00MK7AYms9Yx91omOwAp74is10S7Cjamh5TRQw== dependencies: - graphql-playground-html "^1.6.29" + nullthrows "^1.0.0" + vscode-languageserver-types "^3.17.1" -graphql-subscriptions@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" - integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== +graphql-tag@^2.11.0, graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: - iterall "^1.2.1" + tslib "^2.1.0" -graphql-type-json@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9" - integrity sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w== - -graphql-type-json@^0.3.2: +graphql-type-json@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== -graphql@15.4.0: - version "15.4.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" - integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== +graphql@16.6.0, graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== -graphql@^14.6.0, graphql@^14.7.0: - version "14.7.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" - integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== +gray-matter@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-3.1.1.tgz#101f80d9e69eeca6765cdce437705b18f40876ac" + integrity sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA== dependencies: - iterall "^1.2.2" + extend-shallow "^2.0.1" + js-yaml "^3.10.0" + kind-of "^5.0.2" + strip-bom-string "^1.0.0" -gray-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454" - integrity sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw== +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== dependencies: - js-yaml "^3.11.0" + js-yaml "^3.13.1" kind-of "^6.0.2" section-matter "^1.0.0" strip-bom-string "^1.0.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== - -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.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -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" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -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== +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: - isarray "2.0.1" + duplexer "^0.1.2" -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-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" @@ -6014,84 +7064,38 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -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.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-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-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" - isobject "^2.0.0" - -has-value@^1.0.0: +has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" + get-intrinsic "^1.1.1" -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-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-values@^1.0.0: +has-tostringtag@^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= + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + has-symbols "^1.0.2" -has@^1.0.0, has@^1.0.3: +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.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" +hash-wasm@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/hash-wasm/-/hash-wasm-4.9.0.tgz#7e9dcc9f7d6bd0cc802f2a58f24edce999744206" + integrity sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w== -hasha@^5.2.0: +hasha@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== @@ -6099,78 +7103,83 @@ hasha@^5.2.0: is-stream "^2.0.0" type-fest "^0.8.0" -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== +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: + "@types/unist" "^2.0.3" comma-separated-tokens "^1.0.0" - property-information "^4.0.0" + property-information "^5.3.0" space-separated-tokens "^1.0.0" - style-to-object "^0.2.1" - unist-util-is "^2.0.0" - web-namespaces "^1.1.2" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.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== +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: - ccount "^1.0.3" - hastscript "^4.0.0" - property-information "^4.0.0" - web-namespaces "^1.1.2" - xtend "^4.0.1" + "@types/parse5" "^5.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" hast-util-is-element@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== -hast-util-parse-selector@^2.2.0: +hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -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== +hast-util-raw@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.1.0.tgz#e16a3c2642f65cc7c480c165400a40d604ab75d0" + integrity sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ== dependencies: - hast-util-from-parse5 "^4.0.2" - hast-util-to-parse5 "^4.0.1" - html-void-elements "^1.0.1" - parse5 "^5.0.0" + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + vfile "^4.0.0" web-namespaces "^1.0.0" - xtend "^4.0.1" + xtend "^4.0.0" zwitch "^1.0.0" -hast-util-to-html@^4.0.1: - 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== +hast-util-to-html@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz#9f339ca9bea71246e565fc79ff7dbfe98bb50f5e" + integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw== dependencies: ccount "^1.0.0" - comma-separated-tokens "^1.0.1" + comma-separated-tokens "^1.0.0" hast-util-is-element "^1.0.0" hast-util-whitespace "^1.0.0" html-void-elements "^1.0.0" - property-information "^4.0.0" + property-information "^5.0.0" space-separated-tokens "^1.0.0" - stringify-entities "^1.0.1" - unist-util-is "^2.0.0" - xtend "^4.0.1" + stringify-entities "^3.0.1" + unist-util-is "^4.0.0" + xtend "^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== +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: - hast-to-hyperscript "^5.0.0" - property-information "^4.0.0" + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" web-namespaces "^1.0.0" - xtend "^4.0.1" + xtend "^4.0.0" zwitch "^1.0.0" hast-util-whitespace@^1.0.0: @@ -6178,100 +7187,48 @@ hast-util-whitespace@^1.0.0: resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== -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== +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.2.0" - property-information "^4.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" space-separated-tokens "^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== - -hicat@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/hicat/-/hicat-0.7.0.tgz#a704cb3f57e49fbd7d38c2edd7aba38ff0b35263" - integrity sha1-pwTLP1fkn719OMLt16ujj/CzUmM= - dependencies: - highlight.js "^8.1.0" - minimist "^0.2.0" - -highlight.js@^8.1.0: - version "8.9.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" - integrity sha1-uKnFSTISqTkvAiK2SclhFJfr+4g= - -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" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== dependencies: - parse-passwd "^1.0.0" + capital-case "^1.0.4" + tslib "^2.0.3" -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hosted-git-info@^3.0.6: - version "3.0.7" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" - integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== +hosted-git-info@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== dependencies: lru-cache "^6.0.0" -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" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +html-entities@^2.1.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== -html-entities@^1.2.0, html-entities@^1.2.1, html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== +html-entities@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== -html-void-elements@^1.0.0, html-void-elements@^1.0.1: +html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== @@ -6288,227 +7245,113 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== +htmlparser2@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" -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-cache-semantics@^4.0.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -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.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.7.3: - version "1.8.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" - integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + statuses "2.0.1" + toidentifier "1.0.1" -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== +http2-wrapper@^2.1.10: + version "2.1.11" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" + integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" + quick-lru "^5.1.1" + resolve-alpn "^1.2.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= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: 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: - 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" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -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@^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== -ignore@^5.1.1, ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= -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" +immer@^9.0.7: + version "9.0.16" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198" + integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.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-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" - integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.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-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" +import-from@4.0.0, import-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" + integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== 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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6517,51 +7360,21 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - 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== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -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" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - inquirer@^7.0.0: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -6581,87 +7394,54 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - es-abstract "^1.17.0-next.1" + get-intrinsic "^1.1.0" has "^1.0.3" - side-channel "^1.0.2" + side-channel "^1.0.4" -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= +internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" -invariant@^2.2.0, invariant@^2.2.3, invariant@^2.2.4: +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" -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.9.1, ipaddr.js@^1.9.0: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -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-url@^3.0.0, is-absolute-url@^3.0.3: +is-absolute-url@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== -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: +is-absolute@^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== + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== dependencies: - kind-of "^6.0.0" + is-relative "^1.0.0" + is-windows "^1.0.1" is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -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.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -6675,6 +7455,23 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -6685,21 +7482,33 @@ is-arrayish@^0.3.1: 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= +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-binary-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz#bc6031290b65cbf799b9d9502b50fd5375524007" + integrity sha1-vGAxKQtly/eZudlQK1D9U3VSQAc= dependencies: - binary-extensions "^1.0.0" + is-buffer "^1.1.5" -is-binary-path@^2.1.0, is-binary-path@~2.1.0: +is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.4, is-buffer@^1.1.5: +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -6709,17 +7518,10 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -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.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^2.0.0: version "2.0.0" @@ -6728,78 +7530,36 @@ is-ci@^2.0.0: 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" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== +is-core-module@^2.11.0, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" -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.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -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" - kind-of "^5.0.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" - kind-of "^6.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-docker@^2.0.0, is-docker@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-docker@^2.0.0, is-docker@^2.1.1, is-docker@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extendable@^0.1.0, is-extendable@^0.1.1: +is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= @@ -6816,10 +7576,10 @@ is-extglob@^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: +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= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^2.0.0: version "2.0.0" @@ -6831,12 +7591,10 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" +is-generator-function@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== is-glob@^2.0.0: version "2.0.1" @@ -6845,26 +7603,18 @@ is-glob@^2.0.0: 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= +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - is-extglob "^2.1.0" + is-extglob "^2.1.1" is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - is-invalid-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34" @@ -6872,22 +7622,35 @@ is-invalid-path@^0.1.0: dependencies: is-glob "^2.0.0" -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-2.0.2.tgz#1c0884d3012c841556243483aa5d522f47396d2a" + integrity sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ== + dependencies: + tslib "^2.0.3" -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -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= +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - kind-of "^3.0.2" + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^7.0.0: version "7.0.0" @@ -6896,66 +7659,43 @@ is-number@^7.0.0: is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -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-path-cwd@^2.0.0, is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -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-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +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-promise@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - has-symbols "^1.0.1" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-relative-url@^3.0.0: version "3.0.0" @@ -6971,27 +7711,29 @@ is-relative@^1.0.0: 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-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-retry-allowed@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -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-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" -is-ssh@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b" - integrity sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ== +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" is-stream@^1.1.0: version "1.1.0" @@ -7003,23 +7745,40 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" -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== +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - html-comment-regex "^1.1.0" + has-symbols "^1.0.2" -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-typed-array@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" has-symbols "^1.0.1" is-typedarray@^1.0.0: @@ -7034,10 +7793,19 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== +is-upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-2.0.2.tgz#f1105ced1fe4de906a5f39553e7d3803fd804649" + integrity sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ== + dependencies: + tslib "^2.0.3" + +is-valid-domain@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-valid-domain/-/is-valid-domain-0.1.6.tgz#3c85469d2938f170c8f82ce6e52df8ad9fca8105" + integrity sha512-ZKtq737eFkZr71At8NxOFcP9O1K89gW3DkdrGMpp1upr/ueWjj+Weh4l9AI4rN0Gt8W2M1w7jrG2b/Yv83Ljpg== + dependencies: + punycode "^2.1.1" is-valid-path@^0.1.1: version "0.1.1" @@ -7046,123 +7814,109 @@ is-valid-path@^0.1.1: dependencies: is-invalid-path "^0.1.0" -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== -is-windows@^1.0.1, is-windows@^1.0.2: +is-weakref@^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== + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= + +is-windows@^1.0.1: + 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-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -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@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isarray@1.0.0, 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= - 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= -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" - -iterall@^1.2.1, iterall@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== - -jest-diff@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== +jackspeak@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.0.3.tgz#672eb397b97744a265b5862d7762b96e8dad6e61" + integrity sha512-0Jud3OMUdMbrlr3PyUMKESq51LXVAB+a239Ywdvd+Kgxj3MaBRml/nVRxf8tQFyfthMjuRkxkv7Vg58pmIMfuQ== dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + cliui "^7.0.4" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== +javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@^26.3.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== +jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.0.0" + +jiti@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== -joi@^17.2.1: - version "17.3.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.3.0.tgz#f1be4a6ce29bc1716665819ac361dfa139fff5d2" - integrity sha512-Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg== +joi@^17.9.2: + version "17.9.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" + integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" - "@sideway/formula" "^3.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -7170,12 +7924,7 @@ joi@^17.2.1: 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, js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -7183,6 +7932,13 @@ js-yaml@^3.11.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -7193,22 +7949,17 @@ jsesc@~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-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 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.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-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -7218,21 +7969,16 @@ json-schema-traverse@^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-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + 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-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= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -7240,19 +7986,15 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -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" +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: version "6.1.0" @@ -7263,53 +8005,29 @@ jsonfile@^6.0.1: 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= - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" - integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== - dependencies: - array-includes "^3.1.1" - object.assign "^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== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - json-buffer "3.0.0" + array-includes "^3.1.5" + object.assign "^4.1.3" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +keyv@^4.0.0, keyv@^4.5.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: - json-buffer "3.0.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + json-buffer "3.0.1" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2: 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: +kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -7324,32 +8042,41 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +klona@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + language-subtag-registry@~0.3.2: version "0.3.21" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== -language-tags@^1.0.5: +language-tags@=1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: language-subtag-registry "~0.3.2" -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== +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" + package-json "^8.1.0" -latest-version@5.1.0, latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +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: - package-json "^6.3.0" + set-getter "^0.1.0" less-loader@^6.2.0: version "6.2.0" @@ -7376,72 +8103,83 @@ less@^3.11.3: native-request "^1.0.5" source-map "~0.6.0" -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -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= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" + integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== + +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== 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= -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" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" +lmdb@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1" + integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA== + dependencies: + msgpackr "^1.5.4" + node-addon-api "^4.3.0" + node-gyp-build-optional-packages "5.0.3" + ordered-binary "^1.2.4" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.5.2" + "@lmdb/lmdb-darwin-x64" "2.5.2" + "@lmdb/lmdb-linux-arm" "2.5.2" + "@lmdb/lmdb-linux-arm64" "2.5.2" + "@lmdb/lmdb-linux-x64" "2.5.2" + "@lmdb/lmdb-win32-x64" "2.5.2" + +lmdb@2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.3.tgz#cac845a8576ef0fd2dcc279faab6fdb383f07463" + integrity sha512-iBA0cb13CobBSoGJLfZgnrykLlfJipDAnvtf+YwIqqzBEsTeQYsXrHaSBkaHd5wCWeabwrNvhjZoFMUrlo+eLw== + dependencies: + msgpackr "^1.5.4" + node-addon-api "^4.3.0" + node-gyp-build-optional-packages "5.0.3" + ordered-binary "^1.2.4" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "2.5.3" + "@lmdb/lmdb-darwin-x64" "2.5.3" + "@lmdb/lmdb-linux-arm" "2.5.3" + "@lmdb/lmdb-linux-arm64" "2.5.3" + "@lmdb/lmdb-linux-x64" "2.5.3" + "@lmdb/lmdb-win32-x64" "2.5.3" + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" -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" +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== locate-path@^3.0.0: version "3.0.0" @@ -7458,23 +8196,33 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lock@^1.0.0: +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lock@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55" integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU= -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.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" + integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== -lodash.clonedeep@4.5.0: +lodash.clonedeep@4.5.0, 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.deburr@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" @@ -7485,11 +8233,6 @@ lodash.every@^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" @@ -7505,6 +8248,11 @@ lodash.isempty@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" @@ -7525,32 +8273,22 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -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.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 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.without@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -loglevel@^1.6.8: - version "1.7.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" - integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== +lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -longest-streak@^2.0.1: +longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -7562,36 +8300,30 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" - integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== +lower-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" + integrity sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg== dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.2" + tslib "^2.0.3" -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - tslib "^1.10.0" - -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, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + tslib "^2.0.3" lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lru-cache@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28" @@ -7600,14 +8332,6 @@ lru-cache@4.0.0: pseudomap "^1.0.1" yallist "^2.0.0" -lru-cache@^4.0.0, lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7622,7 +8346,19 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: +lru-cache@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.0.0.tgz#daece36a9fc332e93f8e75f3fcfd17900253567c" + integrity sha512-9AEKXzvOZc4BMacFnYiTOlDH/197LNnQIK9wZ6iMB5NXPzuv4bWR/Msv7iUMplkiMQ1qQL+KSv/JF1mZAB5Lrg== + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -7630,35 +8366,25 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -map-cache@^0.2.2: +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -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.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -markdown-table@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - markdown-table@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" @@ -7666,131 +8392,200 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" -marked@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.2.tgz#5d77ffb789c4cb0ae828bfe76250f7140b123f70" - integrity sha512-5jjKHVl/FPo0Z6ocP3zYhKiJLzkwJAw4CZoLjv57FkvbUuwOX4LIBBGGcXjAY6ATcd1q9B8UTj5T9Umauj0QYQ== +marked@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-5.0.2.tgz#ac79e78ea7ed9ad31de70b85e274595d9029e534" + integrity sha512-TXksm9GwqXCRNbFUZmMtqNLvy3K2cQHuWmyBDLOrY1e6i9UvZpOTJXoz7fBjYkJkaUFzV9hBFxMuZSyQt8R6KQ== -md5-file@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-5.0.0.tgz#e519f631feca9c39e7f9ea1780b63c4745012e20" - integrity sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw== +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== +mdast-util-find-and-replace@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz#b7db1e873f96f66588c321f1363069abf607d1b5" + integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" + escape-string-regexp "^4.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -mdast-util-compact@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" - integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== +mdast-util-footnote@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz#4b226caeab4613a3362c144c94af0fdd6f7e0ef0" + integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== dependencies: - unist-util-visit "^1.1.0" + mdast-util-to-markdown "^0.6.0" + micromark "~2.11.0" -mdast-util-compact@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" - integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== dependencies: - unist-util-visit "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" -mdast-util-definitions@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" - integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== +mdast-util-gfm-autolink-literal@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz#9c4ff399c5ddd2ece40bd3b13e5447d84e385fb7" + integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== dependencies: - unist-util-visit "^1.0.0" + ccount "^1.0.0" + mdast-util-find-and-replace "^1.1.0" + micromark "^2.11.3" -mdast-util-to-hast@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40" - integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA== - dependencies: - collapse-white-space "^1.0.0" - detab "^2.0.0" - mdast-util-definitions "^1.2.0" - mdurl "^1.0.1" - trim "0.0.1" - trim-lines "^1.0.0" - unist-builder "^1.0.1" - unist-util-generated "^1.1.0" +mdast-util-gfm-strikethrough@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz#45eea337b7fff0755a291844fbea79996c322890" + integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA== + dependencies: + mdast-util-to-markdown "^0.6.0" + +mdast-util-gfm-table@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz#af05aeadc8e5ee004eeddfb324b2ad8c029b6ecf" + integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ== + dependencies: + markdown-table "^2.0.0" + mdast-util-to-markdown "~0.6.0" + +mdast-util-gfm-task-list-item@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz#70c885e6b9f543ddd7e6b41f9703ee55b084af10" + integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A== + dependencies: + mdast-util-to-markdown "~0.6.0" + +mdast-util-gfm@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz#8ecddafe57d266540f6881f5c57ff19725bd351c" + integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ== + dependencies: + mdast-util-gfm-autolink-literal "^0.1.0" + mdast-util-gfm-strikethrough "^0.2.0" + mdast-util-gfm-table "^0.1.0" + mdast-util-gfm-task-list-item "^0.1.0" + mdast-util-to-markdown "^0.6.1" + +mdast-util-to-hast@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz#61875526a017d8857b71abc9333942700b2d3604" + integrity sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" unist-util-position "^3.0.0" - unist-util-visit "^1.1.0" - xtend "^4.0.1" + unist-util-visit "^2.0.0" -mdast-util-to-nlcst@^3.2.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz#dcd0f51b59515b11a0700aeb40f168ed7ba9ed3d" - integrity sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag== +mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-nlcst@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz#ff8b5339c960b38209273fa8bf4dd7a9498f8636" + integrity sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg== dependencies: nlcst-to-string "^2.0.0" - repeat-string "^1.5.2" + repeat-string "^1.0.0" unist-util-position "^3.0.0" - vfile-location "^2.0.0" + vfile-location "^3.1.0" -mdast-util-to-string@^1.0.5, mdast-util-to-string@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" - integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== -mdast-util-toc@^5.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.0.4.tgz#5c7bc8ff64914546384d81ea155478ba34802c12" - integrity sha512-JjLlJfcnsQlAJKWCY8CfTp9gA5A2Mk5PeDmPmCLLvq+2SjlJKyGUQTiDdSO5WvPRzpwnghO3ByyJc4OngadB3w== +mdast-util-toc@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz#3af0f9c9a764b993538af03f1f79f4e3cec22736" + integrity sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g== dependencies: "@types/mdast" "^3.0.3" "@types/unist" "^2.0.3" extend "^3.0.2" github-slugger "^1.2.1" - mdast-util-to-string "^1.0.5" + mdast-util-to-string "^2.0.0" unist-util-is "^4.0.0" unist-util-visit "^2.0.0" -mdn-data@2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.12.tgz#bbb658d08b38f574bbb88f7b83703defdcc46844" - integrity sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== -mdurl@^1.0.1: +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -meant@^1.0.1, meant@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.2.tgz#5d0c78310a3d8ae1408a16be0fe0bd42a969f560" - integrity sha512-KN+1uowN/NK+sT/Lzx7WSGIj2u+3xe5n2LbwObfjOhPZiA+cCfCm6idVl0RkEfjThkw5XJ96CyRcanq6GmKtUg== +meant@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== 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= -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= +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +memfs@^3.1.2, memfs@^3.2.2: + version "3.4.10" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.10.tgz#4cdff7cfd21351a85e11b08aa276ebf100210a4d" + integrity sha512-0bCUP+L79P4am30yP1msPzApwuMQG23TjwlwdHeEV5MxioDR1a0AgB0T9FfggU52eJuDCq8WVwb5ekznFyWiTQ== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" + fs-monkey "^1.0.3" -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" merge-descriptors@1.0.1: version "1.0.1" @@ -7802,7 +8597,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -7812,50 +8607,83 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4: - 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" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" +micromark-extension-footnote@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz#129b74ef4920ce96719b2c06102ee7abb2b88a20" + integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== + dependencies: + micromark "~2.11.0" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromark-extension-gfm-autolink-literal@~0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz#53866c1f0c7ef940ae7ca1f72c6faef8fed9f204" + integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== dependencies: - braces "^3.0.1" - picomatch "^2.0.5" + micromark "~2.11.3" -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== +micromark-extension-gfm-strikethrough@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz#96cb83356ff87bf31670eefb7ad7bba73e6514d1" + integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw== + dependencies: + micromark "~2.11.0" + +micromark-extension-gfm-table@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz#4d49f1ce0ca84996c853880b9446698947f1802b" + integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA== + dependencies: + micromark "~2.11.0" + +micromark-extension-gfm-tagfilter@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz#d9f26a65adee984c9ccdd7e182220493562841ad" + integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q== + +micromark-extension-gfm-task-list-item@~0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz#d90c755f2533ed55a718129cee11257f136283b8" + integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ== + dependencies: + micromark "~2.11.0" + +micromark-extension-gfm@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz#36d1a4c089ca8bdfd978c9bd2bf1a0cb24e2acfe" + integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A== + dependencies: + micromark "~2.11.0" + micromark-extension-gfm-autolink-literal "~0.5.0" + micromark-extension-gfm-strikethrough "~0.6.5" + micromark-extension-gfm-table "~0.4.0" + micromark-extension-gfm-tagfilter "~0.3.0" + micromark-extension-gfm-task-list-item "~0.3.0" + +micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": + version "1.48.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" + integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== -"mime-db@>= 1.43.0 < 2": - version "1.45.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.25.0: version "1.25.0" @@ -7869,137 +8697,92 @@ mime-types@2.1.13: dependencies: mime-db "~1.25.0" -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@~2.1.24: + version "2.1.31" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" + integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== + dependencies: + mime-db "1.48.0" + +mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.44.0" + mime-db "1.52.0" mime@1.6.0, mime@^1.4.1: 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.4.4, mime@^2.4.6: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== - -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== +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +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" +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== -mini-css-extract-plugin@^0.11.2: - version "0.11.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" - integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== +mini-css-extract-plugin@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" + integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" webpack-sources "^1.1.0" -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@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" - -minimatch@3.0.4, 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== +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" - integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== - -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== +minimatch@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" + integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== dependencies: - minipass "^3.0.0" + brace-expansion "^2.0.1" -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -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" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" +"minipass@^5.0.0 || ^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" + integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== mitt@^1.2.0: version "1.2.0" @@ -8014,127 +8797,136 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment@^2.27.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -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" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" +moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== 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.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== - ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -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= +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -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== +msgpackr-extract@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz#4bb749b58d9764cfdc0d91c7977a007b08e8f262" + integrity sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog== dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" + node-gyp-build-optional-packages "5.0.3" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.2.0" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.2.0" + "@msgpackr-extract/msgpackr-extract-linux-arm" "2.2.0" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.2.0" + "@msgpackr-extract/msgpackr-extract-linux-x64" "2.2.0" + "@msgpackr-extract/msgpackr-extract-win32-x64" "2.2.0" + +msgpackr@^1.5.4: + version "1.8.0" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.0.tgz#6cf213e88f04c5a358c61085a42a4dbe5542de44" + integrity sha512-1Cos3r86XACdjLVY4CN8r72Cgs5lUzxSON6yb81sNZP9vC9nnBrEbu1/ldBhuR9BKejtoYV5C9UhmYUvZFJSNQ== + optionalDependencies: + msgpackr-extract "^2.2.0" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +multer@^1.4.5-lts.1: + version "1.4.5-lts.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" + integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== + dependencies: + append-field "^1.0.0" + busboy "^1.0.0" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + type-is "^1.6.4" + xtend "^4.0.0" mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -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.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -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" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== native-request@^1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.8.tgz#8f66bf606e0f7ea27c0e5995eb2f5d03e33ae6fb" integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag== -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== 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= -negotiator@0.6.2, negotiator@~0.6.2: +negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1: +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -8150,97 +8942,92 @@ nlcst-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc" integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg== -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" + lower-case "^2.0.2" + tslib "^2.0.3" -node-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== +node-abi@^3.3.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.8.0.tgz#679957dc8e7aa47b0a02589dbfde4f77b29ccb32" + integrity sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw== dependencies: - lodash.toarray "^4.4.0" + semver "^7.3.5" -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-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== -node-fetch@2.6.1, node-fetch@^2.5.0, node-fetch@^2.6.1: +node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-fetch@^2.3.0: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" -node-gyp-build@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== +node-fetch@^2.6.9: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-object-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b" - integrity sha512-VZR0zroAusy1ETZMZiGeLkdu50LGjG5U1KHZqTruqtTyQ2wfWhHG2Ow4nsUbfTFGlaREgNHcCWoM/OzEm6p+NQ== +node-gyp-build-optional-packages@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== -node-releases@^1.1.65: - version "1.1.65" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81" - integrity sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA== +node-gyp-build@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" + integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== -noms@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" - integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= +node-html-parser@^5.4.2: + version "5.4.2" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" + integrity sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw== dependencies: - inherits "^2.0.1" - readable-stream "~1.0.31" + css-select "^4.2.1" + he "1.2.0" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" +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-object-hash@^2.3.10: + version "2.3.10" + resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.3.10.tgz#4b0c1a3a8239e955f0db71f8e00b38b5c0b33992" + integrity sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== normalize-path@^2.1.1: version "2.1.1" @@ -8259,34 +9046,20 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -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" - sort-keys "^2.0.0" +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -normalize-url@^3.0.0, normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-7.2.0.tgz#5317f78cff95f5fa1e76cc0b5e33245c43781e11" + integrity sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA== -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +not@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/not/-/not-0.1.0.tgz#c9691c1746c55dcfbe54cbd8bd4ff041bc2b519d" + integrity sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0= npm-run-path@^2.0.0: version "2.0.2" @@ -8295,61 +9068,61 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -nth-check@^1.0.1, nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@^2.0.0, nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" -null-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-3.0.0.tgz#3e2b6c663c5bda8c73a54357d8fa0708dc61b245" - integrity sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw== +null-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a" + integrity sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg== dependencies: - loader-utils "^1.2.3" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nullthrows@^1.0.0, nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +numbro@2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.3.6.tgz#4bd622ebe59ccbc49dad365c5b9eed200781fa21" + integrity sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg== + dependencies: + bignumber.js "^8.1.1" object-assign@^4, 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" - kind-of "^3.0.3" - -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== object-is@^1.0.1: version "1.1.3" @@ -8359,86 +9132,68 @@ object-is@^1.0.1: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" -object-keys@^1.0.12, object-keys@^1.1.1: +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.11.2, object-path@^0.11.4: - version "0.11.5" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" - integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== - -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.1.0, object.assign@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" - -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -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= +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: - isobject "^3.0.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -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== + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -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= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -8454,14 +9209,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -8476,71 +9224,56 @@ open@^7.0.3: is-docker "^2.0.0" is-wsl "^2.1.1" -opentracing@^0.14.4: - version "0.14.4" - resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.4.tgz#a113408ea740da3a90fde5b3b0011a375c2e4268" - integrity sha512-nNnZDkUNExBwEpb7LZaeMeQgvrlO8l4bgY/LvGNZCR0xG/dGWqHqjKrAmR5GUoYo0FIz38kxasvA1aevxWs2CA== - -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.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" +opentracing@^0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" + integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== -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== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - url-parse "^1.4.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.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= +ordered-binary@^1.2.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" + integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== 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= -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +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-defer@^3.0.0: version "3.0.0" @@ -8552,44 +9285,20 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= - -p-limit@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.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== +p-limit@3.1.0, p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^1.0.0" + yocto-queue "^0.1.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 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" @@ -8604,83 +9313,42 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.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== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 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-limit "^3.0.2" -p-try@^2.0.0, p-try@^2.1.0: +p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +package-json@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.0.tgz#2a22806f1ed7c786c8e6ff26cfe20003bf4c6850" + integrity sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg== dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" + callsites "^3.0.0" parse-english@^4.0.0: version "4.2.0" @@ -8692,18 +9360,6 @@ parse-english@^4.0.0: unist-util-modify-children "^2.0.0" unist-util-visit-children "^1.0.0" -parse-entities@^1.0.2, parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -8716,20 +9372,14 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.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= +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: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" parse-json@^5.0.0: version "5.1.0" @@ -8750,80 +9400,55 @@ parse-latin@^4.0.0: unist-util-modify-children "^2.0.0" unist-util-visit-children "^1.0.0" -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-path@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.2.tgz#ef14f0d3d77bae8dd4bc66563a4c151aac9e65aa" - integrity sha512-HSqVz6iuXSiL8C1ku5Gl1Z5cwDd9Wo0q8CoffdAghP6bz8pJa1tcMC+m4N+z6VAS8QdksnIGq1TB6EgR4vPR6w== +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" + protocols "^2.0.0" parse-srcset@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= -parse-url@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59" - integrity sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA== - dependencies: - is-ssh "^1.3.0" - normalize-url "^3.3.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: - better-assert "~1.0.0" + parse-path "^7.0.0" -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -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= +parser-front-matter@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/parser-front-matter/-/parser-front-matter-1.6.4.tgz#71fe3288a51c7b8734163f3793f3fdc24b0a8a90" + integrity sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g== dependencies: - better-assert "~1.0.0" - -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== + extend-shallow "^2.0.1" + file-is-binary "^1.0.0" + gray-matter "^3.0.2" + isobject "^3.0.1" + lazy-cache "^2.0.2" + mixin-deep "^1.2.0" + trim-leading-lines "^0.1.1" -parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@^1.3.3, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: - no-case "^3.0.3" - tslib "^1.10.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= + no-case "^3.0.4" + tslib "^2.0.3" password-prompt@^1.0.4: version "1.1.2" @@ -8833,22 +9458,13 @@ password-prompt@^1.0.4: ansi-escapes "^3.1.0" cross-spawn "^6.0.5" -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -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= +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== dependencies: - pinkie-promise "^2.0.0" + dot-case "^3.0.4" + tslib "^2.0.3" path-exists@^3.0.0: version "3.0.0" @@ -8865,11 +9481,6 @@ path-is-absolute@^1.0.0: 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.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" @@ -8880,38 +9491,45 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +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-scurry@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.7.0.tgz#99c741a2cfbce782294a39994d63748b5a24f6db" + integrity sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg== + dependencies: + lru-cache "^9.0.0" + minipass "^5.0.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-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@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" +peek-readable@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" + integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== performance-now@^2.1.0: version "2.1.0" @@ -8923,471 +9541,419 @@ physical-cpu-count@^2.0.0: resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 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= - -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" +pirates@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" + find-up "^3.0.0" -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= +platform@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-flexbugs-fixes@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: - postcss "^7.0.26" + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -postcss-js@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" - integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== dependencies: camelcase-css "^2.0.1" - postcss "^7.0.18" -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" + camelcase-css "^2.0.1" -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== +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" + lilconfig "^2.0.5" + yaml "^2.1.1" -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +postcss-loader@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.3.0.tgz#1657f869e48d4fdb018a40771c235e499ee26244" + integrity sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.4" + semver "^7.3.4" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== +postcss-loader@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.0.tgz#05991c1e490d8ff86ef18358d87db3b5b2dcb5f5" + integrity sha512-qLAFjvR2BFNz1H930P7mj1iuWJFjGey/nVhimfOAAQ1ZyPpcClAxP8+A55Sl8mBvM+K2a9Pjgdj10KpANWrNfw== dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + cosmiconfig "^8.1.3" + jiti "^1.18.2" + klona "^2.0.6" + semver "^7.3.8" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== +postcss-merge-rules@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz#8f97679e67cc8d08677a6519afca41edf2220894" + integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA== dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - postcss "^6.0.1" + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.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= +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss-selector-parser "^6.0.5" -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= +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.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= +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" + postcss-selector-parser "^6.0.4" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - postcss "^7.0.0" + icss-utils "^5.0.0" -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-selector-parser "^6.0.11" -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.2.0" -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== +postcss-reduce-initial@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz#c18b7dfb88aee24b1f8e4936541c29adbd35224e" + integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w== dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== +postcss-selector-parser@6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== +postcss-selector-parser@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + cssesc "^3.0.0" + util-deprecate "^1.0.2" -postcss@^6.0.1, 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== +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + postcss-selector-parser "^6.0.5" -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.23, postcss@^8.4.23: + version "8.4.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.2.15, postcss@^8.2.9, postcss@^8.3.11: + version "8.4.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" + integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.19, postcss@^8.4.4: + version "8.4.22" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.22.tgz#c29e6776b60ab3af602d4b513d5bd2ff9aa85dc1" + integrity sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" -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= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@2.1.2, prettier@^2.0.5: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== +prettier@2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-bytes@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^2.1.1: +pretty-error@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== @@ -9395,218 +9961,143 @@ pretty-error@^2.1.1: lodash "^4.17.20" renderkid "^2.0.4" -pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -prism-react-renderer@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz#1c1be61b1eb9446a146ca7a50b7bcf36f2a70a44" - integrity sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug== +prism-react-renderer@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" + integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== -prismjs@1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa" - integrity sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w== - optionalDependencies: - clipboard "^2.0.0" +prismjs@1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -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@^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.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.1, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== +prop-types@^15.6.1, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" -proper-lockfile@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.1.tgz#284cf9db9e30a90e647afad69deb7cb06881262c" - integrity sha512-1w6rxXodisVpn7QYvLk706mzprPTAPCYAqxMvctmPN3ekuRk/kuGkGc82pangZiAt4R3lwSuUzheTTn0/Yb7Zg== +proper-lockfile@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== dependencies: - graceful-fs "^4.1.11" + graceful-fs "^4.2.4" retry "^0.12.0" signal-exit "^3.0.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== +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: - xtend "^4.0.1" + xtend "^4.0.0" -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + 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: +pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - 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" - 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" - -pumpify@^1.3.3: - 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" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -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== - -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + end-of-stream "^1.1.0" + once "^1.3.1" -qs@^6.5.2: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== +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== -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" +punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -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== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" + side-channel "^1.0.4" -query-string@^6.13.1: - version "6.13.6" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.6.tgz#e5ac7c74f2a5da43fbca0b883b4f0bafba439966" - integrity sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ== +query-string@^6.14.1: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== dependencies: decode-uri-component "^0.2.0" + filter-obj "^1.1.0" split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring-es3@^0.2.0: - 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= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf@^3.4.0: version "3.4.1" @@ -9615,52 +10106,37 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 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" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.5.1, raw-body@^2.3.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: - bytes "3.1.0" - http-errors "1.7.3" - iconv-lite "0.4.24" - unpipe "1.0.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= + loader-utils "^2.0.0" + schema-utils "^3.0.0" -rc@^1.2.8: +rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -9670,79 +10146,50 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dev-utils@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.3.tgz#5b42d9ea58d5e9e017a2f57a40a8af408a3a46fb" - integrity sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ== - dependencies: - address "1.0.3" - babel-code-frame "6.26.0" - chalk "1.1.3" - cross-spawn "5.1.0" - detect-port-alt "1.1.3" - escape-string-regexp "1.0.5" - filesize "3.5.11" - global-modules "1.0.0" - gzip-size "3.0.0" - inquirer "3.3.0" - is-root "1.0.0" - opn "5.1.0" - react-error-overlay "^3.0.0" - recursive-readdir "2.2.1" - shell-quote "1.6.1" - sockjs-client "1.1.4" - strip-ansi "3.0.1" - text-table "0.2.0" - -react-dom@17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" - integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.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-error-overlay@^6.0.7: - version "6.0.8" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" - integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== - -react-fast-compare@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" -react-helmet@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: - object-assign "^4.1.1" - prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" + loose-envify "^1.1.0" + scheduler "^0.23.0" -react-hot-loader@^4.12.21: - version "4.13.0" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" - integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== - dependencies: - fast-levenshtein "^2.0.6" - global "^4.3.0" - hoist-non-react-statics "^3.3.0" - loader-utils "^1.1.0" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - source-map "^0.7.3" +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9752,48 +10199,33 @@ react-lifecycles-compat@^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-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== - -react-side-effect@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" - integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react@17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" - integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== +react-server-dom-webpack@0.0.0-experimental-c8b778b7f-20220825: + version "0.0.0-experimental-c8b778b7f-20220825" + resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-0.0.0-experimental-c8b778b7f-20220825.tgz#b147886ed7cff5b31d9452d6ffe6987bfd876ceb" + integrity sha512-JyCjbp6ZvkH/T0EuVPdceYlC8u5WqWDSJr2KxDvc81H2eJ+7zYUN++IcEycnR2F+HmER8QVgxfotnIx352zi+w== dependencies: + acorn "^6.2.1" loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-chunk@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" - integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== - dependencies: - pify "^4.0.1" - with-open-file "^0.1.6" + neo-async "^2.6.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= +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" + loose-envify "^1.1.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" + pify "^2.3.0" read@^1.0.7: version "1.0.7" @@ -9802,7 +10234,7 @@ read@^1.0.7: 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.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.2.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9815,7 +10247,7 @@ read@^1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9824,51 +10256,45 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -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== +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + readable-stream "^3.6.0" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -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= +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: - minimatch "3.0.3" + minimatch "^3.0.5" -redux-thunk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== +redux-thunk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" + integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== +redux@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" + "@babel/runtime" "^7.9.2" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -9877,7 +10303,7 @@ regenerate-unicode-properties@^8.2.0: dependencies: regenerate "^1.4.0" -regenerate@^1.4.0: +regenerate@^1.4.0, regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -9887,43 +10313,36 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.7: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -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== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -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== + functions-have-names "^1.2.2" -regexpp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^4.7.1: version "4.7.1" @@ -9937,25 +10356,42 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" - integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== +regexpu-core@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== dependencies: - rc "^1.2.8" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +registry-auth-token@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.1.tgz#5e6cd106e6c251135a046650c58476fc03e92833" + integrity sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA== + dependencies: + "@pnpm/npm-conf" "^1.0.4" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== dependencies: - rc "^1.2.8" + rc "1.2.8" regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -9963,104 +10399,67 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -remark-mdx@^2.0.0-next.4: - version "2.0.0-next.8" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.8.tgz#db1c3cbc606ea0d01526242199bb134d99020363" - integrity sha512-mjP0yo6BgjYrx5a+gKWYRFWbGnRiWi4Fdf17xGCr9VkSMnG4Dyo06spqbaLfHwl0KkQ/RQZlR2sn1mKnYduJdw== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: - parse-entities "^2.0.0" - remark-stringify "^8.1.0" - stringify-entities "^3.0.1" - strip-indent "^3.0.0" - unist-util-stringify-position "^2.0.3" + jsesc "~0.5.0" -remark-mdxjs@^2.0.0-next.4: - version "2.0.0-next.8" - resolved "https://registry.yarnpkg.com/remark-mdxjs/-/remark-mdxjs-2.0.0-next.8.tgz#ff603ebfcb17f19503ee3fab78447445eaa08783" - integrity sha512-Z/+0eWc7pBEABwg3a5ptL+vCTWHYMFnYzpLoJxTm2muBSk8XyB/CL+tEJ6SV3Q/fScHX2dtG4JRcGSpbZFLazQ== +relay-runtime@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237" + integrity sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug== dependencies: - "@babel/core" "7.10.5" - "@babel/helper-plugin-utils" "7.10.4" - "@babel/plugin-proposal-object-rest-spread" "7.10.4" - "@babel/plugin-syntax-jsx" "7.10.4" - "@mdx-js/util" "^2.0.0-next.8" + "@babel/runtime" "^7.0.0" + fbjs "^3.0.0" + invariant "^2.2.4" -remark-parse@^6.0.0, remark-parse@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" - integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== +remark-footnotes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-3.0.0.tgz#5756b56f8464fa7ed80dbba0c966136305d8cb8d" + integrity sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg== dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" + mdast-util-footnote "^0.1.0" + micromark-extension-footnote "^0.3.0" -remark-retext@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-3.1.3.tgz#77173b1d9d13dab15ce5b38d996195fea522ee7f" - integrity sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw== +remark-gfm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-1.0.0.tgz#9213643001be3f277da6256464d56fd28c3b3c0d" + integrity sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA== dependencies: - mdast-util-to-nlcst "^3.2.0" + mdast-util-gfm "^0.1.0" + micromark-extension-gfm "^0.3.0" -remark-stringify@6.0.4, remark-stringify@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" - integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^1.1.0" - mdast-util-compact "^1.0.0" - parse-entities "^1.0.2" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^1.0.1" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-from-markdown "^0.8.0" -remark-stringify@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" - integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A== +remark-retext@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-4.0.0.tgz#255ed98ac3e0a68da5c6ba4f172299b8d062bb28" + integrity sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q== dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^2.0.0" - mdast-util-compact "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^3.0.0" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-to-nlcst "^4.0.0" + +remark-stringify@^9.0.0, remark-stringify@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== + dependencies: + mdast-util-to-markdown "^0.6.0" -remark@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" - integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== dependencies: - remark-parse "^6.0.0" - remark-stringify "^6.0.0" - unified "^7.0.0" + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" remove-trailing-separator@^1.0.1: version "1.1.0" @@ -10078,12 +10477,7 @@ renderkid@^2.0.4: lodash "^4.17.20" strip-ansi "^3.0.0" -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.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.0.0: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -10098,6 +10492,11 @@ require-directory@^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.2: + 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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -10108,17 +10507,10 @@ require-package-name@^2.0.1: resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= -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-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" @@ -10127,56 +10519,56 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-dir@^1.0.0: - 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" - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -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-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-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -responselike@1.0.2, responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +resolve@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - lowercase-keys "^1.0.0" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^2.0.0: +responselike@^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= + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + lowercase-keys "^2.0.0" + +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" restore-cursor@^3.1.0: version "3.1.0" @@ -10186,11 +10578,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retext-english@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.4.tgz#f978828d51fbcee842bc3807a45b7f709822ea8d" @@ -10209,45 +10596,20 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -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" - rss@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/rss/-/rss-1.2.2.tgz#50a1698876138133a74f9a05d2bdc8db8d27a921" @@ -10256,34 +10618,17 @@ rss@^1.2.2: mime-types "2.1.13" xml "1.0.1" -run-async@^2.2.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== - -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= + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 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= + queue-microtask "^1.2.2" rxjs@^6.6.0: version "6.6.3" @@ -10297,64 +10642,54 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -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= +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - ret "~0.1.10" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize-html@^1.27.5: - version "1.27.5" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.27.5.tgz#6c8149462adb23e360e1bb71cc0bae7f08c823c7" - integrity sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A== +sanitize-html@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.10.0.tgz#74d28848dfcf72c39693139131895c78900ab452" + integrity sha512-JqdovUd81dG4k87vZt6uA6YhDfWkUGruUu/aPmXLxXi45gZExnt9Bnw/qeQU8oGf82vPyaE0vO4aH0PbobB9JQ== dependencies: - htmlparser2 "^4.1.0" - lodash "^4.17.15" + deepmerge "^4.2.2" + escape-string-regexp "^4.0.0" + htmlparser2 "^8.0.0" + is-plain-object "^5.0.0" parse-srcset "^1.0.2" - postcss "^7.0.27" - -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== + postcss "^8.3.11" -scheduler@^0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" - integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" -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== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - -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" - ajv-keywords "^3.1.0" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -10363,6 +10698,24 @@ schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" + integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + scroll-to-element@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/scroll-to-element/-/scroll-to-element-2.0.3.tgz#99b404fc6a09fe73f3c062cd5b8a14efb6404e4d" @@ -10378,151 +10731,136 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" -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.10.7: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== - dependencies: - node-forge "^0.10.0" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.7: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.0: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" + randombytes "^2.1.0" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.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-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== +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: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + to-object-path "^0.3.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.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + kind-of "^6.0.2" 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== -shallowequal@^1.1.0: - 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.32.1: + version "0.32.1" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe" + integrity sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg== + dependencies: + color "^4.2.3" + detect-libc "^2.0.1" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.0" + simple-get "^4.0.1" + tar-fs "^2.1.1" + tunnel-agent "^0.6.0" shebang-command@^1.2.0: version "1.2.0" @@ -10548,28 +10886,53 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -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= +shell-quote@^1.7.3: + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -side-channel@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" - integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.1.tgz#96a61033896120ec9335d96851d902cc98f0ba2a" + integrity sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw== + +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.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== dependencies: - es-abstract "^1.18.0-next.0" - object-inspect "^1.8.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" simple-swizzle@^0.2.2: version "0.2.2" @@ -10578,13 +10941,6 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -single-trailing-newline@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/single-trailing-newline/-/single-trailing-newline-1.0.0.tgz#81f0ad2ad645181945c80952a5c1414992ee9664" - integrity sha1-gfCtKtZFGBlFyAlSpcFBSZLulmQ= - dependencies: - detect-newline "^1.0.3" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -10595,263 +10951,111 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -slugify@^1.4.4: - version "1.4.6" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace" - integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ== - -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" - snapdragon-util "^3.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" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - -socket.io-client@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" - integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~4.1.0" - engine.io-client "~3.4.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" - integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== - dependencies: - component-emitter "~1.3.0" - debug "~3.1.0" - isarray "2.0.1" - -socket.io-parser@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" - integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - component-emitter "1.2.1" - debug "~4.1.0" - isarray "2.0.1" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -socket.io@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" - integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== - dependencies: - debug "~4.1.0" - engine.io "~3.4.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.3.0" - socket.io-parser "~3.4.0" +slugify@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" + integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw== -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= +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" + dot-case "^3.0.4" + tslib "^2.0.3" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +socket.io-adapter@~2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" + integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + ws "~8.11.0" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +socket.io-client@4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.6.1.tgz#80d97d5eb0feca448a0fb6d69a7b222d3d547eab" + integrity sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ== dependencies: - faye-websocket "^0.10.0" - uuid "^3.4.0" - websocket-driver "0.6.5" + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.4.0" + socket.io-parser "~4.2.1" -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= +socket.io-parser@~4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" + integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== dependencies: - is-plain-obj "^1.0.0" + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" -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= +socket.io@4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.1.tgz#62ec117e5fce0692fa50498da9347cfb52c3bc70" + integrity sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA== dependencies: - is-plain-obj "^1.0.0" + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.2" + engine.io "~6.4.1" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.1" source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -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.7.3, 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== - -source-map@^0.5.0, source-map@^0.5.6: - 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: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== - -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" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -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== +sponge-case@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" + integrity sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA== dependencies: - extend-shallow "^3.0.0" + tslib "^2.0.3" -sprintf-js@^1.0.3: +sprintf-js@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== @@ -10861,34 +11065,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -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" - -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -st@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/st/-/st-2.0.0.tgz#eabd11e7722863b8ee8cfbdd027cb25e76ff35e9" - integrity sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw== - dependencies: - async-cache "^1.1.0" - bl "^4.0.0" - fd "~0.0.2" - mime "^2.4.4" - negotiator "~0.6.2" - optionalDependencies: - graceful-fs "^4.2.3" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -10899,75 +11075,37 @@ stack-trace@^0.0.10: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - -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" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -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" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -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== +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" + internal-slot "^1.0.4" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: +streamsearch@^1.1.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= + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 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-env-interpolation@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" - integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== string-similarity@^1.2.2: version "1.2.2" @@ -10980,15 +11118,7 @@ string-similarity@^1.2.2: lodash.map "^4.6.0" lodash.maxby "^4.6.0" -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" - -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -10997,55 +11127,54 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + strip-ansi "^6.0.1" -string.prototype.trimend@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" - integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" - integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== +string.prototype.trimstart@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" -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.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -11053,17 +11182,7 @@ string_decoder@~1.1.1: 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" - is-alphanumerical "^1.0.0" - is-hexadecimal "^1.0.0" - -stringify-entities@^3.0.0, stringify-entities@^3.0.1: +stringify-entities@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== @@ -11072,33 +11191,26 @@ stringify-entities@^3.0.0, stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" -strip-ansi@3.0.1, strip-ansi@^3, strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: 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, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" strip-bom-string@^1.0.0: version "1.0.0" @@ -11110,11 +11222,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -11125,14 +11232,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.0.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -11142,20 +11242,21 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +strtok3@^6.2.4: + version "6.2.4" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" + integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + "@tokenizer/token" "^0.3.0" + peek-readable "^4.0.1" -style-to-object@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" - integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: - inline-style-parser "0.1.1" + loader-utils "^2.0.0" + schema-utils "^3.0.0" style-to-object@^0.3.0: version "0.3.0" @@ -11164,50 +11265,39 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" -subscriptions-transport-ws@0.9.18: - version "0.9.18" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" - integrity sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA== +sucrase@^3.32.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" + integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0" + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" sudo-prompt@^8.2.0: version "8.2.5" resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== -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@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.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" - supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -11215,133 +11305,201 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" -symbol-observable@^1.0.4, 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== +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +swap-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-2.0.2.tgz#671aedb3c9c137e2985ef51c51f9e98445bf70d9" + integrity sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + tslib "^2.0.3" + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" -tapable@^1.0.0, tapable@^1.1.3: +tailwindcss@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== -terser-webpack-plugin@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== +tar-fs@^2.0.0, tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +terser-webpack-plugin@^5.3.7: + version "5.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz#415e03d2508f7de63d59eca85c5d102838f06610" + integrity sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" -terser@^4.1.2, terser@^4.6.12: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +terser@^5.16.8: + version "5.17.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.4.tgz#b0c2d94897dfeba43213ed5f90ed117270a2c696" + integrity sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw== dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map-support "~0.5.20" + +terser@^5.2.0: + version "5.15.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c" + integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0, through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" + any-promise "^1.0.0" through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -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= +timeago.js@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/timeago.js/-/timeago.js-4.0.2.tgz#724e8c8833e3490676c7bb0a75f5daf20e558028" + integrity sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== 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= + es5-ext "~0.10.46" + next-tick "1" -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +title-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" + integrity sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA== + dependencies: + tslib "^2.0.3" tmp@^0.0.33: version "0.0.33" @@ -11357,16 +11515,6 @@ tmp@^0.2.1: dependencies: rimraf "^3.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-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" @@ -11379,19 +11527,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -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" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -11399,35 +11534,30 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.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" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -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== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -trim-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" - integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== +token-types@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" + integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" -trim-trailing-lines@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" - integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= +trim-leading-lines@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz#0e7cac3e83042dcf95a74ed36966f17744d5c169" + integrity sha1-DnysPoMELc+Vp07TaWbxd0TVwWk= + dependencies: + is-whitespace "^0.3.0" trough@^1.0.0: version "1.0.5" @@ -11439,19 +11569,19 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: @@ -11459,46 +11589,48 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@~2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -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= - -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= +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: - prelude-ls "~1.1.2" + safe-buffer "^5.0.1" -type-fest@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" - integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" type-fest@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@~1.6.17, type-is@~1.6.18: +type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -11533,22 +11665,37 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.9.5: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== + +ua-parser-js@^0.7.18: + version "0.7.28" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" 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== +underscore.string@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.6.tgz#ad8cf23d7423cb3b53b898476117588f4e2f9159" + integrity sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ== dependencies: - sprintf-js "^1.0.3" + sprintf-js "^1.1.1" util-deprecate "^1.0.2" unherit@^1.0.4: @@ -11564,6 +11711,11 @@ unicode-canonical-property-names-ecmascript@^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-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + 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" @@ -11572,87 +11724,46 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unified@^6.2.0: - 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" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" - -unified@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" - integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== - dependencies: - "@types/unist" "^2.0.0" - "@types/vfile" "^3.0.0" - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^3.0.0" - x-is-string "^0.1.0" +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -unified@^8.4.2: - version "8.4.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" - integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== +unified@^9.1.0, unified@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== dependencies: bail "^1.0.0" extend "^3.0.0" + is-buffer "^2.0.0" is-plain-obj "^2.0.0" trough "^1.0.0" vfile "^4.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -11660,22 +11771,15 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-builder@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" - integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg== - dependencies: - object-assign "^4.1.0" - -unist-util-generated@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" - integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== +unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -unist-util-is@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" - integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== unist-util-is@^3.0.0: version "3.0.0" @@ -11699,35 +11803,25 @@ unist-util-position@^3.0.0: resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -unist-util-remove-position@^1.0.0, unist-util-remove-position@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== +unist-util-remove-position@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz#4cd19e82c8e665f462b6acfcfd0a8353235a88e9" + integrity sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg== dependencies: - unist-util-visit "^1.1.0" + unist-util-visit "^2.0.0" -unist-util-remove@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" - integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== +unist-util-select@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-3.0.4.tgz#702c9dc1db1b2bbbfe27f796fce99e43f25edc60" + integrity sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw== dependencies: + css-selector-parser "^1.0.0" + not "^0.1.0" + nth-check "^2.0.0" unist-util-is "^4.0.0" + zwitch "^1.0.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" - nth-check "^1.0.1" - -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-stringify-position@^2.0.0, unist-util-stringify-position@^2.0.3: +unist-util-stringify-position@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== @@ -11754,14 +11848,14 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.1: +unist-util-visit@^1.1.3: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== dependencies: unist-util-visit-parents "^2.0.0" -unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: +unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -11770,22 +11864,12 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: unist-util-is "^4.0.0" unist-util-visit-parents "^3.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== - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unixify@1.0.0: +unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= @@ -11797,47 +11881,27 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +update-browserslist-db@^1.0.10, update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + escalade "^3.1.1" + picocolors "^1.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" -update-notifier@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + tslib "^2.0.3" uri-js@^4.2.2: version "4.4.0" @@ -11846,143 +11910,83 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -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-loader@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -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.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -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" - -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== - -utf-8-validate@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" - integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: - node-gyp-build "^4.2.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" 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.1, util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.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= +util@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + 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.4.0, uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^1.1.2: - 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== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -valid-url@1.0.9, valid-url@^1.0.9: +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: - 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" +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== + +value-or-promise@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== vary@^1, 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.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== +vfile-location@^3.1.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== -vfile-message@*, vfile-message@^2.0.0: +vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== @@ -11990,33 +11994,6 @@ vfile-message@*, vfile-message@^2.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -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" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" - integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== - dependencies: - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.0.tgz#26c78ac92eb70816b01d4565e003b7e65a2a0e01" @@ -12028,15 +12005,10 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vscode-languageserver-types@^3.15.1: - version "3.15.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" - integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== +vscode-languageserver-types@^3.17.1: + version "3.17.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64" + integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA== warning@^4.0.3: version "4.0.3" @@ -12045,112 +12017,55 @@ warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.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" +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== -web-namespaces@^1.0.0, web-namespaces@^1.1.2: +web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" +web-vitals@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c" + integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== -webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-hot-middleware@^2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" - integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== - dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -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== +webpack-dev-middleware@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e" + integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" + colorette "^1.2.2" + mem "^8.1.1" + memfs "^3.2.2" + mime-types "^2.1.30" + range-parser "^1.2.1" + schema-utils "^3.0.0" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12158,86 +12073,111 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack-stats-plugin@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.3.2.tgz#c06b185aa5dcc93b3f0c3a7891d24a111f849740" - integrity sha512-kxEtPQ6lBBik2qtJlsZkiaDMI6rGXe9w1kLH9ZCdt0wgCGVnbwwPlP60cMqG6tILNFYqXDxNt4+c4OIIuE+Fnw== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-virtual-modules@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" - integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== - dependencies: - debug "^3.0.0" - -webpack@^4.44.1: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-stats-plugin@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-1.1.1.tgz#11aabf6ad536fd2843eb2e11a58d3485dc111b3e" + integrity sha512-aWwE/YuO2W7VCOyWwyDJ7BRSYRYjeXat+X31YiasMM3FS6/4X9W4Mb9Q0g+jIdVgArr1Mb08sHBJKMT5M9+gVA== + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + +webpack@^5.81.0: + version "5.82.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.1.tgz#8f38c78e53467556e8a89054ebd3ef6e9f67dbab" + integrity sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + enhanced-resolve "^5.14.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.2" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= dependencies: - websocket-extensions ">=0.1.1" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" 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@^1.2.14, which@^1.2.9: +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -12258,36 +12198,16 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -with-open-file@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" - integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== - dependencies: - p-finally "^1.0.0" - p-try "^2.1.0" - pify "^4.0.1" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -12297,6 +12217,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -12312,43 +12241,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - 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.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.1.2, ws@^7.3.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -ws@~6.1.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" - integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== - dependencies: - async-limiter "~1.0.0" - -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= +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xdg-basedir@^4.0.0: version "4.0.0" @@ -12360,40 +12256,32 @@ xml@1.0.1: resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= -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= - -xss@^1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" - integrity sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== -xstate@^4.11.0, xstate@^4.13.0, xstate@^4.9.1: - version "4.13.0" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.13.0.tgz#0be22ceb8bae2bc6a025fab330fe44204d76771c" - integrity sha512-UnUJJzP2KTPqnmxIoD/ymXtpy/hehZnUlO6EXqWC/72XkPb15p9Oz/X4WhS3QE+by7NP+6b5bCi/GTGFzm5D+A== +xstate@^4.37.2: + version "4.37.2" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.37.2.tgz#c5f4c1d8062784238b91e2dfddca05f821cb4eac" + integrity sha512-Qm337O49CRTZ3PRyRuK6b+kvI+D3JGxXIZCTul+xEsyFCVkTFDt5jixaL1nBWcUBcaTQ9um/5CRGVItPi7fveg== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhash-wasm@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" + integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== + 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== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - -yallist@^2.0.0, yallist@^2.1.2: +yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= @@ -12408,26 +12296,29 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml-loader@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.6.0.tgz#fe1c48b9f4803dace55a59a1474e790ba6ab1b48" - integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow== +yaml-loader@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.8.0.tgz#c839325e3fdee082b3768b2a21fe34fde5d96f61" + integrity sha512-LjeKnTzVBKWiQBeE2L9ssl6WprqaUIxCSNs5tle8PaDydgu3wVFXTbMfsvF2MSErpy9TDVa092n4q6adYwJaWg== dependencies: - loader-utils "^1.4.0" - yaml "^1.8.3" + javascript-stringify "^2.0.1" + loader-utils "^2.0.0" + yaml "^2.0.0" -yaml@^1.7.2, yaml@^1.8.3: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yaml@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" + integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== + +yaml@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" + integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== yargs-parser@^18.1.2: version "18.1.3" @@ -12437,22 +12328,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - yargs@^15.3.1, yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -12470,42 +12345,28 @@ yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yoga-layout-prebuilt@^1.9.6: +yoga-layout-prebuilt@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6" integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g== dependencies: "@types/yoga-layout" "1.9.2" -yurnalist@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.1.2.tgz#0fce283f1c53ea25ec278e2d1ab58537323b63e0" - integrity sha512-y7bsTXqL+YMJQ2De2CBtSftJNLQnB7gWIzzKm10GDyC8Fg4Dsmd2LG5YhT8pudvUiuotic80WVXt/g1femRVQg== +yurnalist@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-2.1.0.tgz#44cf7ea5a33a8fab4968cc8c2970489f93760902" + integrity sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w== dependencies: - babel-runtime "^6.26.0" chalk "^2.4.2" - cli-table3 "^0.5.1" - debug "^4.1.1" - deep-equal "^1.1.0" - detect-indent "^6.0.0" inquirer "^7.0.0" - invariant "^2.2.0" - is-builtin-module "^3.0.0" is-ci "^2.0.0" - leven "^3.1.0" - loud-rejection "^2.2.0" - node-emoji "^1.10.0" - object-path "^0.11.2" read "^1.0.7" - rimraf "^3.0.0" - semver "^6.3.0" strip-ansi "^5.2.0" - strip-bom "^4.0.0" zwitch@^1.0.0: version "1.0.5"