Skip to content

[graphql-modules-preset] When encapsulateModuleTypes: prefix, a type error occurs when adding a custom scalar type. #10386

@tonyfromundefined

Description

@tonyfromundefined

Which packages are impacted by your issue?

@graphql-codegen/graphql-modules-preset

Describe the bug

If you set encapsulateModuleTypes: prefix and add a custom scalar, the generated code will look like this:

export interface Test_Resolvers {
  DateTime?: Test_core.Resolvers['DateTime'];
};

The generated code does not contain the name Test_core, which appears to be a bug.

Your Example Website or App

https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAKjgQwM5wMbQKZwGZQQhwBEAdGQPQwCeY2qJA3AFCiSyIroDmxBRUjyjIwACwCOAGwC0ICABMArlIbMWbAHYxsUPMgy4AItjzBN2BQDFg2KQvQBvFnDgBBWMAyqAXHADkwAr+cAA+ATDAMKoh4f46AB4wsQHISjBi0Cn+WCAg2Nqo2UpQUv6srgCKSro0fv7Int4M2Y2RzQBCNACSwWGpTaqoXQCqqLrlLnBjuvVtXkOTrgByitj1QZMAvqxaOnoGxqbmlgCimkogAGrIUjVOUzNQANLmCvVuRgCy3cvZAOoAJW6ABVToDsoDTgBxEYAGTcENYOw05n2+kMcBMZgsCm6mjA6RsdgccGcK2wAHcPO1fBEojF+vFsEltrsWRx4LR6HAQQwYAB9GkLXAAXjgAAUvABrAA8WCg2DIwuaABoscdccT7KgANr+FUxAC6AD5WBzoFy6Lg+ahBU84OKFUqnuaEpy4NybfyBQBhIj5bSOzA4Mj+vIFGBuj1e3k+1YKMWSmXy0MJ7Dq7Enay2HX69P+U3Ry2e61xu1CwbYADyUAdTtDhprdfGUGLnFjtsFyypTeDUowcudZB71Krmc1lnxhJg2oc+d7VcLZpYFo7Za7AuqtX7KeH26gNAnOMsc71-gPNGX7atPM3T1emgUwazuPOlxudwY+ofb0L7PdEtOx9ABlDBbkadBxQHIdQzAiCoFQdV-CMZAdBBUBsGyEZAThfwVzXW9vQrVD0Mw+CpEaf1NDMHhg2HUjsAw-IKKoiAaOAHgb1LO8fRGUpWKgajaPo0N+KkQThM4gCYw3H0m0BBgICkAA3XQoOTQdU0VZUq0U1BlLUxDj2zM99SbQsmQFAVgFQEFrWrPB8O44CK0vfTDPU3ctP3GpDw81T1JMrVc3nC8-KvItV0A9deIrJ4AqMjSYO0l1W0SoKNRPHMSXPJ5r2i2S4u7NYMsQ7zYJ09MyqQrLTNC88CyiwqSzRXQMWIwUarJKYmwAfj8TcFKUwLEIqOBLwG8tBXckakvGp4pvvdK5vU8bGOY7Alp9Ycav1DbMP-R5cO2itdtWxCf1wo6URazg2oOTFNy+IIFFUSlGmwL5RB61x-AQfwpvJVwAgBqa+DIF6FDeqlPt1I1xpRVx+r8YG-rBvwIahmGPsVeHxtcIJwZASHXveuGEamVxImiLbMZJ7HybxymQc9FkYGJ0noaZ7B8aplB0kyKBOcZ2HmYJkMI0KEWybF3mWZBkopBl7m5b51wkemVsgf5-7AfprmcYpiX5maVAVaN8Wpk1ybUd1jG4Cx2Xcflk2q3Ng3RZd9WQdN1Qul6C2eZ91w-YYUZtc953jet5FWCAA

Steps to Reproduce the Bug or Issue

  1. Go to TypeScript Playground.
  2. Paste the existing snapshot test. (https://github.com/dotansimha/graphql-code-generator/blob/master/packages/presets/graphql-modules/tests/__snapshots__/builder.spec.ts.snap#L76-L142)
  3. A type error occurs (Cannot find namespace 'Test_core').

Expected behavior

the correctly modified Snapshot test: tonyfromundefined@eb4e4b3#diff-3dab381552e68d80f5b1e3b996c6a9a6b05e5a6b29cc670aa171c66a49e9c2d5

Screenshots or Videos

No response

Platform

  • OS: macOS
  • NodeJS: 24.4.1
  • graphql version: 16.11.0
  • @graphql-codegen/graphql-modules-preset version(s): 4.0.17

Codegen Config File

// codegen.ts
import type { CodegenConfig } from "@graphql-codegen/cli";

const config: CodegenConfig = {
  schema: "./src/graphql/**/typedefs/*.graphql",
  generates: {
    "./src/graphql/": {
      preset: "graphql-modules",
      presetConfig: {
        baseTypesPath: "./__generated__/graphql.ts",
        importBaseTypesFrom: "../../__generated__/graphql",
        filename: "__generated__/module-types.ts",
        encapsulateModuleTypes: "prefix",
      },
      plugins: ["typescript", "typescript-resolvers"],
      config: {
        contextType: "../Context#Context",
        enumsAsTypes: true,
        mapperTypeSuffix: "Type",
        useTypeImports: true,
        mappers: {
          // ...
        },
      },
    },
    "./src/graphql/__generated__/schema.graphql": {
      plugins: ["schema-ast"],
    },
  },
};

export default config;

Additional context

I've already fixed this issue in my codebase with a patch (1 line). I've forked it and posted the modified commit to my github so you can understand the changes. I'd be happy to submit a PR if you'd like. Thanks!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions