From bdc966cba6134a72ff7fe40f76543c77ba15d4a4 Mon Sep 17 00:00:00 2001 From: Dimitri POSTOLOV Date: Sun, 22 Jan 2023 03:21:53 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20ESLint:=20add=20`unicor?= =?UTF-8?q?n/consistent-destructuring`=20rule=20(#2993)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add `unicorn/consistent-destructuring` rule --- .changeset/nasty-readers-listen.md | 10 +++ .eslintrc.js | 1 + packages/codemirror-graphql/src/hint.ts | 4 +- packages/codemirror-graphql/src/lint.ts | 6 +- .../codemirror-graphql/src/results/mode.ts | 4 +- .../src/utils/jump-addon.ts | 4 +- .../src/utils/mode-indent.ts | 4 +- .../codemirror-graphql/src/variables/mode.ts | 4 +- .../graphiql-react/src/editor/context.tsx | 13 ++-- packages/graphiql-react/src/execution.tsx | 19 +++-- packages/graphiql-react/src/plugin.tsx | 6 +- packages/graphiql-react/src/schema.tsx | 11 ++- .../src/GraphQLLanguageService.ts | 69 +++++++------------ .../src/MessageProcessor.ts | 8 +-- .../src/startServer.ts | 4 +- .../interface/getAutocompleteSuggestions.ts | 39 +++++------ .../src/interface/getHoverInformation.ts | 3 +- packages/monaco-graphql/src/graphqlMode.ts | 10 +-- .../src/providers/exec-content.ts | 4 +- 19 files changed, 101 insertions(+), 122 deletions(-) create mode 100644 .changeset/nasty-readers-listen.md diff --git a/.changeset/nasty-readers-listen.md b/.changeset/nasty-readers-listen.md new file mode 100644 index 00000000000..0325ef52102 --- /dev/null +++ b/.changeset/nasty-readers-listen.md @@ -0,0 +1,10 @@ +--- +'codemirror-graphql': patch +'@graphiql/react': patch +'graphql-language-service': patch +'graphql-language-service-server': patch +'monaco-graphql': patch +'vscode-graphql-execution': patch +--- + +add `unicorn/consistent-destructuring` rule diff --git a/.eslintrc.js b/.eslintrc.js index 13f972a12c6..4caef755595 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -261,6 +261,7 @@ module.exports = { // Jest rules 'jest/no-conditional-expect': 0, + 'unicorn/consistent-destructuring': 'error', 'prefer-destructuring': ['error', { VariableDeclarator: { object: true } }], 'promise/no-multiple-resolved': 'error', 'sonarjs/no-redundant-jump': 'error', diff --git a/packages/codemirror-graphql/src/hint.ts b/packages/codemirror-graphql/src/hint.ts index 7d5a32fb4ac..a3a0ae0e308 100644 --- a/packages/codemirror-graphql/src/hint.ts +++ b/packages/codemirror-graphql/src/hint.ts @@ -70,7 +70,7 @@ CodeMirror.registerHelper( editor: CodeMirror.Editor, options: GraphQLHintOptions, ): IHints | undefined => { - const { schema } = options; + const { schema, externalFragments } = options; if (!schema) { return; } @@ -90,7 +90,7 @@ CodeMirror.registerHelper( editor.getValue(), position, token, - options.externalFragments, + externalFragments, ); const results = { diff --git a/packages/codemirror-graphql/src/lint.ts b/packages/codemirror-graphql/src/lint.ts index b9ccb1c4280..0849d03070e 100644 --- a/packages/codemirror-graphql/src/lint.ts +++ b/packages/codemirror-graphql/src/lint.ts @@ -42,13 +42,13 @@ CodeMirror.registerHelper( 'lint', 'graphql', (text: string, options: GraphQLLintOptions): CodeMirror.Annotation[] => { - const { schema } = options; + const { schema, validationRules, externalFragments } = options; const rawResults = getDiagnostics( text, schema, - options.validationRules, + validationRules, undefined, - options.externalFragments, + externalFragments, ); const results = rawResults.map(error => ({ diff --git a/packages/codemirror-graphql/src/results/mode.ts b/packages/codemirror-graphql/src/results/mode.ts index 5daff808853..0e7e0b654bb 100644 --- a/packages/codemirror-graphql/src/results/mode.ts +++ b/packages/codemirror-graphql/src/results/mode.ts @@ -52,12 +52,12 @@ function indent( state: State, textAfter: string, ) { - const { levels } = state; + const { levels, indentLevel } = state; // If there is no stack of levels, use the current level. // Otherwise, use the top level, preemptively dedenting for close braces. const level = !levels || levels.length === 0 - ? state.indentLevel + ? indentLevel : levels[levels.length - 1] - (this.electricInput?.test(textAfter) ? 1 : 0); return (level || 0) * (this.config?.indentUnit || 0); diff --git a/packages/codemirror-graphql/src/utils/jump-addon.ts b/packages/codemirror-graphql/src/utils/jump-addon.ts index 7ee5ce495da..0977eb1a903 100644 --- a/packages/codemirror-graphql/src/utils/jump-addon.ts +++ b/packages/codemirror-graphql/src/utils/jump-addon.ts @@ -103,9 +103,9 @@ function onKeyDown(cm: CodeMirror.Editor, event: KeyboardEvent) { }; const onClick = (clickEvent: MouseEvent) => { - const { destination } = cm.state.jump; + const { destination, options } = cm.state.jump; if (destination) { - cm.state.jump.options.onClick(destination, clickEvent); + options.onClick(destination, clickEvent); } }; diff --git a/packages/codemirror-graphql/src/utils/mode-indent.ts b/packages/codemirror-graphql/src/utils/mode-indent.ts index 5c2eaefb8b8..615e08c5d4d 100644 --- a/packages/codemirror-graphql/src/utils/mode-indent.ts +++ b/packages/codemirror-graphql/src/utils/mode-indent.ts @@ -19,12 +19,12 @@ export default function indent( state: State, textAfter: string, ) { - const { levels } = state; + const { levels, indentLevel } = state; // If there is no stack of levels, use the current level. // Otherwise, use the top level, preemptively dedenting for close braces. const level = !levels || levels.length === 0 - ? state.indentLevel + ? indentLevel : levels[levels.length - 1] - (this.electricInput?.test(textAfter) ? 1 : 0); return (level || 0) * (this.config?.indentUnit || 0); diff --git a/packages/codemirror-graphql/src/variables/mode.ts b/packages/codemirror-graphql/src/variables/mode.ts index 229350a946e..03bb909837f 100644 --- a/packages/codemirror-graphql/src/variables/mode.ts +++ b/packages/codemirror-graphql/src/variables/mode.ts @@ -53,12 +53,12 @@ function indent( state: State, textAfter: string, ) { - const { levels } = state; + const { levels, indentLevel } = state; // If there is no stack of levels, use the current level. // Otherwise, use the top level, preemptively dedenting for close braces. const level = !levels || levels.length === 0 - ? state.indentLevel + ? indentLevel : levels[levels.length - 1] - (this.electricInput?.test(textAfter) ? 1 : 0); return (level || 0) * (this.config?.indentUnit || 0); diff --git a/packages/graphiql-react/src/editor/context.tsx b/packages/graphiql-react/src/editor/context.tsx index e6e4b3aa1be..3441de7179b 100644 --- a/packages/graphiql-react/src/editor/context.tsx +++ b/packages/graphiql-react/src/editor/context.tsx @@ -364,17 +364,14 @@ export function EditorContextProvider(props: EditorContextProviderProps) { headerEditor, responseEditor, }); - const { onTabChange } = props; + const { onTabChange, defaultHeaders, children } = props; const addTab = useCallback(() => { setTabState(current => { // Make sure the current tab stores the latest values const updatedValues = synchronizeActiveTabValues(current); const updated = { - tabs: [ - ...updatedValues.tabs, - createTab({ headers: props.defaultHeaders }), - ], + tabs: [...updatedValues.tabs, createTab({ headers: defaultHeaders })], activeTabIndex: updatedValues.tabs.length, }; storeTabs(updated); @@ -383,7 +380,7 @@ export function EditorContextProvider(props: EditorContextProviderProps) { return updated; }); }, [ - props.defaultHeaders, + defaultHeaders, onTabChange, setEditorValues, storeTabs, @@ -530,9 +527,7 @@ export function EditorContextProvider(props: EditorContextProviderProps) { ); return ( - - {props.children} - + {children} ); } diff --git a/packages/graphiql-react/src/execution.tsx b/packages/graphiql-react/src/execution.tsx index 75c932a42de..950c9c7d22a 100644 --- a/packages/graphiql-react/src/execution.tsx +++ b/packages/graphiql-react/src/execution.tsx @@ -99,7 +99,7 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { setSubscription(null); }, [subscription]); - const { fetcher } = props; + const { fetcher, children, operationName } = props; const run = useCallback(async () => { if (!queryEditor || !responseEditor) { return; @@ -169,14 +169,13 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { setResponse(''); setIsFetching(true); - const operationName = - props.operationName ?? queryEditor.operationName ?? undefined; + const opName = operationName ?? queryEditor.operationName ?? undefined; history?.addToHistory({ query, variables: variablesString, headers: headersString, - operationName, + operationName: opName, }); try { @@ -228,7 +227,7 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { } else if (data) { // If there is no path, we don't know what to do with the payload, // so we just set it. - payload.data = part.data; + payload.data = data; } // Ensures we also bring extensions and alike along for the ride @@ -251,7 +250,7 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { { query, variables, - operationName, + operationName: opName, }, { headers: headers ?? undefined, @@ -312,7 +311,7 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { fetcher, headerEditor, history, - props.operationName, + operationName, queryEditor, responseEditor, stop, @@ -326,16 +325,16 @@ export function ExecutionContextProvider(props: ExecutionContextProviderProps) { () => ({ isFetching, isSubscribed, - operationName: props.operationName ?? null, + operationName: operationName ?? null, run, stop, }), - [isFetching, isSubscribed, props.operationName, run, stop], + [isFetching, isSubscribed, operationName, run, stop], ); return ( - {props.children} + {children} ); } diff --git a/packages/graphiql-react/src/plugin.tsx b/packages/graphiql-react/src/plugin.tsx index 7d874b82c71..27194b13f97 100644 --- a/packages/graphiql-react/src/plugin.tsx +++ b/packages/graphiql-react/src/plugin.tsx @@ -156,7 +156,7 @@ export function PluginContextProvider(props: PluginContextProviderProps) { ); }); - const { onTogglePluginVisibility } = props; + const { onTogglePluginVisibility, children } = props; const setVisiblePlugin = useCallback( plugin => { const newVisiblePlugin = plugin @@ -187,9 +187,7 @@ export function PluginContextProvider(props: PluginContextProviderProps) { ); return ( - - {props.children} - + {children} ); } diff --git a/packages/graphiql-react/src/schema.tsx b/packages/graphiql-react/src/schema.tsx index faecd072894..64336cbfff0 100644 --- a/packages/graphiql-react/src/schema.tsx +++ b/packages/graphiql-react/src/schema.tsx @@ -179,7 +179,8 @@ export function SchemaContextProvider(props: SchemaContextProviderProps) { /** * Fetch the schema */ - const { fetcher, onSchemaChange } = props; + const { fetcher, onSchemaChange, dangerouslyAssumeSchemaIsValid, children } = + props; const introspect = useCallback(() => { /** * Only introspect if there is no schema provided via props. If the @@ -330,11 +331,11 @@ export function SchemaContextProvider(props: SchemaContextProviderProps) { * Derive validation errors from the schema */ const validationErrors = useMemo(() => { - if (!schema || props.dangerouslyAssumeSchemaIsValid) { + if (!schema || dangerouslyAssumeSchemaIsValid) { return []; } return validateSchema(schema); - }, [schema, props.dangerouslyAssumeSchemaIsValid]); + }, [schema, dangerouslyAssumeSchemaIsValid]); /** * Memoize context value @@ -351,9 +352,7 @@ export function SchemaContextProvider(props: SchemaContextProviderProps) { ); return ( - - {props.children} - + {children} ); } diff --git a/packages/graphql-language-service-server/src/GraphQLLanguageService.ts b/packages/graphql-language-service-server/src/GraphQLLanguageService.ts index 02c3e223196..694eea650bb 100644 --- a/packages/graphql-language-service-server/src/GraphQLLanguageService.ts +++ b/packages/graphql-language-service-server/src/GraphQLLanguageService.ts @@ -56,27 +56,6 @@ import { import { Logger } from './Logger'; -const { - FRAGMENT_DEFINITION, - OBJECT_TYPE_DEFINITION, - INTERFACE_TYPE_DEFINITION, - ENUM_TYPE_DEFINITION, - UNION_TYPE_DEFINITION, - SCALAR_TYPE_DEFINITION, - INPUT_OBJECT_TYPE_DEFINITION, - SCALAR_TYPE_EXTENSION, - OBJECT_TYPE_EXTENSION, - INTERFACE_TYPE_EXTENSION, - UNION_TYPE_EXTENSION, - ENUM_TYPE_EXTENSION, - INPUT_OBJECT_TYPE_EXTENSION, - DIRECTIVE_DEFINITION, - FRAGMENT_SPREAD, - OPERATION_DEFINITION, - NAMED_TYPE, - FIELD, -} = Kind; - const KIND_TO_SYMBOL_KIND: { [key: string]: SymbolKind } = { [Kind.FIELD]: SymbolKind.Field, [Kind.OPERATION_DEFINITION]: SymbolKind.Class, @@ -144,19 +123,19 @@ export class GraphQLLanguageService { if (!schemaPath || uri !== schemaPath) { documentHasExtensions = documentAST.definitions.some(definition => { switch (definition.kind) { - case OBJECT_TYPE_DEFINITION: - case INTERFACE_TYPE_DEFINITION: - case ENUM_TYPE_DEFINITION: - case UNION_TYPE_DEFINITION: - case SCALAR_TYPE_DEFINITION: - case INPUT_OBJECT_TYPE_DEFINITION: - case SCALAR_TYPE_EXTENSION: - case OBJECT_TYPE_EXTENSION: - case INTERFACE_TYPE_EXTENSION: - case UNION_TYPE_EXTENSION: - case ENUM_TYPE_EXTENSION: - case INPUT_OBJECT_TYPE_EXTENSION: - case DIRECTIVE_DEFINITION: + case Kind.OBJECT_TYPE_DEFINITION: + case Kind.INTERFACE_TYPE_DEFINITION: + case Kind.ENUM_TYPE_DEFINITION: + case Kind.UNION_TYPE_DEFINITION: + case Kind.SCALAR_TYPE_DEFINITION: + case Kind.INPUT_OBJECT_TYPE_DEFINITION: + case Kind.SCALAR_TYPE_EXTENSION: + case Kind.OBJECT_TYPE_EXTENSION: + case Kind.INTERFACE_TYPE_EXTENSION: + case Kind.UNION_TYPE_EXTENSION: + case Kind.ENUM_TYPE_EXTENSION: + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + case Kind.DIRECTIVE_DEFINITION: return true; } @@ -313,7 +292,7 @@ export class GraphQLLanguageService { const node = getASTNodeAtPosition(query, ast, position); if (node) { switch (node.kind) { - case FRAGMENT_SPREAD: + case Kind.FRAGMENT_SPREAD: return this._getDefinitionForFragmentSpread( query, ast, @@ -322,15 +301,15 @@ export class GraphQLLanguageService { projectConfig, ); - case FRAGMENT_DEFINITION: - case OPERATION_DEFINITION: + case Kind.FRAGMENT_DEFINITION: + case Kind.OPERATION_DEFINITION: return getDefinitionQueryResultForDefinitionNode( filePath, query, node, ); - case NAMED_TYPE: + case Kind.NAMED_TYPE: return this._getDefinitionForNamedType( query, ast, @@ -339,7 +318,7 @@ export class GraphQLLanguageService { projectConfig, ); - case FIELD: + case Kind.FIELD: return this._getDefinitionForField( query, ast, @@ -420,11 +399,11 @@ export class GraphQLLanguageService { const localObjectTypeDefinitions = ast.definitions.filter( definition => - definition.kind === OBJECT_TYPE_DEFINITION || - definition.kind === INPUT_OBJECT_TYPE_DEFINITION || - definition.kind === ENUM_TYPE_DEFINITION || - definition.kind === SCALAR_TYPE_DEFINITION || - definition.kind === INTERFACE_TYPE_DEFINITION, + definition.kind === Kind.OBJECT_TYPE_DEFINITION || + definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION || + definition.kind === Kind.ENUM_TYPE_DEFINITION || + definition.kind === Kind.SCALAR_TYPE_DEFINITION || + definition.kind === Kind.INTERFACE_TYPE_DEFINITION, ); const typeCastedDefs = @@ -499,7 +478,7 @@ export class GraphQLLanguageService { ); const localFragDefinitions = ast.definitions.filter( - definition => definition.kind === FRAGMENT_DEFINITION, + definition => definition.kind === Kind.FRAGMENT_DEFINITION, ); const typeCastedDefs = diff --git a/packages/graphql-language-service-server/src/MessageProcessor.ts b/packages/graphql-language-service-server/src/MessageProcessor.ts index e2b15ddf33d..09caa9deec9 100644 --- a/packages/graphql-language-service-server/src/MessageProcessor.ts +++ b/packages/graphql-language-service-server/src/MessageProcessor.ts @@ -329,13 +329,13 @@ export class MessageProcessor { const diagnostics: Diagnostic[] = []; let contents: CachedContent[] = []; - + const text = 'text' in textDocument && textDocument.text; // Create/modify the cached entry if text is provided. // Otherwise, try searching the cache to perform diagnostics. - if ('text' in textDocument && textDocument.text) { + if (text) { // textDocument/didSave does not pass in the text content. // Only run the below function if text is passed in. - contents = this._parser(textDocument.text, uri); + contents = this._parser(text, uri); await this._invalidateCache(textDocument, uri, contents); } else { @@ -359,7 +359,7 @@ export class MessageProcessor { return { uri, diagnostics: [] }; } // update graphql config only when graphql config is saved! - const cachedDocument = this._getCachedDocument(textDocument.uri); + const cachedDocument = this._getCachedDocument(uri); if (cachedDocument) { contents = cachedDocument.contents; } diff --git a/packages/graphql-language-service-server/src/startServer.ts b/packages/graphql-language-service-server/src/startServer.ts index fd65bbb2b78..f0866432b0b 100644 --- a/packages/graphql-language-service-server/src/startServer.ts +++ b/packages/graphql-language-service-server/src/startServer.ts @@ -117,8 +117,8 @@ export type MappedServerOptions = Omit & { const buildOptions = (options: ServerOptions): MappedServerOptions => { const serverOptions = { ...options } as MappedServerOptions; if (serverOptions.loadConfigOptions) { - const { extensions } = serverOptions.loadConfigOptions; - if (!serverOptions.loadConfigOptions.rootDir) { + const { extensions, rootDir } = serverOptions.loadConfigOptions; + if (!rootDir) { if (serverOptions.configDir) { serverOptions.loadConfigOptions.rootDir = serverOptions.configDir; } else { diff --git a/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts b/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts index 12d5a2efa9d..2907aebb05f 100644 --- a/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts +++ b/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts @@ -177,7 +177,7 @@ export function getAutocompleteSuggestions( return []; } - const { kind, step } = state; + const { kind, step, prevState } = state; const typeInfo = getTypeInfo(schema, token.state); // Definition kinds @@ -193,14 +193,14 @@ export function getAutocompleteSuggestions( } if ( - state.prevState?.prevState?.kind === RuleKinds.EXTENSION_DEFINITION && + prevState?.prevState?.kind === RuleKinds.EXTENSION_DEFINITION && state.name ) { return hintList(token, []); } // extend scalar - if (state.prevState?.kind === Kind.SCALAR_TYPE_EXTENSION) { + if (prevState?.kind === Kind.SCALAR_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -213,7 +213,7 @@ export function getAutocompleteSuggestions( } // extend object type - if (state.prevState?.kind === Kind.OBJECT_TYPE_EXTENSION) { + if (prevState?.kind === Kind.OBJECT_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -226,7 +226,7 @@ export function getAutocompleteSuggestions( } // extend interface type - if (state.prevState?.kind === Kind.INTERFACE_TYPE_EXTENSION) { + if (prevState?.kind === Kind.INTERFACE_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -239,7 +239,7 @@ export function getAutocompleteSuggestions( } // extend union type - if (state.prevState?.kind === Kind.UNION_TYPE_EXTENSION) { + if (prevState?.kind === Kind.UNION_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -252,7 +252,7 @@ export function getAutocompleteSuggestions( } // extend enum type - if (state.prevState?.kind === Kind.ENUM_TYPE_EXTENSION) { + if (prevState?.kind === Kind.ENUM_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -265,7 +265,7 @@ export function getAutocompleteSuggestions( } // extend input object type - if (state.prevState?.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION) { + if (prevState?.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION) { return hintList( token, Object.values(schema.getTypeMap()) @@ -279,8 +279,7 @@ export function getAutocompleteSuggestions( if ( kind === RuleKinds.IMPLEMENTS || - (kind === RuleKinds.NAMED_TYPE && - state.prevState?.kind === RuleKinds.IMPLEMENTS) + (kind === RuleKinds.NAMED_TYPE && prevState?.kind === RuleKinds.IMPLEMENTS) ) { return getSuggestionsForImplements( token, @@ -374,8 +373,8 @@ export function getAutocompleteSuggestions( if ( (kind === RuleKinds.TYPE_CONDITION && step === 1) || (kind === RuleKinds.NAMED_TYPE && - state.prevState != null && - state.prevState.kind === RuleKinds.TYPE_CONDITION) + prevState != null && + prevState.kind === RuleKinds.TYPE_CONDITION) ) { return getSuggestionsForFragmentTypeConditions( token, @@ -403,8 +402,8 @@ export function getAutocompleteSuggestions( if ( (mode === GraphQLDocumentMode.TYPE_SYSTEM && !unwrappedState.needsAdvance && - state.kind === RuleKinds.NAMED_TYPE) || - state.kind === RuleKinds.LIST_TYPE + kind === RuleKinds.NAMED_TYPE) || + kind === RuleKinds.LIST_TYPE ) { if (unwrappedState.kind === RuleKinds.FIELD_DEF) { return hintList( @@ -435,10 +434,10 @@ export function getAutocompleteSuggestions( (kind === RuleKinds.VARIABLE_DEFINITION && step === 2) || (kind === RuleKinds.LIST_TYPE && step === 1) || (kind === RuleKinds.NAMED_TYPE && - state.prevState && - (state.prevState.kind === RuleKinds.VARIABLE_DEFINITION || - state.prevState.kind === RuleKinds.LIST_TYPE || - state.prevState.kind === RuleKinds.NON_NULL_TYPE)) + prevState && + (prevState.kind === RuleKinds.VARIABLE_DEFINITION || + prevState.kind === RuleKinds.LIST_TYPE || + prevState.kind === RuleKinds.NON_NULL_TYPE)) ) { return getSuggestionsForVariableDefinition(token, schema, kind); } @@ -1051,7 +1050,7 @@ export function canUseDirective( if (!state || !state.kind) { return false; } - const { kind } = state; + const { kind, prevState } = state; const { locations } = directive; switch (kind) { case RuleKinds.QUERY: @@ -1090,7 +1089,7 @@ export function canUseDirective( case RuleKinds.INPUT_DEF: return locations.includes(DirectiveLocation.INPUT_OBJECT); case RuleKinds.INPUT_VALUE_DEF: - const prevStateKind = state.prevState?.kind; + const prevStateKind = prevState?.kind; switch (prevStateKind) { case RuleKinds.ARGUMENTS_DEF: return locations.includes(DirectiveLocation.ARGUMENT_DEFINITION); diff --git a/packages/graphql-language-service/src/interface/getHoverInformation.ts b/packages/graphql-language-service/src/interface/getHoverInformation.ts index c857bfc6359..ef523c763cf 100644 --- a/packages/graphql-language-service/src/interface/getHoverInformation.ts +++ b/packages/graphql-language-service/src/interface/getHoverInformation.ts @@ -41,8 +41,7 @@ export function getHoverInformation( return ''; } - const { state } = token; - const { kind, step } = state; + const { kind, step } = token.state; const typeInfo = getTypeInfo(schema, token.state); const options = { ...config, schema }; diff --git a/packages/monaco-graphql/src/graphqlMode.ts b/packages/monaco-graphql/src/graphqlMode.ts index 12643a8877b..e89e9a16d12 100644 --- a/packages/monaco-graphql/src/graphqlMode.ts +++ b/packages/monaco-graphql/src/graphqlMode.ts @@ -31,11 +31,11 @@ export function setupMode(defaults: MonacoGraphQLAPI): IDisposable { }; function registerSchemaLessProviders(): void { - const { modeConfiguration } = defaults; + const { modeConfiguration, languageId } = defaults; if (modeConfiguration.documentFormattingEdits) { providers.push( monaco.languages.registerDocumentFormattingEditProvider( - defaults.languageId, + languageId, new languageFeatures.DocumentFormattingAdapter(worker), ), ); @@ -43,13 +43,13 @@ export function setupMode(defaults: MonacoGraphQLAPI): IDisposable { } function registerAllProviders(api: MonacoGraphQLAPI): void { - const { modeConfiguration } = defaults; + const { modeConfiguration, languageId } = defaults; disposeAll(providers); if (modeConfiguration.completionItems) { providers.push( monaco.languages.registerCompletionItemProvider( - defaults.languageId, + languageId, new languageFeatures.CompletionAdapter(worker), ), ); @@ -60,7 +60,7 @@ export function setupMode(defaults: MonacoGraphQLAPI): IDisposable { if (modeConfiguration.hovers) { providers.push( monaco.languages.registerHoverProvider( - defaults.languageId, + languageId, new languageFeatures.HoverAdapter(worker), ), ); diff --git a/packages/vscode-graphql-execution/src/providers/exec-content.ts b/packages/vscode-graphql-execution/src/providers/exec-content.ts index 64cfccfbc96..bad847bd05f 100644 --- a/packages/vscode-graphql-execution/src/providers/exec-content.ts +++ b/packages/vscode-graphql-execution/src/providers/exec-content.ts @@ -241,13 +241,13 @@ export class GraphQLContentProvider implements TextDocumentContentProvider { } } async loadConfig() { - const { rootDir } = this; + const { rootDir, literal } = this; if (!rootDir) { this.reportError(`Error: this file is outside the workspace.`); return; } const config = await loadConfig({ rootDir: rootDir!.uri.fsPath }); - const projectConfig = config?.getProjectForFile(this.literal.uri); + const projectConfig = config?.getProjectForFile(literal.uri); if (!projectConfig!.schema) { this.reportError(`Error: schema from graphql config`);