Describe the bug
I am not able to use the TypeScript type definition files when my Node 18 project is setup with ESM support enabled. TypeScript compilation will produce the following error:
Could not find a declaration file for module 'graphql-modules'. '/workspace/node_modules/graphql-modules/index.mjs' implicitly has an 'any' type.
There are types at '/workspace/node_modules/graphql-modules/index.d.ts', but this result could not be resolved when respecting package.json "exports". The 'graphql-modules' library may need to update its package.json or typings.
To Reproduce
Steps to reproduce the behavior:
package.json (abbreviated):
{
"type": "module",
"devDependencies": {
"typescript": "~5.0"
}
}
tsconfig.json (abbreviated):
{
"compilerOptions": {
"module": "node16",
"moduleResolution": "node16"
}
}
In any ts file the following will produce the TypeScript error:
import { createModule, gql } from "graphql-modules";
Expected behavior
An import should use the expected type definition files.
Environment:
- OS: MacOS 12.6.6
@graphql-modules/...: 2.1.2
- NodeJS:
18.16.0
Additional context
Was able to find some documentation on how to reference typedefs in the new exports feature: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-7.html#packagejson-exports-imports-and-self-referencing
For what it's worth looking at the current graphql-modules package.json file, it currently has the following:
{
"main": "index.js",
"module": "index.mjs",
"typings": "index.d.ts",
"typescript": {
"definition": "index.d.ts"
},
"exports": {
".": {
"require": "./index.js",
"import": "./index.mjs"
},
"./*": {
"require": "./*.js",
"import": "./*.mjs"
},
"./package.json": "./package.json"
}
}
The graphql package at version 16.6.0 seems to be working correctly. It currently has the following:
{
"main": "index",
"module": "index.mjs",
"typesVersions": {
">=4.1.0": {
"*": [
"*"
]
},
"*": {
"*": [
"NotSupportedTSVersion.d.ts"
]
}
}
}
Describe the bug
I am not able to use the TypeScript type definition files when my Node 18 project is setup with ESM support enabled. TypeScript compilation will produce the following error:
To Reproduce
Steps to reproduce the behavior:
package.json(abbreviated):{ "type": "module", "devDependencies": { "typescript": "~5.0" } }tsconfig.json(abbreviated):{ "compilerOptions": { "module": "node16", "moduleResolution": "node16" } }In any
tsfile the following will produce the TypeScript error:Expected behavior
An import should use the expected type definition files.
Environment:
@graphql-modules/...:2.1.218.16.0Additional context
Was able to find some documentation on how to reference typedefs in the new
exportsfeature: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-7.html#packagejson-exports-imports-and-self-referencingFor what it's worth looking at the current
graphql-modulespackage.jsonfile, it currently has the following:{ "main": "index.js", "module": "index.mjs", "typings": "index.d.ts", "typescript": { "definition": "index.d.ts" }, "exports": { ".": { "require": "./index.js", "import": "./index.mjs" }, "./*": { "require": "./*.js", "import": "./*.mjs" }, "./package.json": "./package.json" } }The
graphqlpackage at version16.6.0seems to be working correctly. It currently has the following:{ "main": "index", "module": "index.mjs", "typesVersions": { ">=4.1.0": { "*": [ "*" ] }, "*": { "*": [ "NotSupportedTSVersion.d.ts" ] } } }