dotansimha / graphql-code-generator-community

MIT License
118 stars 155 forks source link

Can't import `ReactApolloRawPluginConfig` under `"moduleResolution": "node16"` #513

Open alexeyr-ci opened 11 months ago

alexeyr-ci commented 11 months ago

Which packages are impacted by your issue?

@graphql-codegen/typescript-react-apollo

Describe the bug

import type { ReactApolloRawPluginConfig } from '@graphql-codegen/typescript-react-apollo/typings/config';

compiles under "moduleResolution": "node", but fails under node16 (or nodenext).

Should it be imported in a different way? Removing typings fails as well. I could just not import the type, but would prefer to have the type safety (e.g. it alerted me earlier that typescript-react-apollo doesn't yet support separate input and output types for scalars).

Your Example Website or App

https://github.com/alexeyr-ci/graphql-code-generator-issue-sandbox/tree/typescript-react-apollo-config-import

Steps to Reproduce the Bug or Issue

Run tsc --noEmit.

Expected behavior

As a user, I expected the codegen config to compile successfully, but it fails with

codegen.ts:2:49 - error TS2307: Cannot find module '@graphql-codegen/typescript-react-apollo/typings/config' or its corresponding type declarations.

2 import type { ReactApolloRawPluginConfig } from '@graphql-codegen/typescript-react-apollo/typings/config';
                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Screenshots or Videos

No response

Platform

Codegen Config File

import { CodegenConfig } from "@graphql-codegen/cli";
import type { ReactApolloRawPluginConfig } from '@graphql-codegen/typescript-react-apollo/typings/config';

const apolloConfig: ReactApolloRawPluginConfig = {};

const config: CodegenConfig = {
  schema: "schema.graphql",
  documents: "document.graphql",
  generates: {
    "types.ts": { plugins: ["typescript", "typescript-operations"] },
  },
};

export default config;

Additional context

No response

alexeyr-ci commented 11 months ago

A workaround which works but I'd prefer to avoid:

import type { ReactApolloVisitor } from '@graphql-codegen/typescript-react-apollo';

type ReactApolloRawPluginConfig = ReactApolloVisitor['rawConfig'];

(it can be similarly obtained from plugin).

alexeyr-ci commented 11 months ago

Perhaps related: https://github.com/adaltas/node-csv/issues/354.