From c9d98a4d1bb25b73252ed89eca9fa5fc52212c3a Mon Sep 17 00:00:00 2001 From: Lennart Date: Tue, 3 May 2022 13:45:37 +0100 Subject: [PATCH] feat(gatsby): Initial GraphQL Typegen Implementation (#35487) Co-authored-by: Michal Piechowiak --- e2e-tests/development-runtime/.gitignore | 2 + .../graphql-typegen/fragments-file.js | 5 + .../graphql-typegen/graphql-config.js | 20 + .../graphql-typegen/schema-file.js | 5 + .../integration/graphql-typegen/ts-types.js | 5 + .../development-runtime/gatsby-config.js | 1 + e2e-tests/development-runtime/package.json | 4 +- .../hogwarts/{FakeData.uuid}.js | 2 +- .../prefix-{FakeData.uuid}.js | 2 +- .../{FakeData.title}/{FakeData.uuid}.js | 2 +- .../{FakeData.uuid}-postfix.js | 2 +- .../collection-routing/{FakeData.uuid}.js | 2 +- packages/gatsby/package.json | 7 + .../gatsby/src/commands/develop-process.ts | 2 + packages/gatsby/src/query/query-watcher.ts | 2 +- packages/gatsby/src/redux/types.ts | 14 +- packages/gatsby/src/schema/print.ts | 14 +- .../gatsby/src/schema/types/built-in-types.ts | 10 + .../gatsby/src/services/graphql-typegen.ts | 59 ++ packages/gatsby/src/services/index.ts | 1 + packages/gatsby/src/services/initialize.ts | 6 + packages/gatsby/src/services/types.ts | 5 + .../src/state-machines/data-layer/index.ts | 27 +- .../src/state-machines/data-layer/services.ts | 2 + .../src/state-machines/data-layer/types.ts | 4 + .../src/state-machines/develop/index.ts | 61 +- .../src/state-machines/develop/services.ts | 2 + .../src/state-machines/query-running/index.ts | 24 +- .../state-machines/query-running/services.ts | 2 + .../src/state-machines/query-running/types.ts | 6 +- .../src/state-machines/waiting/index.ts | 4 +- packages/gatsby/src/utils/flags.ts | 10 + .../src/utils/graphql-typegen/file-writes.ts | 81 ++ .../src/utils/graphql-typegen/ts-codegen.ts | 145 ++++ .../gatsby/src/utils/graphql-typegen/utils.ts | 69 ++ yarn.lock | 798 +++++++++++++++++- 36 files changed, 1343 insertions(+), 64 deletions(-) create mode 100644 e2e-tests/development-runtime/cypress/integration/graphql-typegen/fragments-file.js create mode 100644 e2e-tests/development-runtime/cypress/integration/graphql-typegen/graphql-config.js create mode 100644 e2e-tests/development-runtime/cypress/integration/graphql-typegen/schema-file.js create mode 100644 e2e-tests/development-runtime/cypress/integration/graphql-typegen/ts-types.js create mode 100644 packages/gatsby/src/services/graphql-typegen.ts create mode 100644 packages/gatsby/src/utils/graphql-typegen/file-writes.ts create mode 100644 packages/gatsby/src/utils/graphql-typegen/ts-codegen.ts create mode 100644 packages/gatsby/src/utils/graphql-typegen/utils.ts diff --git a/e2e-tests/development-runtime/.gitignore b/e2e-tests/development-runtime/.gitignore index a17a058d51437..3cbf65216661d 100644 --- a/e2e-tests/development-runtime/.gitignore +++ b/e2e-tests/development-runtime/.gitignore @@ -74,3 +74,5 @@ cypress/fixtures cypress/videos __history__.json + +src/gatsby-types.d.ts diff --git a/e2e-tests/development-runtime/cypress/integration/graphql-typegen/fragments-file.js b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/fragments-file.js new file mode 100644 index 0000000000000..cb2cb03e3fa2c --- /dev/null +++ b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/fragments-file.js @@ -0,0 +1,5 @@ +describe('fragments.graphql', () => { + it('exists in .cache folder', () => { + cy.readFile('.cache/typegen/fragments.graphql') + }) +}) \ No newline at end of file diff --git a/e2e-tests/development-runtime/cypress/integration/graphql-typegen/graphql-config.js b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/graphql-config.js new file mode 100644 index 0000000000000..d292bca5b0762 --- /dev/null +++ b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/graphql-config.js @@ -0,0 +1,20 @@ +describe('graphql-config', () => { + it('exists in .cache folder with correct data', () => { + cy.readFile('.cache/typegen/graphql.config.json', 'utf-8').then((json) => { + expect(json).to.deep.equal({ + "schema": ".cache/typegen/schema.graphql", + "documents": [ + "src/**/**.{ts,js,tsx,jsx}", + ".cache/typegen/fragments.graphql" + ], + "extensions": { + "endpoints": { + "default": { + "url": "http://localhost:8000/___graphql" + } + } + } + }) + }) + }) +}) \ No newline at end of file diff --git a/e2e-tests/development-runtime/cypress/integration/graphql-typegen/schema-file.js b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/schema-file.js new file mode 100644 index 0000000000000..3f5bcab12b1d1 --- /dev/null +++ b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/schema-file.js @@ -0,0 +1,5 @@ +describe('schema.graphql', () => { + it('exists in .cache folder', () => { + cy.readFile('.cache/typegen/schema.graphql') + }) +}) \ No newline at end of file diff --git a/e2e-tests/development-runtime/cypress/integration/graphql-typegen/ts-types.js b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/ts-types.js new file mode 100644 index 0000000000000..6e9bd4c629808 --- /dev/null +++ b/e2e-tests/development-runtime/cypress/integration/graphql-typegen/ts-types.js @@ -0,0 +1,5 @@ +describe('gatsby-types.d.ts', () => { + it('exists in src folder', () => { + cy.readFile('src/gatsby-types.d.ts') + }) +}) \ No newline at end of file diff --git a/e2e-tests/development-runtime/gatsby-config.js b/e2e-tests/development-runtime/gatsby-config.js index d73f8df39ecbe..9cc6dc6df1249 100644 --- a/e2e-tests/development-runtime/gatsby-config.js +++ b/e2e-tests/development-runtime/gatsby-config.js @@ -8,6 +8,7 @@ module.exports = { }, flags: { DEV_SSR: false, + GRAPHQL_TYPEGEN: true, }, plugins: [ `gatsby-plugin-react-helmet`, diff --git a/e2e-tests/development-runtime/package.json b/e2e-tests/development-runtime/package.json index 0baa72c45b0f7..58c694775e411 100644 --- a/e2e-tests/development-runtime/package.json +++ b/e2e-tests/development-runtime/package.json @@ -25,7 +25,7 @@ "prop-types": "^15.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-helmet": "^5.2.1", + "react-helmet": "^6.1.0", "sass": "^1.32.8" }, "keywords": [ @@ -35,7 +35,7 @@ "license": "MIT", "scripts": { "build": "gatsby build", - "develop": "cross-env CYPRESS_SUPPORT=y ENABLE_GATSBY_REFRESH_ENDPOINT=true GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND=y gatsby develop", + "develop": "cross-env CYPRESS_SUPPORT=y ENABLE_GATSBY_REFRESH_ENDPOINT=true GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND=y GATSBY_GRAPHQL_TYPEGEN=y gatsby develop", "serve": "gatsby serve", "clean": "gatsby clean", "start": "npm run develop", diff --git a/e2e-tests/development-runtime/src/pages/collection-routing/hogwarts/{FakeData.uuid}.js b/e2e-tests/development-runtime/src/pages/collection-routing/hogwarts/{FakeData.uuid}.js index 6a90ee0b7bcbb..6fefc6c24bf75 100644 --- a/e2e-tests/development-runtime/src/pages/collection-routing/hogwarts/{FakeData.uuid}.js +++ b/e2e-tests/development-runtime/src/pages/collection-routing/hogwarts/{FakeData.uuid}.js @@ -15,7 +15,7 @@ export default function FakeDataHogwarts({ data: { fake }, pageContext: { uuid } } export const blogPostQuery = graphql` - query($id: String!) { + query FakeDataHogwarts($id: String!) { fake: fakeData(id: { eq: $id }) { fields { slug diff --git a/e2e-tests/development-runtime/src/pages/collection-routing/prefix-{FakeData.uuid}.js b/e2e-tests/development-runtime/src/pages/collection-routing/prefix-{FakeData.uuid}.js index 08dd270839199..1388f767d783a 100644 --- a/e2e-tests/development-runtime/src/pages/collection-routing/prefix-{FakeData.uuid}.js +++ b/e2e-tests/development-runtime/src/pages/collection-routing/prefix-{FakeData.uuid}.js @@ -15,7 +15,7 @@ export default function FakeDataPrefix({ data: { fake }, pageContext: { uuid } } } export const blogPostQuery = graphql` - query($id: String!) { + query FakeDataPrefix($id: String!) { fake: fakeData(id: { eq: $id }) { fields { slug diff --git a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.title}/{FakeData.uuid}.js b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.title}/{FakeData.uuid}.js index 8e29ffbcf0e8a..90faf5a7ac445 100644 --- a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.title}/{FakeData.uuid}.js +++ b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.title}/{FakeData.uuid}.js @@ -15,7 +15,7 @@ export default function FakeDataNested({ data: { fake }, pageContext: { uuid } } } export const blogPostQuery = graphql` - query($id: String!) { + query FakeDataNested($id: String!) { fake: fakeData(id: { eq: $id }) { fields { slug diff --git a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}-postfix.js b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}-postfix.js index 8569f91de2537..0ac95abf7edd6 100644 --- a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}-postfix.js +++ b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}-postfix.js @@ -15,7 +15,7 @@ export default function FakeDataPostfix({ data: { fake }, pageContext: { uuid } } export const blogPostQuery = graphql` - query($id: String!) { + query FakeDataPostfix($id: String!) { fake: fakeData(id: { eq: $id }) { fields { slug diff --git a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}.js b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}.js index 5e46aa0e110a2..47a148535c84f 100644 --- a/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}.js +++ b/e2e-tests/development-runtime/src/pages/collection-routing/{FakeData.uuid}.js @@ -15,7 +15,7 @@ export default function FakeData({ data: { fake }, pageContext: { uuid } }) { } export const blogPostQuery = graphql` - query($id: String!) { + query FakeData($id: String!) { fake: fakeData(id: { eq: $id }) { fields { slug diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index bbf3d831d2ca7..64c7e28234633 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -20,6 +20,13 @@ "@babel/types": "^7.15.4", "@gatsbyjs/reach-router": "^1.3.6", "@gatsbyjs/webpack-hot-middleware": "^2.25.2", + "@graphql-codegen/add": "^3.1.1", + "@graphql-codegen/core": "^2.5.1", + "@graphql-codegen/plugin-helpers": "^2.4.2", + "@graphql-codegen/typescript": "^2.4.8", + "@graphql-codegen/typescript-operations": "^2.3.5", + "@graphql-tools/code-file-loader": "^7.2.14", + "@graphql-tools/load": "^7.5.10", "@nodelib/fs.walk": "^1.2.8", "@parcel/core": "^2.3.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", diff --git a/packages/gatsby/src/commands/develop-process.ts b/packages/gatsby/src/commands/develop-process.ts index 42756be1dfb5a..697f372d34fdb 100644 --- a/packages/gatsby/src/commands/develop-process.ts +++ b/packages/gatsby/src/commands/develop-process.ts @@ -150,7 +150,9 @@ module.exports = async (program: IDevelopArgs): Promise => { program, parentSpan, app, + reporter, pendingQueryRuns: new Set([`/`]), + shouldRunInitialTypegen: true, }) const service = interpret(machine) diff --git a/packages/gatsby/src/query/query-watcher.ts b/packages/gatsby/src/query/query-watcher.ts index 215ad5bd464d4..10731f654a225 100644 --- a/packages/gatsby/src/query/query-watcher.ts +++ b/packages/gatsby/src/query/query-watcher.ts @@ -137,7 +137,7 @@ const watch = async (rootDir: string): Promise => { watcher = chokidar .watch( [slash(path.join(rootDir, `/src/**/*.{js,jsx,ts,tsx}`)), ...packagePaths], - { ignoreInitial: true } + { ignoreInitial: true, ignored: [`**/*.d.ts`] } ) .on(`change`, path => { emitter.emit(`SOURCE_FILE_CHANGED`, path) diff --git a/packages/gatsby/src/redux/types.ts b/packages/gatsby/src/redux/types.ts index 43b5e3c4ccc18..15b57c21aeda3 100644 --- a/packages/gatsby/src/redux/types.ts +++ b/packages/gatsby/src/redux/types.ts @@ -1,7 +1,12 @@ import type { TrailingSlash } from "gatsby-page-utils" import { IProgram } from "../commands/types" import { GraphQLFieldExtensionDefinition } from "../schema/extensions" -import { DocumentNode, GraphQLSchema, DefinitionNode } from "graphql" +import { + DocumentNode, + GraphQLSchema, + DefinitionNode, + SourceLocation, +} from "graphql" import { SchemaComposer } from "graphql-compose" import { IGatsbyCLIState } from "gatsby-cli/src/reporter/redux/types" import { ThunkAction } from "redux-thunk" @@ -153,12 +158,13 @@ export interface IDefinitionMeta { def: DefinitionNode filePath: string text: string - templateLoc: any - printedAst: string + templateLoc: SourceLocation + printedAst: string | null isHook: boolean isStaticQuery: boolean isFragment: boolean - hash: string + isConfigQuery: boolean + hash: number } type GatsbyNodes = Map diff --git a/packages/gatsby/src/schema/print.ts b/packages/gatsby/src/schema/print.ts index ef5499cd9398e..dc7eb4dc755fe 100644 --- a/packages/gatsby/src/schema/print.ts +++ b/packages/gatsby/src/schema/print.ts @@ -27,7 +27,7 @@ import { import { printBlockString } from "graphql/language/blockString" import { internalExtensionNames } from "./extensions" import _ from "lodash" -import { builtInScalarTypeNames } from "./types/built-in-types" +import { internalTypeNames } from "./types/built-in-types" export interface ISchemaPrintConfig { path?: string @@ -341,16 +341,6 @@ export const printTypeDefinitions = ({ ) return Promise.resolve() } - - const internalTypes = [ - ...builtInScalarTypeNames, - `Buffer`, - `Internal`, - `InternalInput`, - `Node`, - `NodeInput`, - `Query`, - ] const internalPlugins = [`internal-data-bridge`] const typesToExclude = exclude?.types || [] @@ -360,7 +350,7 @@ export const printTypeDefinitions = ({ const isInternalType = (tc: NamedTypeComposer): boolean => { const typeName = getName(tc) - if (internalTypes.includes(typeName)) { + if (internalTypeNames.includes(typeName)) { return true } diff --git a/packages/gatsby/src/schema/types/built-in-types.ts b/packages/gatsby/src/schema/types/built-in-types.ts index e358b1fb2da56..a1261bd4c75eb 100644 --- a/packages/gatsby/src/schema/types/built-in-types.ts +++ b/packages/gatsby/src/schema/types/built-in-types.ts @@ -157,3 +157,13 @@ export const builtInScalarTypeNames = [ `JSON`, `String`, ] + +export const internalTypeNames = [ + ...builtInScalarTypeNames, + `Buffer`, + `Internal`, + `InternalInput`, + `Node`, + `NodeInput`, + `Query`, +] diff --git a/packages/gatsby/src/services/graphql-typegen.ts b/packages/gatsby/src/services/graphql-typegen.ts new file mode 100644 index 0000000000000..61ffc157b0317 --- /dev/null +++ b/packages/gatsby/src/services/graphql-typegen.ts @@ -0,0 +1,59 @@ +import { EventObject } from "xstate" +import { IBuildContext } from "../internal" +import { IDataLayerContext, IQueryRunningContext } from "../state-machines" +import { + writeGraphQLFragments, + writeGraphQLSchema, +} from "../utils/graphql-typegen/file-writes" +import { writeTypeScriptTypes } from "../utils/graphql-typegen/ts-codegen" + +export async function graphQLTypegen( + { + program, + store, + parentSpan, + reporter, + }: IBuildContext | IQueryRunningContext | IDataLayerContext, + _: EventObject, + { + src: { compile }, + }: { + src: { + type: string + compile?: "all" | "schema" | "definitions" + } + } +): Promise { + // TypeScript requires null/undefined checks for these + // But this should never happen unless e.g. the state machine doesn't receive this information from a parent state machine + if (!program || !store || !compile || !reporter) { + throw new Error( + `Missing required params in graphQLTypegen. program: ${!!program}. store: ${!!store}. compile: ${!!compile}` + ) + } + const directory = program.directory + + const activity = reporter.activityTimer( + `Generating GraphQL and TypeScript types`, + { + parentSpan, + } + ) + activity.start() + + if (compile === `all` || compile === `schema`) { + await writeGraphQLSchema(directory, store) + if (compile === `schema`) { + reporter.verbose(`Re-Generate GraphQL Schema types`) + } + } + if (compile === `all` || compile === `definitions`) { + await writeGraphQLFragments(directory, store) + await writeTypeScriptTypes(directory, store) + if (compile === `definitions`) { + reporter.verbose(`Re-Generate TypeScript types & GraphQL fragments`) + } + } + + activity.end() +} diff --git a/packages/gatsby/src/services/index.ts b/packages/gatsby/src/services/index.ts index 7fe50baf03938..199cd54cc731a 100644 --- a/packages/gatsby/src/services/index.ts +++ b/packages/gatsby/src/services/index.ts @@ -15,5 +15,6 @@ export { runPageQueries } from "./run-page-queries" export { waitUntilAllJobsComplete } from "../utils/wait-until-jobs-complete" export { runMutationBatch } from "./run-mutation-batch" export { recompile } from "./recompile" +export { graphQLTypegen } from "./graphql-typegen" export * from "./types" diff --git a/packages/gatsby/src/services/initialize.ts b/packages/gatsby/src/services/initialize.ts index e8b737dcff6a1..4c065fe21639d 100644 --- a/packages/gatsby/src/services/initialize.ts +++ b/packages/gatsby/src/services/initialize.ts @@ -26,6 +26,7 @@ import type { InternalJob } from "../utils/jobs/types" import { enableNodeMutationsDetection } from "../utils/detect-node-mutations" import { compileGatsbyFiles } from "../utils/parcel/compile-gatsby-files" import { resolveModule } from "../utils/module-resolver" +import { writeGraphQLConfig } from "../utils/graphql-typegen/file-writes" interface IPluginResolution { resolve: string @@ -658,6 +659,11 @@ export async function initialize({ const workerPool = WorkerPool.create() + // This is only run during `gatsby develop` + if (process.env.GATSBY_GRAPHQL_TYPEGEN) { + writeGraphQLConfig(program) + } + return { store, workerPool, diff --git a/packages/gatsby/src/services/types.ts b/packages/gatsby/src/services/types.ts index 176a07ca2fcea..90f79f8f935f4 100644 --- a/packages/gatsby/src/services/types.ts +++ b/packages/gatsby/src/services/types.ts @@ -1,4 +1,5 @@ import { Span } from "opentracing" +import reporter from "gatsby-cli/lib/reporter" import { IProgram } from "../commands/types" import { Runner } from "../bootstrap/create-graphql-runner" import { GraphQLRunner } from "../query/graphql-runner" @@ -11,6 +12,8 @@ import { Compiler } from "webpack" import { WebsocketManager } from "../utils/websocket-manager" import { IWebpackWatchingPauseResume } from "../utils/start-server" +type Reporter = typeof reporter + export interface IGroupedQueryIds { pageQueryIds: Array staticQueryIds: Array @@ -23,6 +26,8 @@ export interface IMutationAction { } export interface IBuildContext { + reporter?: Reporter + shouldRunInitialTypegen?: boolean program: IProgram store?: Store parentSpan?: Span diff --git a/packages/gatsby/src/state-machines/data-layer/index.ts b/packages/gatsby/src/state-machines/data-layer/index.ts index 25c5f146f6d2a..55180215613b5 100644 --- a/packages/gatsby/src/state-machines/data-layer/index.ts +++ b/packages/gatsby/src/state-machines/data-layer/index.ts @@ -1,4 +1,4 @@ -import { Machine, StatesConfig, MachineOptions } from "xstate" +import { createMachine, StatesConfig, MachineOptions } from "xstate" import { dataLayerActions } from "./actions" import { IDataLayerContext } from "./types" import { dataLayerServices } from "./services" @@ -69,9 +69,26 @@ const recreatePagesStates: StatesConfig = { invoke: { id: `building-schema`, src: `buildSchema`, + onDone: [ + { + target: `graphQLTypegen`, + cond: (): boolean => !!process.env.GATSBY_GRAPHQL_TYPEGEN, + }, + { + target: `creatingPages`, + }, + ], + }, + exit: `assignGraphQLRunners`, + }, + graphQLTypegen: { + invoke: { + src: { + type: `graphQLTypegen`, + compile: `schema`, + }, onDone: { target: `creatingPages`, - actions: `assignGraphQLRunners`, }, }, }, @@ -115,7 +132,7 @@ const options: Partial> = { * Machine used during first run */ -export const initializeDataMachine = Machine( +export const initializeDataMachine = createMachine( { id: `initializeDataMachine`, context: {}, @@ -133,7 +150,7 @@ export const initializeDataMachine = Machine( * Machine used when we need to source nodes again */ -export const reloadDataMachine = Machine( +export const reloadDataMachine = createMachine( { id: `reloadDataMachine`, context: {}, @@ -151,7 +168,7 @@ export const reloadDataMachine = Machine( * Machine used when we need to re-create pages after a * node mutation outside of sourceNodes */ -export const recreatePagesMachine = Machine( +export const recreatePagesMachine = createMachine( { id: `recreatePagesMachine`, context: {}, diff --git a/packages/gatsby/src/state-machines/data-layer/services.ts b/packages/gatsby/src/state-machines/data-layer/services.ts index 3dd8e34ebf8b5..e1ca6009f2032 100644 --- a/packages/gatsby/src/state-machines/data-layer/services.ts +++ b/packages/gatsby/src/state-machines/data-layer/services.ts @@ -5,6 +5,7 @@ import { buildSchema, sourceNodes, writeOutRedirects as writeOutRedirectsAndWatch, + graphQLTypegen, } from "../../services" import { IDataLayerContext } from "./types" @@ -17,4 +18,5 @@ export const dataLayerServices: Record< createPages, buildSchema, writeOutRedirectsAndWatch, + graphQLTypegen, } diff --git a/packages/gatsby/src/state-machines/data-layer/types.ts b/packages/gatsby/src/state-machines/data-layer/types.ts index 415938604c0d5..dc42d161cebdb 100644 --- a/packages/gatsby/src/state-machines/data-layer/types.ts +++ b/packages/gatsby/src/state-machines/data-layer/types.ts @@ -1,4 +1,5 @@ import { Span } from "opentracing" +import reporter from "gatsby-cli/lib/reporter" import { IProgram } from "../../commands/types" import { Runner } from "../../bootstrap/create-graphql-runner" import { GraphQLRunner } from "../../query/graphql-runner" @@ -6,7 +7,10 @@ import { Store, AnyAction } from "redux" import { IGatsbyState } from "../../redux/types" import type { GatsbyWorkerPool } from "../../utils/worker/pool" +type Reporter = typeof reporter + export interface IDataLayerContext { + reporter?: Reporter deferNodeMutation?: boolean nodesMutatedDuringQueryRun?: boolean program?: IProgram diff --git a/packages/gatsby/src/state-machines/develop/index.ts b/packages/gatsby/src/state-machines/develop/index.ts index 12fede4540000..b9cb47dbe93a5 100644 --- a/packages/gatsby/src/state-machines/develop/index.ts +++ b/packages/gatsby/src/state-machines/develop/index.ts @@ -1,4 +1,10 @@ -import { MachineConfig, AnyEventObject, forwardTo, Machine } from "xstate" +import { + MachineConfig, + AnyEventObject, + forwardTo, + createMachine, + assign, +} from "xstate" import { IDataLayerContext } from "../data-layer/types" import { IQueryRunningContext } from "../query-running/types" import { IWaitingContext } from "../waiting/types" @@ -71,6 +77,8 @@ const developConfig: MachineConfig = { parentSpan, store, webhookBody, + program, + reporter, }: IBuildContext): IDataLayerContext => { return { parentSpan, @@ -78,6 +86,8 @@ const developConfig: MachineConfig = { webhookBody, shouldRunCreatePagesStatefully: true, deferNodeMutation: true, + program, + reporter, } }, onDone: { @@ -126,6 +136,8 @@ const developConfig: MachineConfig = { graphqlRunner, websocketManager, pendingQueryRuns, + shouldRunInitialTypegen, + reporter, }: IBuildContext): IQueryRunningContext => { return { program, @@ -135,6 +147,8 @@ const developConfig: MachineConfig = { graphqlRunner, websocketManager, pendingQueryRuns, + shouldRunInitialTypegen, + reporter, } }, onDone: [ @@ -185,6 +199,7 @@ const developConfig: MachineConfig = { target: `waiting`, }, }, + exit: assign({ shouldRunInitialTypegen: false }), }, // Recompile the JS bundle recompiling: { @@ -207,16 +222,33 @@ const developConfig: MachineConfig = { startingDevServers: { invoke: { src: `startWebpackServer`, + onDone: [ + { + target: `graphQLTypegen`, + cond: (): boolean => !!process.env.GATSBY_GRAPHQL_TYPEGEN, + }, + { + target: `waiting`, + }, + ], + onError: { + actions: `panic`, + target: `waiting`, + }, + }, + exit: [`assignServers`, `spawnWebpackListener`, `markSourceFilesClean`], + }, + graphQLTypegen: { + invoke: { + src: { + type: `graphQLTypegen`, + compile: `all`, + }, onDone: { target: `waiting`, - actions: [ - `assignServers`, - `spawnWebpackListener`, - `markSourceFilesClean`, - ], }, onError: { - actions: `panic`, + actions: `logError`, target: `waiting`, }, }, @@ -285,6 +317,8 @@ const developConfig: MachineConfig = { store, webhookBody, webhookSourcePluginName, + program, + reporter, }: IBuildContext): IDataLayerContext => { return { parentSpan, @@ -294,6 +328,8 @@ const developConfig: MachineConfig = { refresh: true, deferNodeMutation: true, shouldRunCreatePagesStatefully: false, + program, + reporter, } }, onDone: { @@ -321,12 +357,19 @@ const developConfig: MachineConfig = { invoke: { id: `recreate-pages`, src: `recreatePages`, - data: ({ parentSpan, store }: IBuildContext): IDataLayerContext => { + data: ({ + parentSpan, + store, + program, + reporter, + }: IBuildContext): IDataLayerContext => { return { parentSpan, store, + program, deferNodeMutation: true, shouldRunCreatePagesStatefully: false, + reporter, } }, onDone: { @@ -342,7 +385,7 @@ const developConfig: MachineConfig = { }, } -export const developMachine = Machine(developConfig, { +export const developMachine = createMachine(developConfig, { services: developServices, actions: buildActions, }) diff --git a/packages/gatsby/src/state-machines/develop/services.ts b/packages/gatsby/src/state-machines/develop/services.ts index 6d5211cec4dbf..eb2f5d7a5a280 100644 --- a/packages/gatsby/src/state-machines/develop/services.ts +++ b/packages/gatsby/src/state-machines/develop/services.ts @@ -4,6 +4,7 @@ import { initialize, recompile, postBootstrap, + graphQLTypegen, } from "../../services" import { initializeDataMachine, @@ -24,4 +25,5 @@ export const developServices: Record> = { startWebpackServer, recompile, postBootstrap, + graphQLTypegen, } diff --git a/packages/gatsby/src/state-machines/query-running/index.ts b/packages/gatsby/src/state-machines/query-running/index.ts index bf7b8ebaed139..513fcdcbaf0f2 100644 --- a/packages/gatsby/src/state-machines/query-running/index.ts +++ b/packages/gatsby/src/state-machines/query-running/index.ts @@ -1,4 +1,4 @@ -import { MachineConfig, Machine, assign } from "xstate" +import { MachineConfig, createMachine, assign } from "xstate" import { IQueryRunningContext } from "./types" import { queryRunningServices } from "./services" import { queryActions } from "./actions" @@ -20,13 +20,31 @@ export const queryStates: MachineConfig = { actions: `trackRequestedQueryRun`, }, }, - context: {}, states: { extractingQueries: { id: `extracting-queries`, invoke: { id: `extracting-queries`, src: `extractQueries`, + onDone: [ + { + target: `graphQLTypegen`, + cond: (ctx): boolean => + !!process.env.GATSBY_GRAPHQL_TYPEGEN && + !ctx.shouldRunInitialTypegen, + }, + { + target: `waitingPendingQueries`, + }, + ], + }, + }, + graphQLTypegen: { + invoke: { + src: { + type: `graphQLTypegen`, + compile: `definitions`, + }, onDone: { target: `waitingPendingQueries`, }, @@ -126,7 +144,7 @@ export const queryStates: MachineConfig = { }, }, } -export const queryRunningMachine = Machine(queryStates, { +export const queryRunningMachine = createMachine(queryStates, { actions: queryActions, services: queryRunningServices, }) diff --git a/packages/gatsby/src/state-machines/query-running/services.ts b/packages/gatsby/src/state-machines/query-running/services.ts index 499e6898aa143..7a5230abae330 100644 --- a/packages/gatsby/src/state-machines/query-running/services.ts +++ b/packages/gatsby/src/state-machines/query-running/services.ts @@ -7,6 +7,7 @@ import { runPageQueries, waitUntilAllJobsComplete, writeOutRedirects, + graphQLTypegen, } from "../../services" import { IQueryRunningContext } from "./types" @@ -21,4 +22,5 @@ export const queryRunningServices: Record< runPageQueries, waitUntilAllJobsComplete, writeOutRedirects, + graphQLTypegen, } diff --git a/packages/gatsby/src/state-machines/query-running/types.ts b/packages/gatsby/src/state-machines/query-running/types.ts index afe80530634f4..f79114084b756 100644 --- a/packages/gatsby/src/state-machines/query-running/types.ts +++ b/packages/gatsby/src/state-machines/query-running/types.ts @@ -1,4 +1,5 @@ import { Span } from "opentracing" +import reporter from "gatsby-cli/lib/reporter" import { IProgram } from "../../commands/types" import { Runner } from "../../bootstrap/create-graphql-runner" import { GraphQLRunner } from "../../query/graphql-runner" @@ -7,8 +8,11 @@ import { IGatsbyState } from "../../redux/types" import { IGroupedQueryIds } from "../../services/types" import { WebsocketManager } from "../../utils/websocket-manager" +type Reporter = typeof reporter + export interface IQueryRunningContext { - firstRun?: boolean + reporter?: Reporter + shouldRunInitialTypegen?: boolean program?: IProgram store?: Store parentSpan?: Span diff --git a/packages/gatsby/src/state-machines/waiting/index.ts b/packages/gatsby/src/state-machines/waiting/index.ts index 3b10883a51164..74a7d137370b2 100644 --- a/packages/gatsby/src/state-machines/waiting/index.ts +++ b/packages/gatsby/src/state-machines/waiting/index.ts @@ -1,4 +1,4 @@ -import { MachineConfig, assign, Machine } from "xstate" +import { MachineConfig, assign, createMachine } from "xstate" import { IWaitingContext } from "./types" import { waitingActions } from "./actions" import { waitingServices } from "./services" @@ -136,7 +136,7 @@ export const waitingStates: MachineConfig = { }, } -export const waitingMachine = Machine(waitingStates, { +export const waitingMachine = createMachine(waitingStates, { actions: waitingActions, services: waitingServices, }) diff --git a/packages/gatsby/src/utils/flags.ts b/packages/gatsby/src/utils/flags.ts index b700349955c15..fce3ec57b2f81 100644 --- a/packages/gatsby/src/utils/flags.ts +++ b/packages/gatsby/src/utils/flags.ts @@ -235,6 +235,16 @@ const activeFlags: Array = [ experimental: false, testFitness: (): fitnessEnum => true, }, + { + name: `GRAPHQL_TYPEGEN`, + env: `GATSBY_GRAPHQL_TYPEGEN`, + command: `develop`, + telemetryId: `GraphQLTypegen`, + description: `A built-in way for automatic TypeScript type generation and better GraphQL IntelliSense. See https://github.com/gatsbyjs/gatsby/discussions/35420 for more details.`, + experimental: true, + noCI: true, + testFitness: (): fitnessEnum => true, + }, ] export default activeFlags diff --git a/packages/gatsby/src/utils/graphql-typegen/file-writes.ts b/packages/gatsby/src/utils/graphql-typegen/file-writes.ts new file mode 100644 index 0000000000000..fa6455f468140 --- /dev/null +++ b/packages/gatsby/src/utils/graphql-typegen/file-writes.ts @@ -0,0 +1,81 @@ +import * as fs from "fs-extra" +import { join } from "path" +import { printSchema } from "graphql" +import { Store, AnyAction } from "redux" +import reporter from "gatsby-cli/lib/reporter" +import type { IGatsbyState, IStateProgram } from "../../redux/types" +import { stabilizeSchema } from "./utils" + +const OUTPUT_PATHS = { + schema: `.cache/typegen/schema.graphql`, + fragments: `.cache/typegen/fragments.graphql`, + config: `.cache/typegen/graphql.config.json`, +} + +export async function writeGraphQLConfig( + program: IStateProgram +): Promise { + try { + const base = program.directory + const configJSONString = JSON.stringify( + { + schema: OUTPUT_PATHS.schema, + documents: [`src/**/**.{ts,js,tsx,jsx}`, OUTPUT_PATHS.fragments], + extensions: { + endpoints: { + default: { + url: `${program.https ? `https://` : `http://`}${program.host}:${ + program.proxyPort + }/___graphql`, + }, + }, + }, + }, + null, + 2 + ) + + const outputPath = join(base, OUTPUT_PATHS.config) + + await fs.outputFile(outputPath, configJSONString) + reporter.verbose(`Successfully created graphql.config.json`) + } catch (err) { + reporter.error(`Failed to write graphql.config.json`, err) + } +} + +export async function writeGraphQLFragments( + directory: IStateProgram["directory"], + store: Store +): Promise { + try { + const currentDefinitions = store.getState().definitions + + const fragmentString = Array.from(currentDefinitions.entries()) + .filter(([_, def]) => def.isFragment) + .map(([_, def]) => `# ${def.filePath}\n${def.printedAst}`) + .join(`\n`) + + await fs.outputFile(join(directory, OUTPUT_PATHS.fragments), fragmentString) + reporter.verbose(`Wrote fragments.graphql file to .cache`) + } catch (err) { + reporter.error(`Failed to write fragments.graphql to .cache`, err) + } +} + +export async function writeGraphQLSchema( + directory: IStateProgram["directory"], + store: Store +): Promise { + try { + const { schema } = store.getState() + const schemaSDLString = printSchema(stabilizeSchema(schema), { + commentDescriptions: true, + }) + + await fs.outputFile(join(directory, OUTPUT_PATHS.schema), schemaSDLString) + reporter.verbose(`Successfully created schema.graphql`) + } catch (err) { + reporter.error(`Failed to write schema.graphql to .cache`, err) + } +} diff --git a/packages/gatsby/src/utils/graphql-typegen/ts-codegen.ts b/packages/gatsby/src/utils/graphql-typegen/ts-codegen.ts new file mode 100644 index 0000000000000..0800a4d3960a2 --- /dev/null +++ b/packages/gatsby/src/utils/graphql-typegen/ts-codegen.ts @@ -0,0 +1,145 @@ +import * as fs from "fs-extra" +import { join } from "path" +import { codegen } from "@graphql-codegen/core" +import { Kind } from "graphql" +import type { Types } from "@graphql-codegen/plugin-helpers" +import type { TypeScriptPluginConfig } from "@graphql-codegen/typescript/config" +import type { TypeScriptDocumentsPluginConfig } from "@graphql-codegen/typescript-operations/config" +import { AnyAction, Store } from "redux" +import { CodeFileLoader } from "@graphql-tools/code-file-loader" +import { loadDocuments } from "@graphql-tools/load" +import { IGatsbyState, IStateProgram } from "../../redux/types" +import { filterTargetDefinitions, stabilizeSchema } from "./utils" + +const OUTPUT_PATH = `src/gatsby-types.d.ts` +const NAMESPACE = `Queries` + +// These override the defaults from +// https://www.graphql-code-generator.com/plugins/typescript +const DEFAULT_TYPESCRIPT_CONFIG: Readonly = { + // Type is enough + avoidOptionals: true, + // Types come from the data layer so they can't be modified + immutableTypes: true, + // TODO: Better maybeValue + maybeValue: `T | undefined`, + // We'll want to re-export ourselves + noExport: true, + // Recommended for .d.ts files + enumsAsTypes: true, + scalars: { + Date: `string`, + JSON: `Record`, + }, + // import type {} syntax is nicer + useTypeImports: true, +} + +const DEFAULT_TYPESCRIPT_OPERATIONS_CONFIG: Readonly = + { + ...DEFAULT_TYPESCRIPT_CONFIG, + exportFragmentSpreadSubTypes: true, + } + +export async function writeTypeScriptTypes( + directory: IStateProgram["directory"], + store: Store +): Promise { + const pluginConfig: Pick = { + pluginMap: { + add: require(`@graphql-codegen/add`), + typescript: require(`@graphql-codegen/typescript`), + typescriptOperations: require(`@graphql-codegen/typescript-operations`), + }, + plugins: [ + { + add: { + placement: `prepend`, + content: `/* eslint-disable */\n`, + }, + }, + { + add: { + placement: `prepend`, + content: `/* THIS FILE IS AUTOGENERATED. CHANGES WILL BE LOST ON SUBSEQUENT RUNS. */\n`, + }, + }, + { + add: { + placement: `prepend`, + content: `declare namespace ${NAMESPACE} {\n`, + }, + }, + { + typescript: DEFAULT_TYPESCRIPT_CONFIG, + }, + { + typescriptOperations: DEFAULT_TYPESCRIPT_OPERATIONS_CONFIG, + }, + { + add: { + placement: `append`, + content: `\n}\n`, + }, + }, + ], + } + + const { schema, definitions } = store.getState() + const filename = join(directory, OUTPUT_PATH) + + let gatsbyNodeDocuments: Array = [] + // The loadDocuments + CodeFileLoader looks for graphql(``) functions inside the gatsby-node.ts files + // And then extracts the queries into documents + // The behavior can be modified: https://www.graphql-tools.com/docs/graphql-tag-pluck + try { + gatsbyNodeDocuments = await loadDocuments( + [`./gatsby-node.ts`, `./plugins/**/gatsby-node.ts`], + { + loaders: [new CodeFileLoader()], + } + ) + } catch (e) { + // These files might not exist, so just skip this + } + + const documents: Array = [ + ...filterTargetDefinitions(definitions).values(), + ].map(definitionMeta => { + return { + document: { + kind: Kind.DOCUMENT, + definitions: [definitionMeta.def], + }, + hash: definitionMeta.hash.toString(), + } + }) + + const isVerbose = process.env.gatsby_log_level === `verbose` + + const codegenOptions: Omit = { + // @ts-ignore - Incorrect types + schema: undefined, + schemaAst: stabilizeSchema(schema), + documents: documents.concat(gatsbyNodeDocuments), + filename, + config: { + namingConvention: { + typeNames: `keep`, + enumValues: `keep`, + transformUnderscore: false, + }, + addUnderscoreToArgsType: true, + skipTypename: true, + flattenGeneratedTypes: true, + }, + skipDocumentsValidation: !isVerbose, + } + + const result = await codegen({ + ...pluginConfig, + ...codegenOptions, + }) + + await fs.outputFile(filename, result) +} diff --git a/packages/gatsby/src/utils/graphql-typegen/utils.ts b/packages/gatsby/src/utils/graphql-typegen/utils.ts new file mode 100644 index 0000000000000..c9e8f5be32a6c --- /dev/null +++ b/packages/gatsby/src/utils/graphql-typegen/utils.ts @@ -0,0 +1,69 @@ +import slugify from "slugify" +import _ from "lodash" +import { lexicographicSortSchema } from "graphql" +import type { GraphQLSchema } from "graphql" +import { IDefinitionMeta } from "../../redux/types" + +type DefinitionName = string +type DefinitionMap = Map + +/** + * Makes the schema deterministic by sorting it (so on new saves the whole file doesn't change, only the change that was made). It can be used for e.g. tests when two schema diffs should be compared. + */ +export function stabilizeSchema(schema: GraphQLSchema): GraphQLSchema { + return lexicographicSortSchema(schema) +} + +/** + * Internally in Gatsby we use the function generateQueryName: + * packages/gatsby/src/query/file-parser.js + * This function re-implements this partially to guess if a query is unnamed + */ +function guessIfUnnnamedQuery({ + isStaticQuery, + name, + filePath, +}: IDefinitionMeta): boolean { + const queryType = isStaticQuery ? `static` : `page` + const generatedQueryName = slugify(filePath, { + replacement: ` `, + lower: false, + }) + const pattern = _.camelCase(`${queryType}-${generatedQueryName}`) + return name.startsWith(pattern) +} + +function guessIfThirdpartyDefinition({ filePath }: IDefinitionMeta): boolean { + return /(node_modules|\.yarn|\.cache)/.test(filePath) +} + +function isFragmentDefinition(def: IDefinitionMeta): boolean { + return def.isFragment +} + +function isThirdpartyFragment(def: IDefinitionMeta): boolean { + return isFragmentDefinition(def) && guessIfThirdpartyDefinition(def) +} + +/** + * We don't want third-party definitions/queries unless it's a fragment. + * We also don't want unnamed queries ending up in the TS types. + */ +function isTargetDefinition(def: IDefinitionMeta): boolean { + if (isThirdpartyFragment(def)) { + return true + } + return !(guessIfThirdpartyDefinition(def) || guessIfUnnnamedQuery(def)) +} + +export function filterTargetDefinitions( + defMap: DefinitionMap +): Map { + const defs: Array<[name: string, def: IDefinitionMeta]> = [] + for (const [name, def] of defMap) { + if (isTargetDefinition(def)) { + defs.push([name, def]) + } + } + return new Map(defs) +} diff --git a/yarn.lock b/yarn.lock index cd4258e367958..59f0b00f4e636 100644 --- a/yarn.lock +++ b/yarn.lock @@ -106,6 +106,13 @@ "@algolia/logger-common" "4.9.1" "@algolia/requester-common" "4.9.1" +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@apollo/client@^3.5.10": version "3.5.10" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.10.tgz#43463108a6e07ae602cca0afc420805a19339a71" @@ -186,6 +193,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + "@babel/core@7.10.5": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" @@ -273,6 +285,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.14.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" + integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + "@babel/eslint-parser@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.4.tgz#46385943726291fb3e8db99522c8099b15684387" @@ -307,6 +340,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.14.0", "@babel/generator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" + integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4", "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -332,6 +374,16 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4", "@babel/helper-create-class-features-plugin@^7.16.7": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" @@ -397,6 +449,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -425,6 +485,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" @@ -439,6 +506,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/helper-optimise-call-expression@^7.15.4", "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -490,6 +571,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": 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" @@ -497,6 +585,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-split-export-declaration@^7.15.4", "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -546,6 +641,15 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" @@ -577,6 +681,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" + integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" @@ -603,6 +712,14 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.0", "@babel/plugin-proposal-class-properties@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" @@ -728,6 +845,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + dependencies: + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" @@ -812,7 +940,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": 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== @@ -861,6 +989,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" + integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@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" @@ -910,6 +1045,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.14.0", "@babel/plugin-syntax-jsx@^7.14.5", "@babel/plugin-syntax-jsx@^7.2.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" @@ -938,7 +1080,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.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== @@ -994,6 +1136,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-arrow-functions@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" @@ -1010,6 +1159,13 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-remap-async-to-generator" "^7.14.5" +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-block-scoped-functions@^7.14.5": 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" @@ -1017,6 +1173,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-block-scoping@^7.15.3": version "7.15.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" @@ -1024,6 +1187,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-classes@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + "@babel/plugin-transform-classes@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" @@ -1037,6 +1214,13 @@ "@babel/helper-split-export-declaration" "^7.15.4" globals "^11.1.0" +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-computed-properties@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" @@ -1044,6 +1228,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-destructuring@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" @@ -1074,6 +1265,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" + integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-flow" "^7.16.7" + "@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.14.5": 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" @@ -1082,6 +1281,13 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-flow" "^7.14.5" +"@babel/plugin-transform-for-of@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-for-of@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" @@ -1089,6 +1295,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-function-name@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-function-name@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" @@ -1097,6 +1312,13 @@ "@babel/helper-function-name" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" @@ -1104,6 +1326,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-member-expression-literals@^7.14.5": 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" @@ -1120,6 +1349,16 @@ "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== + dependencies: + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" @@ -1163,6 +1402,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-object-super@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-transform-object-super@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" @@ -1171,6 +1418,13 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-replace-supers" "^7.14.5" +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.5", "@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" @@ -1178,6 +1432,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-property-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" @@ -1185,6 +1446,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-react-display-name@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz#baa92d15c4570411301a85a74c13534873885b65" @@ -1199,6 +1467,17 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.14.5" +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.14.5": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" @@ -1244,6 +1523,13 @@ babel-plugin-polyfill-regenerator "^0.2.2" semver "^6.3.0" +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-shorthand-properties@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" @@ -1251,6 +1537,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-spread@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-transform-spread@^7.14.6": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" @@ -1266,6 +1560,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-template-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" @@ -1456,6 +1757,13 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" +"@babel/runtime@^7.0.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.4", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" @@ -1488,7 +1796,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.7", "@babel/types@^7.14.5", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" + integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.9" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.7", "@babel/types@^7.14.5", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== @@ -1717,6 +2041,83 @@ meros "^1.1.2" subscriptions-transport-ws "^0.9.18" +"@graphql-codegen/add@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-3.1.1.tgz#e161ff1c7cdf74ce20b32f75f640f9592b9a18ca" + integrity sha512-XkVwcqosa0CVBlL1HaQT0gp+EUfhuQE3LzrEpzMQLwchxaj/NPVYtOJL6MUHaYDsHzLqxWrufjfbeB3y2NQgRw== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.3.2" + tslib "~2.3.0" + +"@graphql-codegen/core@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" + integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-tools/schema" "^8.1.2" + "@graphql-tools/utils" "^8.1.1" + tslib "~2.3.0" + +"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1", "@graphql-codegen/plugin-helpers@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.2.tgz#e4f6b74dddcf8a9974fef5ce48562ae0980f9fed" + integrity sha512-LJNvwAPv/sKtI3RnRDm+nPD+JeOfOuSOS4FFIpQCMUCyMnFcchV/CPTTv7tT12fLUpEg6XjuFfDBvOwndti30Q== + dependencies: + "@graphql-tools/utils" "^8.5.2" + change-case-all "1.0.14" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.3.0" + +"@graphql-codegen/schema-ast@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.4.1.tgz#ad742b53e32f7a2fbff8ea8a91ba7e617e6ef236" + integrity sha512-bIWlKk/ShoVJfghA4Rt1OWnd34/dQmZM/vAe6fu6QKyOh44aAdqPtYQ2dbTyFXoknmu504etKJGEDllYNUJRfg== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-tools/utils" "^8.1.1" + tslib "~2.3.0" + +"@graphql-codegen/typescript-operations@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.3.5.tgz#1e77b96da0949f9e0ecd6054eb28b582936e35e8" + integrity sha512-GCZQW+O+cIF62ioPkQMoSJGzjJhtr7ttZGJOAoN/Q/oolG8ph9jNFePKO67tSQ/POAs5HLqfat4kAlCK8OPV3Q== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/typescript" "^2.4.8" + "@graphql-codegen/visitor-plugin-common" "2.7.4" + auto-bind "~4.0.0" + tslib "~2.3.0" + +"@graphql-codegen/typescript@^2.4.8": + version "2.4.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.4.8.tgz#e8110baba9713cde72d57a5c95aa27400363ed9a" + integrity sha512-tVsHIkuyenBany7c5IMU1yi4S1er2hgyXJGNY7PcyhpJMx0eChmbqz1VTiZxDEwi8mDBS2mn3TaSJMh6xuJM5g== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/schema-ast" "^2.4.1" + "@graphql-codegen/visitor-plugin-common" "2.7.4" + auto-bind "~4.0.0" + tslib "~2.3.0" + +"@graphql-codegen/visitor-plugin-common@2.7.4": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.4.tgz#fbc8aec9df0035b8f29fa64a6356cbb02062da5d" + integrity sha512-aaDoEudDD+B7DK/UwDSL2Fzej75N9hNJ3N8FQuTIeDyw6FNGWUxmkjVBLQGlzfnYfK8IYkdfYkrPn3Skq0pVxA== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + "@graphql-tools/batch-execute@8.4.6": version "8.4.6" resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.4.6.tgz#6033cbf0b7d30c901ae4a1a7de7501aedf5a6a10" @@ -1727,6 +2128,17 @@ tslib "~2.3.0" value-or-promise "1.0.11" +"@graphql-tools/code-file-loader@^7.2.14": + version "7.2.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.2.14.tgz#b43ce0c682040b3969f1f785b18fc33c79341084" + integrity sha512-ajNET8XO2e3SgIXXAskc/Dv/M/+Z35TgXopf3axt1e9TboG/KkQxIE0Mi84XqCYDMtF5UqmIWqQ2gVdwFPfjiw== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.2.6" + "@graphql-tools/utils" "8.6.9" + globby "^11.0.3" + tslib "~2.3.0" + unixify "^1.0.0" + "@graphql-tools/delegate@8.7.7", "@graphql-tools/delegate@^8.4.2": version "8.7.7" resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.7.7.tgz#8626e5734eff1643f99b10202bb324c8a4a8c210" @@ -1762,6 +2174,17 @@ fs-extra "9.0.1" tslib "~2.0.1" +"@graphql-tools/graphql-tag-pluck@7.2.6": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.2.6.tgz#0bddc23b354c2912e17b15209ad1e7117f9fa4da" + integrity sha512-TWF+0MTdWIfETYt2Pm1+jg608aIavgGkjJuN3f2Z4iWhPNvupHkHexAzV4GNkrQa0yXzIl6bQF8uNRjz4v31SA== + dependencies: + "@babel/parser" "^7.16.8" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + "@graphql-tools/utils" "8.6.9" + tslib "~2.3.0" + "@graphql-tools/import@^6.2.4": version "6.2.4" resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.2.4.tgz#0547f6d4754a924e80439d6af013577cdb617194" @@ -1807,6 +2230,16 @@ unixify "1.0.0" valid-url "1.0.9" +"@graphql-tools/load@^7.5.10": + version "7.5.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.5.10.tgz#6e53dd62ec081b3a2966ab9d93e8b991f06501b3" + integrity sha512-I9b9Md1DdB7Du//+x8CtBAKUW21jyuENCPssvlBjHZjvmx5cIGrTftqwGzuDBgR0Zm72tkmat/FTu6/SQPiyeQ== + dependencies: + "@graphql-tools/schema" "8.3.10" + "@graphql-tools/utils" "8.6.9" + p-limit "3.1.0" + tslib "~2.3.0" + "@graphql-tools/merge@8.2.10": version "8.2.10" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.10.tgz#fe2fe5ad33dc2d1b0af8751c0c08d18bb6bb6d88" @@ -1815,6 +2248,14 @@ "@graphql-tools/utils" "8.6.9" tslib "~2.3.0" +"@graphql-tools/merge@8.2.9": + version "8.2.9" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.9.tgz#f4bb6ca58d0d89dbfa4fded6a1457bb359de1450" + integrity sha512-mHRrqMc1NTL6MALBQK1DmAzSxJIKoaCaW7ZCk5bRGzVj/MNQz3OsqlDb/+t9/ONT0V+WI/uxBFsrLMwa4p6L7A== + dependencies: + "@graphql-tools/utils" "8.6.8" + tslib "~2.3.0" + "@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.4": version "6.2.4" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.4.tgz#5b3b68083d55a38a7f3caac6e0adc46f428c2a3b" @@ -1824,6 +2265,22 @@ "@graphql-tools/utils" "^6.2.4" tslib "~2.0.1" +"@graphql-tools/optimize@^1.0.1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.2.0.tgz#292d0a269f95d04bc6d822c034569bb7e591fb26" + integrity sha512-l0PTqgHeorQdeOizUor6RB49eOAng9+abSxiC5/aHRo6hMmXVaqv5eqndlmxCpx9BkgNb3URQbK+ZZHVktkP/g== + dependencies: + tslib "~2.3.0" + +"@graphql-tools/relay-operation-optimizer@^6.3.7": + version "6.4.8" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.8.tgz#b8e7fa3507d3a75546e96d66a0e32e2276a4efd6" + integrity sha512-20W1uTVHfDrDM3FIVcLuLmY6gkYUBCvqvuPU5WFth+BumacW09bNYk3+MP5fTQYhscZc0+nu4QjxmX0WGs/VAQ== + dependencies: + "@graphql-tools/utils" "8.6.8" + relay-compiler "12.0.0" + tslib "~2.3.0" + "@graphql-tools/schema@8.3.10", "@graphql-tools/schema@^8.3.1": version "8.3.10" resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.3.10.tgz#c3e373e6ad854f533fc7e55859dd8f9e81de30dd" @@ -1842,6 +2299,16 @@ "@graphql-tools/utils" "^6.2.4" tslib "~2.0.1" +"@graphql-tools/schema@^8.1.2": + version "8.3.9" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.3.9.tgz#2b83464a0ef083c92d7076da0fa5939f2f5a1e34" + integrity sha512-9YFCzn0sYAGTWhZrVYY/neK5cie3s0dNm7Qq38tkhOh2ME5BtHW/8ZIq+UrLGKsBYwa+Qjb/UojGWUm2yG/z6Q== + dependencies: + "@graphql-tools/merge" "8.2.9" + "@graphql-tools/utils" "8.6.8" + tslib "~2.3.0" + value-or-promise "1.0.11" + "@graphql-tools/url-loader@^6.0.0": version "6.3.0" resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.3.0.tgz#75b82bdf0983d3e389c75948a7abff20fa45a630" @@ -1857,6 +2324,13 @@ valid-url "1.0.9" websocket "1.0.32" +"@graphql-tools/utils@8.6.8", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2": + version "8.6.8" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.8.tgz#a0824ed5810f66c504df4e97c5900786ac0c260e" + integrity sha512-EdUUeKi/wp/UvuknyINpQ/uXDqTM3qxPPPDIq5RpfW0zQOeCvbZcx8xHoMox0TYKvKtg3zoB7aprUtoW+iZLxw== + dependencies: + tslib "~2.3.0" + "@graphql-tools/utils@8.6.9", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.9": version "8.6.9" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.9.tgz#fe1b81df29c9418b41b7a1ffe731710b93d3a1fe" @@ -2518,6 +2992,24 @@ "@babel/runtime" "^7.7.2" regenerator-runtime "^0.13.3" +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@lerna/add@3.21.0": version "3.21.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" @@ -6002,7 +6494,7 @@ atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -auto-bind@4.0.0: +auto-bind@4.0.0, 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== @@ -6273,6 +6765,11 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + babel-plugin-transform-async-to-promises@^0.8.15: version "0.8.15" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.15.tgz#13b6d8ef13676b4e3c576d3600b85344bb1ba346" @@ -6315,6 +6812,39 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" +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-jest@^27.4.0: version "27.4.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" @@ -6931,7 +7461,7 @@ camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" -camel-case@^4.1.1: +camel-case@^4.1.1, 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== @@ -7009,6 +7539,15 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== +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" + capitalize@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-2.0.3.tgz#ccfeb1046d2a054eb30f34af907a70c3e90f3b73" @@ -7082,6 +7621,22 @@ chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: 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@^3.0.1, change-case@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" @@ -7106,6 +7661,24 @@ change-case@^3.0.1, change-case@^3.1.0: upper-case "^1.1.1" upper-case-first "^1.1.0" +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" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -7609,7 +8182,7 @@ common-path-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" -common-tags@^1.8.0, common-tags@^1.8.2: +common-tags@1.8.2, common-tags@^1.8.0, 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== @@ -7754,6 +8327,15 @@ constant-case@^2.0.0: snake-case "^2.1.0" upper-case "^1.1.1" +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" @@ -8260,6 +8842,13 @@ cross-fetch@3.0.6: dependencies: node-fetch "2.6.1" +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -9090,6 +9679,11 @@ depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +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== + deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -10041,7 +10635,7 @@ eslint-plugin-graphql@^4.0.0: lodash.flatten "^4.4.0" lodash.without "^4.4.0" -eslint-plugin-import@^2.25.4, eslint-plugin-import@^2.26.0: +eslint-plugin-import@^2.26.0: version "2.26.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -10722,6 +11316,24 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + 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.30" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -11990,7 +12602,7 @@ graphql-request@^1.8.2: dependencies: cross-fetch "2.2.2" -graphql-tag@^2.12.3: +graphql-tag@^2.11.0, graphql-tag@^2.12.3: 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== @@ -12353,6 +12965,14 @@ header-case@^1.0.0: no-case "^2.2.0" upper-case "^1.1.3" +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: + capital-case "^1.0.4" + tslib "^2.0.3" + headers-polyfill@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-3.0.4.tgz#cd70c815a441dd882372fcd6eda212ce997c9b18" @@ -12847,6 +13467,11 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + import-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" @@ -12876,7 +13501,7 @@ import-from@3.0.0, import-from@^3.0.0: dependencies: resolve-from "^5.0.0" -import-from@^4.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== @@ -13431,6 +14056,13 @@ is-lower-case@^1.1.0: dependencies: lower-case "^1.1.0" +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-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -13687,6 +14319,13 @@ is-upper-case@^1.1.0: dependencies: upper-case "^1.1.0" +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-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -14609,6 +15248,11 @@ json5@^2.0.0, json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.0: dependencies: minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -15499,7 +16143,7 @@ lodash.without@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@4.17.21, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -15546,6 +16190,13 @@ lower-case-first@^1.0.0: dependencies: lower-case "^1.1.2" +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: + tslib "^2.0.3" + lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -17035,7 +17686,7 @@ node-fetch@2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.6, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.6, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -17712,6 +18363,13 @@ p-limit@3.0.2: dependencies: p-try "^2.0.0" +p-limit@3.1.0, p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -17725,13 +18383,6 @@ p-limit@^2.0.0, p-limit@^2.1.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -17886,7 +18537,7 @@ param-case@^2.1.0, param-case@^2.1.1: dependencies: no-case "^2.2.0" -param-case@^3.0.3: +param-case@^3.0.3, 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== @@ -18132,6 +18783,14 @@ path-case@^2.1.0: dependencies: no-case "^2.2.0" +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: + dot-case "^3.0.4" + tslib "^2.0.3" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -20166,6 +20825,38 @@ relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" +relay-compiler@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-12.0.0.tgz#9f292d483fb871976018704138423a96c8a45439" + integrity sha512-SWqeSQZ+AMU/Cr7iZsHi1e78Z7oh00I5SvR092iCJq79aupqJ6Ds+I1Pz/Vzo5uY5PY0jvC4rBJXzlIN5g9boQ== + 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" + +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/runtime" "^7.0.0" + fbjs "^3.0.0" + invariant "^2.2.4" + remark-cli@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-9.0.0.tgz#6f7951e7a72217535f2e32b7a6d3f638fe182f86" @@ -21924,6 +22615,15 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" +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@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -21984,6 +22684,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +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.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -22087,6 +22792,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.5, resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" @@ -22177,6 +22887,14 @@ snake-case@^2.1.0: dependencies: no-case "^2.2.0" +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: + dot-case "^3.0.4" + tslib "^2.0.3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -22418,6 +23136,13 @@ split@^1.0.0: dependencies: through "2" +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: + tslib "^2.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" @@ -23221,6 +23946,13 @@ swap-case@^1.1.0: lower-case "^1.1.1" upper-case "^1.1.1" +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: + tslib "^2.0.3" + symbol-observable@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -23547,6 +24279,13 @@ title-case@^2.1.0: no-case "^2.2.0" upper-case "^1.0.3" +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" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -23971,6 +24710,11 @@ typography@^0.16.21: object-assign "^4.1.0" typography-normalize "^0.16.19" +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -24459,7 +25203,7 @@ unix-crypt-td-js@1.1.4: resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== -unixify@1.0.0: +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= @@ -24536,10 +25280,24 @@ upper-case-first@^1.1.0, upper-case-first@^1.1.2: dependencies: upper-case "^1.1.1" +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" + upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" +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: + tslib "^2.0.3" + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"