diff --git a/.changeset/short-melons-tell.md b/.changeset/short-melons-tell.md new file mode 100644 index 00000000000..158361683c7 --- /dev/null +++ b/.changeset/short-melons-tell.md @@ -0,0 +1,5 @@ +--- +'@graphql-tools/utils': patch +--- + +Fix build break in v8.13.0 in some ESM environments. diff --git a/.eslintrc.cjs b/.eslintrc.cjs index b58b87e0e73..9eeca768e43 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -4,8 +4,14 @@ module.exports = { parserOptions: { project: './tsconfig.json', }, - extends: ['eslint:recommended', 'standard', 'prettier', 'plugin:@typescript-eslint/recommended'], - plugins: ['@typescript-eslint'], + extends: [ + 'eslint:recommended', + 'standard', + 'prettier', + 'plugin:@typescript-eslint/recommended', + 'plugin:import/typescript', + ], + plugins: ['@typescript-eslint', 'import'], rules: { 'no-empty': 'off', 'no-console': 'off', @@ -94,6 +100,14 @@ module.exports = { 'promise/param-names': 'off', }, }, + { + // Require extensions on all imports (other than package imports) outside + // of tests, as some ESM environments expect this when loading files. + // We don't check tests because they don't get compiled into the packages. + files: ['**/*.ts'], + excludedFiles: ['**/{test,tests,testing}/**/*.{ts,js}', '*.{spec,test}.{ts,js}'], + rules: { 'import/extensions': ['error', 'ignorePackages'] }, + }, ], ignorePatterns: [ 'dist', diff --git a/packages/utils/src/Path.ts b/packages/utils/src/Path.ts index 861975d7b01..5023238d26b 100644 --- a/packages/utils/src/Path.ts +++ b/packages/utils/src/Path.ts @@ -1,4 +1,4 @@ -import { Maybe } from './types'; +import { Maybe } from './types.js'; export interface Path { readonly prev: Path | undefined; diff --git a/packages/utils/src/jsutils.ts b/packages/utils/src/jsutils.ts index 1d3e123b4c7..3006bfa0952 100644 --- a/packages/utils/src/jsutils.ts +++ b/packages/utils/src/jsutils.ts @@ -1,4 +1,4 @@ -import { MaybePromise } from './executor'; +import { MaybePromise } from './executor.js'; export function isIterableObject(value: unknown): value is Iterable { return value != null && typeof value === 'object' && Symbol.iterator in value;