diff --git a/change/@graphitation-graphql-eslint-rules-9975efa4-c302-4e4a-af26-746c10e5cbea.json b/change/@graphitation-graphql-eslint-rules-9975efa4-c302-4e4a-af26-746c10e5cbea.json new file mode 100644 index 000000000..f28afc7fb --- /dev/null +++ b/change/@graphitation-graphql-eslint-rules-9975efa4-c302-4e4a-af26-746c10e5cbea.json @@ -0,0 +1,7 @@ +{ + "type": "minor", + "comment": "add strict non-nullable-variables rule", + "packageName": "@graphitation/graphql-eslint-rules", + "email": "dsamsonov@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/package.json b/package.json index ddeb6b684..4e181f0ba 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,7 @@ "lage": "^2.7.1", "patch-package": "^6.4.7", "prettier": "^2.8.7", - "ts-jest": "^29.0.5", - "@graphql-eslint/eslint-plugin": "^3.7.0" + "ts-jest": "^29.0.5" }, "resolutions": { "cross-fetch": "^3.1.5", diff --git a/packages/graphql-eslint-rules/package.json b/packages/graphql-eslint-rules/package.json index 62e66b46a..a091a1109 100644 --- a/packages/graphql-eslint-rules/package.json +++ b/packages/graphql-eslint-rules/package.json @@ -16,20 +16,20 @@ "just": "monorepo-scripts" }, "devDependencies": { - "@graphql-eslint/eslint-plugin": "^3.7.0", + "@graphql-eslint/eslint-plugin": "^3.20.0", "@types/jest": "^26.0.22", "@types/lodash.camelcase": "^4.3.6", "@types/lodash.kebabcase": "^4.1.6", - "@typescript-eslint/utils": "^5.10.1", "graphql": "^15.0.0", + "json-schema-to-ts": "2.9.1", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "monorepo-scripts": "*" }, "peerDependencies": { "graphql": "^15.0.0", - "lodash.kebabcase": "^4.1.1", - "lodash.camelcase": "^4.3.0" + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1" }, "publishConfig": { "main": "./lib/index", diff --git a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/ban-directives.test.ts.snap b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/ban-directives.test.ts.snap index 7de07f4bf..d2f4c6a63 100644 --- a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/ban-directives.test.ts.snap +++ b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/ban-directives.test.ts.snap @@ -1,28 +1,57 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[` 1`] = ` -" 1 | - 2 | query myOperation { -> 3 | user @client - | ^ Use of directive @client is prohibited - 4 | description @foobar - 5 | }" -`; +exports[`Invalid #1 1`] = ` +"#### ⌨️ Code + + 1 | query myOperation { + 2 | user @client + 3 | description @foobar + 4 | } + +#### ⚙️ Options -exports[` 2`] = ` -" 1 | - 2 | query myOperation { -> 3 | user @client - | ^ Use of directive @client is prohibited - 4 | description @foobar - 5 | }" + { + "bannedDirectives": [ + "client" + ] + } + +#### ❌ Error + + 1 | query myOperation { + > 2 | user @client + | ^ Use of directive @client is prohibited + 3 | description @foobar" `; -exports[` 3`] = ` -" 1 | - 2 | query myOperation { - 3 | user @client -> 4 | description @foobar - | ^ Use of directive @foobar is prohibited - 5 | }" +exports[`Invalid #2 1`] = ` +"#### ⌨️ Code + + 1 | query myOperation { + 2 | user @client + 3 | description @foobar + 4 | } + +#### ⚙️ Options + + { + "bannedDirectives": [ + "client", + "foobar" + ] + } + +#### ❌ Error 1/2 + + 1 | query myOperation { + > 2 | user @client + | ^ Use of directive @client is prohibited + 3 | description @foobar + +#### ❌ Error 2/2 + + 2 | user @client + > 3 | description @foobar + | ^ Use of directive @foobar is prohibited + 4 | }" `; diff --git a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/fragment-naming-conventions.test.ts.snap b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/fragment-naming-conventions.test.ts.snap index 7064aa103..44418838c 100644 --- a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/fragment-naming-conventions.test.ts.snap +++ b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/fragment-naming-conventions.test.ts.snap @@ -1,31 +1,83 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[` 1`] = ` -"> 1 | fragment graphql_eslint_rules_user_fragment on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore" +exports[`Invalid #1 1`] = ` +"#### ⌨️ Code + + 1 | fragment graphql_eslint_rules_user_fragment on User { id name } + +#### ❌ Error + + > 1 | fragment graphql_eslint_rules_user_fragment on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore + +#### 🔧 Autofix output + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name }" `; -exports[` 2`] = ` -"> 1 | fragment GraphqlEslintRulesUserFragment_ on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore" +exports[`Invalid #2 1`] = ` +"#### ⌨️ Code + + 1 | fragment GraphqlEslintRulesUserFragment_ on User { id name } + +#### ❌ Error + + > 1 | fragment GraphqlEslintRulesUserFragment_ on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore + +#### 🔧 Autofix output + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name }" `; -exports[` 3`] = ` -"> 1 | fragment GraphqlEslintRulesUser on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore" +exports[`Invalid #3 1`] = ` +"#### ⌨️ Code + + 1 | fragment GraphqlEslintRulesUser on User { id name } + +#### ❌ Error + + > 1 | fragment GraphqlEslintRulesUser on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore + +#### 🔧 Autofix output + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name }" `; -exports[` 4`] = ` -"> 1 | fragment UserFragment on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore" +exports[`Invalid #4 1`] = ` +"#### ⌨️ Code + + 1 | fragment UserFragment on User { id name } + +#### ❌ Error + + > 1 | fragment UserFragment on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fragment should follow the naming conventions, the expected name is GraphqlEslintRulesUserFragment OR GraphqlEslintRulesUserFragment_optionalSuffix It's possible to chain suffixes using underscore + +#### 🔧 Autofix output + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name }" `; -exports[` 5`] = ` -"> 1 | fragment GraphqlEslintRulesUserFragment on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should start with the package directory name: "graphql-eslint-rules"" +exports[`Invalid #5 1`] = ` +"#### ⌨️ Code + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name } + +#### ❌ Error + + > 1 | fragment GraphqlEslintRulesUserFragment on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should start with the package directory name: "graphql-eslint-rules"" `; -exports[` 6`] = ` -"> 1 | fragment GraphqlEslintRulesUserFragment on User { id name } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should end with the operation name (query/mutation/subscription) e.g. foo-query.graphql OR if the file contains ONLY fragments the suffix can be "fragment" e.g foo-fragment.graphql" +exports[`Invalid #6 1`] = ` +"#### ⌨️ Code + + 1 | fragment GraphqlEslintRulesUserFragment on User { id name } + +#### ❌ Error + + > 1 | fragment GraphqlEslintRulesUserFragment on User { id name } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should end with the operation name (query/mutation/subscription) e.g. foo-query.graphql OR if the file contains ONLY fragments the suffix can be "fragment" e.g foo-fragment.graphql" `; diff --git a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/missing-apollo-key-fields.test.ts.snap b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/missing-apollo-key-fields.test.ts.snap index 8d9b3c09f..f791245dd 100644 --- a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/missing-apollo-key-fields.test.ts.snap +++ b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/missing-apollo-key-fields.test.ts.snap @@ -1,11 +1,57 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[` 1`] = ` -"> 1 | query { hasId { name } } - | ^^^^^^^ The key-field "id" must be selected for proper Apollo Client store denormalisation purposes." +exports[`Invalid #1 1`] = ` +"#### ⌨️ Code + + 1 | query { hasId { name } } + +#### ⚙️ Options + + { + "typePolicies": { + "KeyFieldType": { + "keyFields": [ + "objectId" + ] + } + } + } + +#### ❌ Error + + > 1 | query { hasId { name } } + | ^^^^^^^ The key-field "id" must be selected for proper Apollo Client store denormalisation purposes. + +#### 🔧 Autofix output + + 1 | query { hasId { id + 2 | name } }" `; -exports[` 2`] = ` -"> 1 | query { keyField { id name } } - | ^^^^^^^^^^ The key-field "objectId" must be selected for proper Apollo Client store denormalisation purposes." +exports[`Invalid #2 1`] = ` +"#### ⌨️ Code + + 1 | query { keyField { id name } } + +#### ⚙️ Options + + { + "typePolicies": { + "KeyFieldType": { + "keyFields": [ + "objectId" + ] + } + } + } + +#### ❌ Error + + > 1 | query { keyField { id name } } + | ^^^^^^^^^^ The key-field "objectId" must be selected for proper Apollo Client store denormalisation purposes. + +#### 🔧 Autofix output + + 1 | query { keyField { objectId + 2 | id name } }" `; diff --git a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/operation-naming-conventions.test.ts.snap b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/operation-naming-conventions.test.ts.snap index 5af6f2df7..60e4d0ec2 100644 --- a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/operation-naming-conventions.test.ts.snap +++ b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/operation-naming-conventions.test.ts.snap @@ -1,16 +1,38 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[` 1`] = ` -"> 1 | query wrongName { user { id name } } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Operation should follow the naming conventions, the expected name is GraphqlEslintRulesUserQuery" +exports[`Invalid #1 1`] = ` +"#### ⌨️ Code + + 1 | query wrongName { user { id name } } + +#### ❌ Error + + > 1 | query wrongName { user { id name } } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Operation should follow the naming conventions, the expected name is GraphqlEslintRulesUserQuery + +#### 🔧 Autofix output + + 1 | query GraphqlEslintRulesUserQuery { user { id name } }" `; -exports[` 2`] = ` -"> 1 | query GraphqlEslintRulesUserQuery { user { id name } } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should start with the package directory name: "graphql-eslint-rules"" +exports[`Invalid #2 1`] = ` +"#### ⌨️ Code + + 1 | query GraphqlEslintRulesUserQuery { user { id name } } + +#### ❌ Error + + > 1 | query GraphqlEslintRulesUserQuery { user { id name } } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should start with the package directory name: "graphql-eslint-rules"" `; -exports[` 3`] = ` -"> 1 | query GraphqlEslintRulesUserQuery { user { id name } } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should end with the operation name (query/mutation/subscription) e.g. foo-query.graphql" +exports[`Invalid #3 1`] = ` +"#### ⌨️ Code + + 1 | query GraphqlEslintRulesUserQuery { user { id name } } + +#### ❌ Error + + > 1 | query GraphqlEslintRulesUserQuery { user { id name } } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Filename should end with the operation name (query/mutation/subscription) e.g. foo-query.graphql" `; diff --git a/packages/graphql-eslint-rules/src/__tests__/__snapshots__/strict-non-nullable-variables.test.ts.snap b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/strict-non-nullable-variables.test.ts.snap new file mode 100644 index 000000000..ee56a2685 --- /dev/null +++ b/packages/graphql-eslint-rules/src/__tests__/__snapshots__/strict-non-nullable-variables.test.ts.snap @@ -0,0 +1,47 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Invalid #1 1`] = ` +"#### ⌨️ Code + + 1 | query Q ($number: Int = 3) { + 2 | sum(numbers: [1, $number, 3]) + 3 | } + +#### ❌ Error + + 1 | query Q ($number: Int = 3) { + > 2 | sum(numbers: [1, $number, 3]) + | ^ Can't use nullable variable in non nullable position. + 3 | }" +`; + +exports[`Invalid #2 1`] = ` +"#### ⌨️ Code + + 1 | query Q ($number: Int = 3) { + 2 | addOne(number: $number) + 3 | addOneSafe(number: $number) + 4 | } + +#### ❌ Error + + 1 | query Q ($number: Int = 3) { + > 2 | addOne(number: $number) + | ^ Can't use nullable variable in non nullable position. + 3 | addOneSafe(number: $number)" +`; + +exports[`Invalid #3 1`] = ` +"#### ⌨️ Code + + 1 | query Q ($number: Int = 3) { + 2 | addTwo(input: { left: $number, right: 2 }) + 3 | } + +#### ❌ Error + + 1 | query Q ($number: Int = 3) { + > 2 | addTwo(input: { left: $number, right: 2 }) + | ^ Can't use nullable variable in non nullable position. + 3 | }" +`; diff --git a/packages/graphql-eslint-rules/src/__tests__/strict-non-nullable-variables.test.ts b/packages/graphql-eslint-rules/src/__tests__/strict-non-nullable-variables.test.ts new file mode 100644 index 000000000..127f23c93 --- /dev/null +++ b/packages/graphql-eslint-rules/src/__tests__/strict-non-nullable-variables.test.ts @@ -0,0 +1,107 @@ +import { + GraphQLRuleTester, + ParserOptions, +} from "@graphql-eslint/eslint-plugin"; +import rule from "../strict-non-nullable-variables"; + +const ruleTester = new GraphQLRuleTester(); + +const TEST_SCHEMA = /* GraphQL */ ` + type Query { + sum(numbers: [Int!]!): Int + sumSafe(numbers: [Int]!): Int + addOne(number: Int!): Int + addOneSafe(number: Int): Int + addTwo(input: AddTwoInput!): Int + addTwoSafe(input: AddTwoSafeInput!): Int + } + + input AddTwoInput { + left: Int! + right: Int! + } + + input AddTwoSafeInput { + left: Int + right: Int + } +`; + +const parserOptions: ParserOptions = { + schema: TEST_SCHEMA, + filePath: "test.graphql", +}; + +ruleTester.runGraphQLTests("strict-non-nullable-variables", rule, { + valid: [ + { + code: ` +query Q ($number: Int! = 3) { + sum(numbers: [1, $number, 3]) +}`, + parserOptions, + }, + { + code: ` +query Q ($number: Int = 3) { + sumSafe(numbers: [1, $number, 3]) +}`, + parserOptions, + }, + { + code: ` +query Q ($number: Int! = 3) { + addOne(number: $number) +}`, + parserOptions, + }, + { + code: ` +query Q ($number: Int = 3) { + addOneSafe(number: $number) +}`, + parserOptions, + }, + { + code: ` +query Q ($number: Int! = 3) { + addTwo(input: { left: $number, right: 4 }) +}`, + parserOptions, + }, + { + code: ` +query Q ($number: Int = 3) { + addTwoSafe(input: { left: 2, right: $number }) +}`, + parserOptions, + }, + ], + invalid: [ + { + code: ` +query Q ($number: Int = 3) { + sum(numbers: [1, $number, 3]) +}`, + parserOptions, + errors: 1, + }, + { + code: ` +query Q ($number: Int = 3) { + addOne(number: $number) + addOneSafe(number: $number) +}`, + parserOptions, + errors: 1, + }, + { + code: ` +query Q ($number: Int = 3) { + addTwo(input: { left: $number, right: 2 }) +}`, + parserOptions, + errors: 1, + }, + ], +}); diff --git a/packages/graphql-eslint-rules/src/fragment-naming-conventions.ts b/packages/graphql-eslint-rules/src/fragment-naming-conventions.ts index 6d46914e9..2f6adf239 100644 --- a/packages/graphql-eslint-rules/src/fragment-naming-conventions.ts +++ b/packages/graphql-eslint-rules/src/fragment-naming-conventions.ts @@ -1,24 +1,29 @@ -import { - GraphQLESLintRule, - GraphQLESTreeNode, -} from "@graphql-eslint/eslint-plugin"; -import { FragmentDefinitionNode } from "graphql"; -import { checkDirForPkg } from "./utils"; -import path from "path"; -import camelCase from "lodash.camelcase"; -import { - getMissingLastDirectoryPrefixErrorMessage, - isFilenameSuffixValid, - isFilenamePrefixValid, - reportError, -} from "./operation-naming-conventions"; +import type { GraphQLESLintRule } from "@graphql-eslint/eslint-plugin"; +import { pascalCase, getFileInfo } from "./utils"; +import { reportError } from "./operation-naming-conventions"; const OPERATIONS = ["Query", "Mutation", "Subscription"]; const CONDITIONAL_SUFFIX_REGEXP = /^[a-z]+(?:[A-Z][a-z]+)*$/; -function pascalCase(text: string) { - const camelCaseText = camelCase(text); - return camelCaseText.charAt(0).toUpperCase() + camelCaseText.slice(1); +function getMissingLastDirectoryPrefixErrorMessage(lastDirectory: string) { + return `Filename should start with the package directory name: "${lastDirectory}"`; +} + +function isFilenamePrefixValid(filename: string, lastDirectory: string) { + return filename.startsWith(`${lastDirectory}-`); +} + +function isFilenameSuffixValid( + filename: string, + additionalSuffixes?: string[], +) { + const operations = additionalSuffixes + ? [...additionalSuffixes, ...OPERATIONS] + : OPERATIONS; + + return operations.some((operation) => + filename.endsWith(`-${operation.toLowerCase()}`), + ); } function cutOperationName(pascalFilename: string) { @@ -36,7 +41,7 @@ const rule: GraphQLESLintRule = { meta: { type: "problem", fixable: "code", - schema: undefined, + schema: [], docs: { description: `Enforce more descriptive fragment names`, category: "Operations", @@ -67,20 +72,18 @@ const rule: GraphQLESLintRule = { }, create(context) { return { - FragmentDefinition(node: GraphQLESTreeNode) { - if (!node?.name) return; - const documentName = node.name.value; - const filepath = context.getFilename(); - const packageJsonPath = checkDirForPkg( - path.resolve(process.cwd(), path.dirname(filepath)), - ); + FragmentDefinition(node) { + if (!node?.name) { + return; + } - if (!packageJsonPath || !filepath) { + const documentName = node.name.value; + const fileInfo = getFileInfo(context.getFilename()); + if (!fileInfo) { return; } - const lastDirectory = path.basename(path.dirname(packageJsonPath)); - const filename = path.parse(path.basename(filepath)).name; + const { name: filename, directory: lastDirectory } = fileInfo; if (!isFilenameSuffixValid(filename, ["fragment"])) { return reportError( @@ -99,7 +102,7 @@ const rule: GraphQLESLintRule = { } const pascalFilenameWithoutOperation = cutOperationName( - pascalCase(path.parse(path.basename(filepath)).name), + pascalCase(filename), ); const expectedName = pascalFilenameWithoutOperation.endsWith("Fragment") diff --git a/packages/graphql-eslint-rules/src/index.ts b/packages/graphql-eslint-rules/src/index.ts index 88ffd12ff..0b4e0fc39 100644 --- a/packages/graphql-eslint-rules/src/index.ts +++ b/packages/graphql-eslint-rules/src/index.ts @@ -6,3 +6,5 @@ import fragmentNamingConventions from "./fragment-naming-conventions"; export { fragmentNamingConventions as fragmentNamingConventionRule }; import banDirectives from "./ban-directives"; export { banDirectives as banDirectivesRule }; +import strictNonNullableVariables from "./strict-non-nullable-variables"; +export { strictNonNullableVariables as strictNonNullableVariablesRule }; diff --git a/packages/graphql-eslint-rules/src/missing-apollo-key-fields.ts b/packages/graphql-eslint-rules/src/missing-apollo-key-fields.ts index cb7927447..54e3e51c5 100644 --- a/packages/graphql-eslint-rules/src/missing-apollo-key-fields.ts +++ b/packages/graphql-eslint-rules/src/missing-apollo-key-fields.ts @@ -9,15 +9,14 @@ import { GraphQLOutputType, GraphQLNamedType, isNonNullType, - SelectionSetNode, isListType, ASTNode, } from "graphql"; import { GraphQLESLintRule, CategoryType, - GraphQLESTreeNode, - GraphQLESLintRuleContext, + requireGraphQLSchemaFromContext, + requireSiblingsOperations, } from "@graphql-eslint/eslint-plugin"; export const REQUIRE_KEY_FIELDS_WHEN_AVAILABLE = "missing-apollo-key-fields"; @@ -41,29 +40,6 @@ function getBaseType(type: GraphQLOutputType): GraphQLNamedType { return type; } -function checkRequiredParameters( - ruleName: string, - context: GraphQLESLintRuleContext, -) { - if (!context.parserServices) { - throw new Error( - `Rule '${ruleName}' requires 'parserOptions.operations' to be set and loaded. See http://bit.ly/graphql-eslint-operations for more info`, - ); - } - - if (!context.parserServices.siblingOperations.available) { - throw new Error( - `Rule '${ruleName}' requires 'parserOptions.operations' to be set and loaded. See http://bit.ly/graphql-eslint-operations for more info`, - ); - } - - if (!context.options[0]?.typePolicies) { - throw new Error( - `Rule '${ruleName}' requires option 'typePolicies' to be set.`, - ); - } -} - function keyFieldsForType( type: GraphQLObjectType | GraphQLInterfaceType, typePolicies: TypePolicies, @@ -126,7 +102,8 @@ function hasIdFieldInInterfaceSelectionSet(node: unknown, keyFields: string[]) { } const missingApolloKeyFieldsRule: GraphQLESLintRule< - [MissingApolloKeyFieldsRuleConfig] + [MissingApolloKeyFieldsRuleConfig], + true > = { meta: { type: "problem", @@ -190,9 +167,11 @@ const missingApolloKeyFieldsRule: GraphQLESLintRule< }, }, create(context) { + requireGraphQLSchemaFromContext(REQUIRE_KEY_FIELDS_WHEN_AVAILABLE, context); + requireSiblingsOperations(REQUIRE_KEY_FIELDS_WHEN_AVAILABLE, context); + return { - SelectionSet(node: GraphQLESTreeNode) { - checkRequiredParameters(REQUIRE_KEY_FIELDS_WHEN_AVAILABLE, context); + SelectionSet(node) { const { typePolicies } = context.options[0]; const siblings = context.parserServices?.siblingOperations; @@ -259,24 +238,8 @@ const missingApolloKeyFieldsRule: GraphQLESLintRule< unusedKeyFields.length && !hasIdFieldInInterfaceSelectionSet(node, keyFields) ) { - const newNode = { - ...node, - loc: node.loc - ? { - start: { - line: node.loc.start.line, - column: node.loc.start.column - 1, - }, - end: { - line: node.loc.end.line, - column: node.loc.end.column - 1, - }, - } - : undefined, - }; - context.report({ - node: newNode, + node: node, message: `The key-field${ unusedKeyFields.length === 1 ? "" : "s" } "${ diff --git a/packages/graphql-eslint-rules/src/operation-naming-conventions.ts b/packages/graphql-eslint-rules/src/operation-naming-conventions.ts index d2ffbd763..cda6fe290 100644 --- a/packages/graphql-eslint-rules/src/operation-naming-conventions.ts +++ b/packages/graphql-eslint-rules/src/operation-naming-conventions.ts @@ -1,84 +1,24 @@ -import { +import type { GraphQLESLintRule, - GraphQLESTreeNode, GraphQLESLintRuleContext, } from "@graphql-eslint/eslint-plugin"; -import { OperationDefinitionNode, FragmentDefinitionNode } from "graphql"; -import { RuleFixer } from "@typescript-eslint/utils/dist/ts-eslint"; -import { checkDirForPkg } from "./utils"; -import path from "path"; -import camelCase from "lodash.camelcase"; +import { pascalCase, getFileInfo } from "./utils"; const OPERATIONS = ["query", "mutation", "subscription"]; -export const MISSING_OPERATION_NAME_ERROR_MESSAGE = `Filename should end with the operation name (query/mutation/subscription) e.g. foo-query.graphql`; - -export function getMissingLastDirectoryPrefixErrorMessage( - lastDirectory: string, -) { - return `Filename should start with the package directory name: "${lastDirectory}"`; -} - -export function isFilenamePrefixValid(filename: string, lastDirectory: string) { - return filename.startsWith(`${lastDirectory}-`); -} - -export function isFilenameSuffixValid( - filename: string, - additionalSuffixes?: string[], -) { - const operations = additionalSuffixes - ? [...additionalSuffixes, ...OPERATIONS] - : OPERATIONS; - - return operations.some((operation) => - filename.endsWith(`-${operation.toLowerCase()}`), - ); -} - -function pascalCase(text: string) { - const camelCaseText = camelCase(text); - return camelCaseText.charAt(0).toUpperCase() + camelCaseText.slice(1); -} - export function reportError( context: GraphQLESLintRuleContext, - node: GraphQLESTreeNode< - OperationDefinitionNode | FragmentDefinitionNode, - true - >, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + node: any, message: string, expectedName?: string, ) { - const newNode = { - ...node, - loc: node.loc - ? { - start: { - line: node.loc.start.line, - column: node.loc.start.column - 1, - }, - end: { - line: node.loc.end.line, - column: node.loc.end.column - 1, - }, - } - : undefined, - }; - - const fix = (fixer: RuleFixer) => { - if (!expectedName) { - return; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return fixer.replaceText(node.name as any, expectedName); - }; - context.report({ - node: newNode, + node, message, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - fix: expectedName ? (fix as any) : undefined, + fix: expectedName + ? (fixer) => fixer.replaceText(node.name, expectedName) + : undefined, }); } @@ -86,12 +26,10 @@ const rule: GraphQLESLintRule = { meta: { type: "problem", fixable: "code", - schema: undefined, + schema: [], docs: { description: `Enforce descriptive operation names`, category: "Operations", - requiresSiblings: true, - examples: [ { title: "Incorrect", @@ -122,22 +60,18 @@ const rule: GraphQLESLintRule = { }, create(context) { return { - "OperationDefinition[name!=undefined]"( - node: GraphQLESTreeNode, - ) { - if (!node?.name) return; - const documentName = node.name.value; - const filepath = context.getFilename(); - const packageJsonPath = checkDirForPkg( - path.resolve(process.cwd(), path.dirname(filepath)), - ); + OperationDefinition(node) { + if (!node.name?.value) { + return; + } - if (!packageJsonPath || !filepath) { + const documentName = node.name.value; + const fileInfo = getFileInfo(context.getFilename()); + if (!fileInfo) { return; } - const lastDirectory = path.basename(path.dirname(packageJsonPath)); - const filename = path.parse(path.basename(filepath)).name; + const { name: filename, directory: lastDirectory } = fileInfo; if ( !OPERATIONS.some((operation) => filename.endsWith(`-${operation}`)) diff --git a/packages/graphql-eslint-rules/src/strict-non-nullable-variables.ts b/packages/graphql-eslint-rules/src/strict-non-nullable-variables.ts new file mode 100644 index 000000000..48e6ddcbe --- /dev/null +++ b/packages/graphql-eslint-rules/src/strict-non-nullable-variables.ts @@ -0,0 +1,52 @@ +import { + GraphQLESLintRule, + requireGraphQLSchemaFromContext, +} from "@graphql-eslint/eslint-plugin"; +import { isNonNullType } from "graphql"; + +const RULE_ID = "strict-non-nullable-variables"; + +const rule: GraphQLESLintRule<[], true> = { + meta: { + type: "problem", + docs: { + description: + "Prohibits use of nullable variables in non nullable positions. RFC: https://github.com/graphql/graphql-spec/pull/1059", + category: "Operations", + requiresSchema: true, + }, + schema: [], + }, + create(context) { + const nullableVariables = new Set(); + requireGraphQLSchemaFromContext(RULE_ID, context); + + return { + Variable(node) { + const varName = node.name.value; + const { inputType } = node.typeInfo(); + if (node.parent.kind === "VariableDefinition") { + if (!isNonNullType(inputType)) { + nullableVariables.add(varName); + } + return; + } + + if (!inputType) { + return; + } + + if (isNonNullType(inputType)) { + if (nullableVariables.has(varName)) { + context.report({ + message: `Can't use nullable variable in non nullable position.`, + node, + }); + } + } + }, + }; + }, +}; + +export default rule; diff --git a/packages/graphql-eslint-rules/src/utils.ts b/packages/graphql-eslint-rules/src/utils.ts index 2e7ce6ad5..c1f64c88f 100644 --- a/packages/graphql-eslint-rules/src/utils.ts +++ b/packages/graphql-eslint-rules/src/utils.ts @@ -1,7 +1,8 @@ -import { join, dirname } from "path"; +import { join, dirname, resolve, basename, parse } from "path"; import fs from "fs"; +import camelCase from "lodash.camelcase"; -export function checkDirForPkg(dir: string): string | null { +function checkDirForPkg(dir: string): string | null { const pathname = join(dir, "package.json"); let stat; @@ -24,3 +25,23 @@ export function checkDirForPkg(dir: string): string | null { } return checkDirForPkg(parentDir); } + +export function getFileInfo(filepath: string) { + const packageJsonPath = checkDirForPkg( + resolve(process.cwd(), dirname(filepath)), + ); + + if (!packageJsonPath) { + return; + } + + return { + name: parse(basename(filepath)).name, + directory: basename(dirname(packageJsonPath)), + }; +} + +export function pascalCase(text: string) { + const camelCaseText = camelCase(text); + return camelCaseText.charAt(0).toUpperCase() + camelCaseText.slice(1); +} diff --git a/packages/graphql-eslint-rules/tsconfig.json b/packages/graphql-eslint-rules/tsconfig.json index 8511ce7e1..0a5e594a6 100644 --- a/packages/graphql-eslint-rules/tsconfig.json +++ b/packages/graphql-eslint-rules/tsconfig.json @@ -6,6 +6,9 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src"], + "include": [ + "src", + "./types/kind-override.d.ts" + ], "references": [] } diff --git a/packages/graphql-eslint-rules/types/kind-override.d.ts b/packages/graphql-eslint-rules/types/kind-override.d.ts new file mode 100644 index 000000000..d0b53e7d9 --- /dev/null +++ b/packages/graphql-eslint-rules/types/kind-override.d.ts @@ -0,0 +1,73 @@ +export * from "graphql"; + +declare module "graphql" { + /** + * Replaces const Kind with enum Kind to allow successful type build + */ + export enum Kind { + // Name + NAME = "Name", + + // Document + DOCUMENT = "Document", + OPERATION_DEFINITION = "OperationDefinition", + VARIABLE_DEFINITION = "VariableDefinition", + SELECTION_SET = "SelectionSet", + FIELD = "Field", + ARGUMENT = "Argument", + + // Fragments + FRAGMENT_SPREAD = "FragmentSpread", + INLINE_FRAGMENT = "InlineFragment", + FRAGMENT_DEFINITION = "FragmentDefinition", + + // Values + VARIABLE = "Variable", + INT = "IntValue", + FLOAT = "FloatValue", + STRING = "StringValue", + BOOLEAN = "BooleanValue", + NULL = "NullValue", + ENUM = "EnumValue", + LIST = "ListValue", + OBJECT = "ObjectValue", + OBJECT_FIELD = "ObjectField", + + // Directives + DIRECTIVE = "Directive", + + // Types + NAMED_TYPE = "NamedType", + LIST_TYPE = "ListType", + NON_NULL_TYPE = "NonNullType", + + // Type System Definitions + SCHEMA_DEFINITION = "SchemaDefinition", + OPERATION_TYPE_DEFINITION = "OperationTypeDefinition", + + // Type Definitions + SCALAR_TYPE_DEFINITION = "ScalarTypeDefinition", + OBJECT_TYPE_DEFINITION = "ObjectTypeDefinition", + FIELD_DEFINITION = "FieldDefinition", + INPUT_VALUE_DEFINITION = "InputValueDefinition", + INTERFACE_TYPE_DEFINITION = "InterfaceTypeDefinition", + UNION_TYPE_DEFINITION = "UnionTypeDefinition", + ENUM_TYPE_DEFINITION = "EnumTypeDefinition", + ENUM_VALUE_DEFINITION = "EnumValueDefinition", + INPUT_OBJECT_TYPE_DEFINITION = "InputObjectTypeDefinition", + + // Directive Definitions + DIRECTIVE_DEFINITION = "DirectiveDefinition", + + // Type System Extensions + SCHEMA_EXTENSION = "SchemaExtension", + + // Type Extensions + SCALAR_TYPE_EXTENSION = "ScalarTypeExtension", + OBJECT_TYPE_EXTENSION = "ObjectTypeExtension", + INTERFACE_TYPE_EXTENSION = "InterfaceTypeExtension", + UNION_TYPE_EXTENSION = "UnionTypeExtension", + ENUM_TYPE_EXTENSION = "EnumTypeExtension", + INPUT_OBJECT_TYPE_EXTENSION = "InputObjectTypeExtension", + } +} diff --git a/patches/@graphql-eslint+eslint-plugin+3.7.0.patch b/patches/@graphql-eslint+eslint-plugin+3.7.0.patch deleted file mode 100644 index d1b8b6eff..000000000 --- a/patches/@graphql-eslint+eslint-plugin+3.7.0.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/node_modules/@graphql-eslint/eslint-plugin/types.d.ts b/node_modules/@graphql-eslint/eslint-plugin/types.d.ts -index 0cdbc6b..35c450c 100644 ---- a/node_modules/@graphql-eslint/eslint-plugin/types.d.ts -+++ b/node_modules/@graphql-eslint/eslint-plugin/types.d.ts -@@ -47,7 +47,7 @@ export declare type GraphQLESLintRuleContext = Omit = { -- docs: Omit & { -+ docs: Omit, 'category'> & { - category: CategoryType | CategoryType[]; - requiresSchema?: true; - requiresSiblings?: true; -diff --git a/node_modules/@graphql-eslint/eslint-plugin/utils.d.ts b/node_modules/@graphql-eslint/eslint-plugin/utils.d.ts -index 5d66a8d..1dce3b3 100644 ---- a/node_modules/@graphql-eslint/eslint-plugin/utils.d.ts -+++ b/node_modules/@graphql-eslint/eslint-plugin/utils.d.ts -@@ -23,7 +23,7 @@ export declare const normalizePath: (path: string) => string; - export declare const getOnDiskFilepath: (filepath: string) => string; - export declare const getTypeName: (node: any) => any; - export declare const loaderCache: Record; --export declare const TYPES_KINDS: readonly [Kind.OBJECT_TYPE_DEFINITION, Kind.INTERFACE_TYPE_DEFINITION, Kind.ENUM_TYPE_DEFINITION, Kind.SCALAR_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.UNION_TYPE_DEFINITION]; -+export declare const TYPES_KINDS: readonly [typeof Kind.OBJECT_TYPE_DEFINITION, typeof Kind.INTERFACE_TYPE_DEFINITION, typeof Kind.ENUM_TYPE_DEFINITION, typeof Kind.SCALAR_TYPE_DEFINITION, typeof Kind.INPUT_OBJECT_TYPE_DEFINITION, typeof Kind.UNION_TYPE_DEFINITION]; - export declare type CaseStyle = 'camelCase' | 'PascalCase' | 'snake_case' | 'UPPER_CASE' | 'kebab-case'; - export declare const camelCase: (str: string) => string; - export declare const convertCase: (style: CaseStyle, str: string) => string; diff --git a/yarn.lock b/yarn.lock index 4d51fba6d..fe017db98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,12 +76,12 @@ signedsource "^1.0.0" yargs "^15.3.1" -"@babel/code-frame@7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@ardatan/sync-fetch@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz#3385d3feedceb60a896518a1db857ec1e945348f" + integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== dependencies: - "@babel/highlight" "^7.16.7" + node-fetch "^2.6.1" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": version "7.21.4" @@ -262,6 +262,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== + "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" @@ -317,7 +322,7 @@ "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.0" -"@babel/highlight@^7.16.7", "@babel/highlight@^7.18.6": +"@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== @@ -388,6 +393,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -2134,19 +2146,22 @@ parse-filepath "^1.0.2" tslib "~2.4.0" -"@graphql-eslint/eslint-plugin@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@graphql-eslint/eslint-plugin/-/eslint-plugin-3.7.0.tgz#2fb4d1fb50fbabd9c421ac83570b5f689134b4e8" - integrity sha512-l6LZehnPsEXe7BR8UNp0JucyTBYqb5a7yJ9EbJMao69BaxkwIBGSc0LUhqnRuOCwVJwPbKoyxaGSzg4mUisAiQ== +"@graphql-eslint/eslint-plugin@^3.20.0": + version "3.20.1" + resolved "https://registry.yarnpkg.com/@graphql-eslint/eslint-plugin/-/eslint-plugin-3.20.1.tgz#5ae22ee54a5624b852a7cb5f52a103da6384c643" + integrity sha512-RbwVlz1gcYG62sECR1u0XqMh8w5e5XMCCZoMvPQ3nJzEBCTfXLGX727GBoRmSvY1x4gJmqNZ1lsOX7lZY14RIw== dependencies: - "@babel/code-frame" "7.16.7" - "@graphql-tools/code-file-loader" "7.2.3" - "@graphql-tools/graphql-tag-pluck" "7.1.5" - "@graphql-tools/utils" "8.6.1" - chalk "4.1.2" - graphql-config "4.1.0" - graphql-depth-limit "1.1.0" - lodash.lowercase "4.3.0" + "@babel/code-frame" "^7.18.6" + "@graphql-tools/code-file-loader" "^7.3.6" + "@graphql-tools/graphql-tag-pluck" "^7.3.6" + "@graphql-tools/utils" "^9.0.0" + chalk "^4.1.2" + debug "^4.3.4" + fast-glob "^3.2.12" + graphql-config "^4.4.0" + graphql-depth-limit "^1.1.0" + lodash.lowercase "^4.3.0" + tslib "^2.4.1" "@graphql-tools/apollo-engine-loader@^7.0.5": version "7.1.0" @@ -2168,7 +2183,17 @@ tslib "~2.3.0" value-or-promise "1.0.11" -"@graphql-tools/code-file-loader@7.2.3", "@graphql-tools/code-file-loader@^7.0.6": +"@graphql-tools/batch-execute@^8.5.22": + version "8.5.22" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.22.tgz#a742aa9d138fe794e786d8fb6429665dc7df5455" + integrity sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A== + dependencies: + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/code-file-loader@^7.0.6": version "7.2.3" resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.2.3.tgz#b53e8809528da07911423c3a511e5fccf9121a12" integrity sha512-aNVG3/VG5cUpS389rpCum+z7RY98qvPwOzd+J4LVr+f5hWQbDREnSFM+5RVTDfULujrsi7edKaGxGKp68pGmAA== @@ -2179,6 +2204,17 @@ tslib "~2.3.0" unixify "^1.0.0" +"@graphql-tools/code-file-loader@^7.3.6": + version "7.3.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz#33793f9a1f8e74981f8ae6ec4ab7061f9713db15" + integrity sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + "@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2": version "8.4.2" resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558" @@ -2191,6 +2227,68 @@ tslib "~2.3.0" value-or-promise "1.0.11" +"@graphql-tools/delegate@^9.0.31": + version "9.0.35" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-9.0.35.tgz#94683f4bcec63520b4a6c8b2abf2e2e9324ea4f1" + integrity sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA== + dependencies: + "@graphql-tools/batch-execute" "^8.5.22" + "@graphql-tools/executor" "^0.0.20" + "@graphql-tools/schema" "^9.0.19" + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" + tslib "^2.5.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-graphql-ws@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.14.tgz#e0f53fc4cfc8a06cc461b2bc1edb4bb9a8e837ed" + integrity sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "3.0.4" + "@types/ws" "^8.0.0" + graphql-ws "5.12.1" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" + +"@graphql-tools/executor-http@^0.1.7": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-0.1.10.tgz#faf48e18e62a925796c9653c2f50cf2095bc8e6f" + integrity sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "^3.0.4" + "@whatwg-node/fetch" "^0.8.1" + dset "^3.1.2" + extract-files "^11.0.0" + meros "^1.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-legacy-ws@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-0.0.11.tgz#a1e12be8279e92a363a23d4105461a34cd9e389e" + integrity sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@types/ws" "^8.0.0" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" + +"@graphql-tools/executor@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-0.0.20.tgz#d51d159696e839522dd49d936636af251670e425" + integrity sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" + "@graphql-tools/git-loader@^7.0.5": version "7.1.0" resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.1.0.tgz#6d4978752e058b69047bccca1d11c50b1e29b401" @@ -2224,7 +2322,30 @@ tslib "~2.3.0" unixify "^1.0.0" -"@graphql-tools/graphql-tag-pluck@7.1.5", "@graphql-tools/graphql-tag-pluck@^7.1.0", "@graphql-tools/graphql-tag-pluck@^7.1.3": +"@graphql-tools/graphql-file-loader@^7.3.7": + version "7.5.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.17.tgz#7c281617ea3ab4db4d42a2bdb49850f2b937f0f9" + integrity sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw== + dependencies: + "@graphql-tools/import" "6.7.18" + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/graphql-tag-pluck@7.5.2", "@graphql-tools/graphql-tag-pluck@^7.3.6": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz#502f1e066e19d832ebdeba5f571d7636dc27572d" + integrity sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA== + dependencies: + "@babel/parser" "^7.16.8" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/graphql-tag-pluck@^7.1.0", "@graphql-tools/graphql-tag-pluck@^7.1.3": version "7.1.5" resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz#229ed40f38430cdea750f112cbfad89fbc29129c" integrity sha512-NKbFcjlg7cbK+scLXc6eVxXIhX4k8QL6lZ/y5Ju7yrpIN18k2vA78dI6W3Qb5qdftxbDNuC+kDmScZfzzxVPjQ== @@ -2243,6 +2364,15 @@ resolve-from "5.0.0" tslib "~2.3.0" +"@graphql-tools/import@6.7.18": + version "6.7.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.7.18.tgz#ad092d8a4546bb6ffc3e871e499eec7ac368680b" + integrity sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ== + dependencies: + "@graphql-tools/utils" "^9.2.1" + resolve-from "5.0.0" + tslib "^2.4.0" + "@graphql-tools/import@^6.5.7": version "6.6.1" resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" @@ -2262,6 +2392,16 @@ tslib "~2.3.0" unixify "^1.0.0" +"@graphql-tools/json-file-loader@^7.3.7": + version "7.4.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.4.18.tgz#d78ae40979bde51cfc59717757354afc9e35fba2" + integrity sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w== + dependencies: + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + "@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": version "7.4.1" resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441" @@ -2272,6 +2412,16 @@ p-limit "3.1.0" tslib "~2.3.0" +"@graphql-tools/load@^7.5.5": + version "7.8.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.8.14.tgz#f2356f9a5f658a42e33934ae036e4b2cadf2d1e9" + integrity sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg== + dependencies: + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + p-limit "3.1.0" + tslib "^2.4.0" + "@graphql-tools/merge@^8.2.1", "@graphql-tools/merge@^8.4.1": version "8.4.1" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.1.tgz#52879e5f73565f504ceea04fcd9ef90a6e733c62" @@ -2280,6 +2430,14 @@ "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" +"@graphql-tools/merge@^8.2.6": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.2.tgz#95778bbe26b635e8d2f60ce9856b388f11fe8288" + integrity sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw== + dependencies: + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + "@graphql-tools/optimize@^1.0.1", "@graphql-tools/optimize@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.1.1.tgz#dcd59ba1ee34431e5e9b086b57fe0bdb1a176669" @@ -2341,7 +2499,7 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/schema@^9.0.19": +"@graphql-tools/schema@^9.0.18", "@graphql-tools/schema@^9.0.19": version "9.0.19" resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== @@ -2376,6 +2534,25 @@ value-or-promise "1.0.11" ws "8.2.3" +"@graphql-tools/url-loader@^7.9.7": + version "7.17.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.17.18.tgz#3e253594d23483e4c0dd3a4c3dd2ad5cd0141192" + integrity sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/executor-graphql-ws" "^0.0.14" + "@graphql-tools/executor-http" "^0.1.7" + "@graphql-tools/executor-legacy-ws" "^0.0.11" + "@graphql-tools/utils" "^9.2.1" + "@graphql-tools/wrap" "^9.4.2" + "@types/ws" "^8.0.0" + "@whatwg-node/fetch" "^0.8.0" + isomorphic-ws "^5.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.11" + ws "^8.12.0" + "@graphql-tools/utils@8.2.2": version "8.2.2" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.2.2.tgz#d29420bf1003d2876cb30f373145be432c7f7c4b" @@ -2390,13 +2567,6 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.6.1": - version "8.6.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== - dependencies: - tslib "~2.3.0" - "@graphql-tools/utils@8.6.13": version "8.6.13" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.13.tgz#2b4fb7f9f8a29b25eecd44551fb95974de32f969" @@ -2429,7 +2599,7 @@ dependencies: tslib "^2.4.0" -"@graphql-tools/utils@^9.2.1": +"@graphql-tools/utils@^9.0.0", "@graphql-tools/utils@^9.2.1": version "9.2.1" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" integrity sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A== @@ -2453,16 +2623,27 @@ tslib "~2.3.0" value-or-promise "1.0.11" -"@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== +"@graphql-tools/wrap@^9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-9.4.2.tgz#30835587c4c73be1780908a7cb077d8013aa2703" + integrity sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA== + dependencies: + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" -"@graphql-typed-document-node/core@^3.2.0": +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" + integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + "@griffel/core@^1.10.0": version "1.10.0" resolved "https://registry.yarnpkg.com/@griffel/core/-/core-1.10.0.tgz#60d2b360c35582fe5a5515570b835c7d5e2fa961" @@ -2902,6 +3083,33 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@peculiar/asn1-schema@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz#9e57174c02c1291051c553600347e12b81469e10" + integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.8.0" + "@reach/auto-id@0.17.0": version "0.17.0" resolved "https://registry.yarnpkg.com/@reach/auto-id/-/auto-id-0.17.0.tgz#60cce65eb7a0d6de605820727f00dfe2b03b5f17" @@ -3054,6 +3262,16 @@ prop-types "^15.7.2" tslib "^2.3.0" +"@repeaterjs/repeater@3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + +"@repeaterjs/repeater@^3.0.4": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.6.tgz#be23df0143ceec3c69f8b6c2517971a5578fdaa2" + integrity sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA== + "@rushstack/node-core-library@3.35.2": version "3.35.2" resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.35.2.tgz#21ca879b5051a5ebafa952fafcd648a07a142bcb" @@ -3723,14 +3941,6 @@ "@typescript-eslint/typescript-estree" "5.59.8" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" - integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - "@typescript-eslint/scope-manager@5.59.8": version "5.59.8" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz#ff4ad4fec6433647b817c4a7d4b4165d18ea2fa8" @@ -3749,29 +3959,11 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" - integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q== - "@typescript-eslint/types@5.59.8": version "5.59.8" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.8.tgz#212e54414733618f5d0fd50b2da2717f630aebf8" integrity sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w== -"@typescript-eslint/typescript-estree@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" - integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.59.8": version "5.59.8" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz#801a7b1766481629481b3b0878148bd7a1f345d7" @@ -3799,26 +3991,6 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@^5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.1.tgz#fa682a33af47080ba2c4368ee0ad2128213a1196" - integrity sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/typescript-estree" "5.10.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" - integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - eslint-visitor-keys "^3.0.0" - "@typescript-eslint/visitor-keys@5.59.8": version "5.59.8" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz#aa6a7ef862add919401470c09e1609392ef3cc40" @@ -3987,6 +4159,33 @@ dependencies: lodash "^4" +"@whatwg-node/events@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.0.3.tgz#13a65dd4f5893f55280f766e29ae48074927acad" + integrity sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA== + +"@whatwg-node/fetch@^0.8.0", "@whatwg-node/fetch@^0.8.1": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.8.8.tgz#48c6ad0c6b7951a73e812f09dd22d75e9fa18cae" + integrity sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@whatwg-node/node-fetch" "^0.3.6" + busboy "^1.6.0" + urlpattern-polyfill "^8.0.0" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/node-fetch@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz#e28816955f359916e2d830b68a64493124faa6d0" + integrity sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA== + dependencies: + "@whatwg-node/events" "^0.0.3" + busboy "^1.6.0" + fast-querystring "^1.1.1" + fast-url-parser "^1.1.3" + tslib "^2.3.1" + "@wry/context@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.0.tgz#f903eceb89d238ef7e8168ed30f4511f92d83e06" @@ -4382,6 +4581,15 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -4853,6 +5061,13 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4957,14 +5172,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@~4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4985,6 +5192,14 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@~4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + 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" @@ -5477,6 +5692,16 @@ cosmiconfig@7.0.1, cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.0.0.tgz#e9feae014eab580f858f8a0288f38997a7bebe97" + integrity sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -5494,11 +5719,11 @@ create-require@^1.1.0: integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-fetch@3.1.4, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.4, 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== + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== dependencies: - node-fetch "2.6.7" + node-fetch "^2.6.12" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" @@ -5569,6 +5794,11 @@ dataloader@2.0.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== +dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" @@ -5915,6 +6145,11 @@ dset@^3.1.0: resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== +dset@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" + integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -6222,23 +6457,6 @@ eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-visitor-keys@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" - integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" @@ -6523,7 +6741,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@11.0.0: +extract-files@11.0.0, extract-files@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== @@ -6533,6 +6751,11 @@ extract-files@^9.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6592,11 +6815,25 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-querystring@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" + integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== + dependencies: + fast-decode-uri-component "^1.0.1" + fast-uri@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" @@ -7158,7 +7395,7 @@ graphiql@^2.0.9: graphql-language-service "^5.1.0" markdown-it "^12.2.0" -graphql-config@4.1.0, graphql-config@^4.0.1, graphql-config@^4.1.0: +graphql-config@^4.0.1, graphql-config@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.1.0.tgz#a3b28d3fb537952ebeb69c75e4430605a10695e3" integrity sha512-Myqay6pmdcmX3KqoH+bMbeKZ1cTODpHS2CxF1ZzNnfTE+YUpGTcp01bOw6LpzamRb0T/WTYtGFbZeXGo9Hab2Q== @@ -7175,7 +7412,24 @@ graphql-config@4.1.0, graphql-config@^4.0.1, graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" -graphql-depth-limit@1.1.0: +graphql-config@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.5.0.tgz#257c2338950b8dce295a27f75c5f6c39f8f777b2" + integrity sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw== + dependencies: + "@graphql-tools/graphql-file-loader" "^7.3.7" + "@graphql-tools/json-file-loader" "^7.3.7" + "@graphql-tools/load" "^7.5.5" + "@graphql-tools/merge" "^8.2.6" + "@graphql-tools/url-loader" "^7.9.7" + "@graphql-tools/utils" "^9.0.0" + cosmiconfig "8.0.0" + jiti "1.17.1" + minimatch "4.2.3" + string-env-interpolation "1.0.1" + tslib "^2.4.0" + +graphql-depth-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/graphql-depth-limit/-/graphql-depth-limit-1.1.0.tgz#59fe6b2acea0ab30ee7344f4c75df39cc18244e8" integrity sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw== @@ -7263,15 +7517,20 @@ graphql-tools@^8.2.0: optionalDependencies: "@apollo/client" "~3.2.5 || ~3.3.0 || ~3.4.0" +graphql-ws@5.12.1: + version "5.12.1" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.12.1.tgz#c62d5ac54dbd409cc6520b0b39de374b3d59d0dd" + integrity sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg== + graphql-ws@^5.4.1: version "5.5.0" resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.5.0.tgz#79f10248d23d104369eaef93acb9f887276a2c42" integrity sha512-WQepPMGQQoqS2VsrI2I3RMLCVz3CW4/6ZqGV6ABDOwH4R62DzjxwMlwZbj6vhSI/7IM3/C911yITwgs77iO/hw== -graphql@*, graphql@^15.0.0, graphql@^15.6.0, graphql@^15.6.1: - version "15.8.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" - integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== +graphql@*: + version "16.8.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.2.tgz#54771c7ff195da913f5e70af8044a026d32eca2a" + integrity sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg== graphql@16.8.1: version "16.8.1" @@ -7285,6 +7544,11 @@ graphql@^14.5.3: dependencies: iterall "^1.2.2" +graphql@^15.0.0, graphql@^15.6.0, graphql@^15.6.1: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -8227,6 +8491,11 @@ isomorphic-ws@4.0.1: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== +isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -8704,6 +8973,11 @@ jest@^29.3.1: import-local "^3.0.2" jest-cli "^29.3.1" +jiti@1.17.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.17.1.tgz#264daa43ee89a03e8be28c3d712ccc4eb9f1e8ed" + integrity sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw== + jju@^1.4.0, jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" @@ -8744,6 +9018,15 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-to-ts@2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/json-schema-to-ts/-/json-schema-to-ts-2.9.1.tgz#0e055b787587477abdb7e880c874efad3dba7779" + integrity sha512-8MNpRGERlCUWYeJwsWkMrJ0MWzBz49dfqpG+n9viiIlP4othaahbiaNQZuBzmPxRLUhOv1QJMCzW5WE8nHFGIQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@types/json-schema" "^7.0.9" + ts-algebra "^1.2.0" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -9160,7 +9443,7 @@ lodash.kebabcase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= -lodash.lowercase@4.3.0: +lodash.lowercase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== @@ -9410,6 +9693,11 @@ meros@^1.1.4: resolved "https://registry.yarnpkg.com/meros/-/meros-1.2.0.tgz#096cdede2eb0b1610b219b1031b935260de1ad08" integrity sha512-3QRZIS707pZQnijHdhbttXRWwrHhZJ/gzolneoxKVz9N/xmsvY/7Ls8lpnI9gxbgxjcHsAVEW3mgwiZCo6kkJQ== +meros@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" + integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -9507,6 +9795,13 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.3.tgz#b4dcece1d674dee104bb0fb833ebb85a78cbbca6" + integrity sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng== + dependencies: + brace-expansion "^1.1.7" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -9529,9 +9824,9 @@ minimatch@^5.1.0: brace-expansion "^2.0.1" minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass@^3.0.0: version "3.1.5" @@ -9687,10 +9982,10 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" -node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.5, 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== +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.5, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -10448,11 +10743,28 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + qs@6.11.0, qs@^6.9.4: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -11595,6 +11907,11 @@ stream-exhaust@^1.0.1: resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -12029,6 +12346,11 @@ trim@^1.0.1: resolved "https://registry.yarnpkg.com/trim/-/trim-1.0.1.tgz#68e78f6178ccab9687a610752f4f5e5a7022ee8c" integrity sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w== +ts-algebra@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-1.2.2.tgz#b75d301c28cd4126cd344760a47b43e48e2872e0" + integrity sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA== + ts-expect@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-expect/-/ts-expect-1.3.0.tgz#3f8d3966e0e22b5e2bb88337eb99db6816a4c1cf" @@ -12135,6 +12457,11 @@ tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.4.1, tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tslib@~2.0.0, tslib@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" @@ -12384,6 +12711,11 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + use-callback-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" @@ -12478,7 +12810,7 @@ value-or-promise@1.0.6: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f" integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg== -value-or-promise@^1.0.12: +value-or-promise@^1.0.11, value-or-promise@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== @@ -12530,6 +12862,22 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-streams-polyfill@^3.2.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webcrypto-core@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.8.0.tgz#aaea17f3dd9c77c304e3c494eb27ca07cc72ca37" + integrity sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -12865,6 +13213,11 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" +ws@8.13.0, ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + ws@8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" @@ -12882,10 +13235,10 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@^8.12.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== ws@~7.4.2: version "7.4.6"