diff --git a/package.json b/package.json index f612ad55..b2a71830 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,12 @@ "llm-docs" ], "scripts": { - "test": "ts-node src/tests/test.ts", + "test": "tsx src/tests/test.ts", "test-example-projects": "node src/tests/testExampleProjects.mjs", "build": "rm -rf dist/ && tsc --build", "format": "prettier . --write", "lint": "eslint . && prettier . --check", - "profile": "ts-node scripts/profile.ts" + "profile": "tsx scripts/profile.ts" }, "dependencies": { "commander": "^14.0.1", @@ -38,7 +38,7 @@ "path-browserify": "^1.0.1", "prettier": "^3.6.2", "process": "^0.11.10", - "ts-node": "^10.9.2" + "tsx": "^4.19.0" }, "prettier": { "trailingComma": "all" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad0e5d49..76a30ff3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,9 +60,9 @@ importers: process: specifier: ^0.11.10 version: 0.11.10 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@24.5.2)(typescript@5.9.2) + tsx: + specifier: ^4.19.0 + version: 4.21.0 examples/apollo-server: dependencies: @@ -2198,6 +2198,162 @@ packages: resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} engines: {node: '>=18.0.0'} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4239,6 +4395,11 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -4546,6 +4707,11 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -4574,6 +4740,9 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} @@ -6674,6 +6843,9 @@ packages: resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -7143,6 +7315,11 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + turndown@7.2.2: resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} @@ -10407,6 +10584,84 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@1.21.6))': dependencies: eslint: 9.36.0(jiti@1.21.6) @@ -12728,6 +12983,35 @@ snapshots: dependencies: es-errors: 1.3.0 + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + escalade@3.1.1: {} escalade@3.1.2: {} @@ -13104,6 +13388,9 @@ snapshots: fsevents@2.3.2: optional: true + fsevents@2.3.3: + optional: true + function-bind@1.1.1: {} function-bind@1.1.2: {} @@ -13138,6 +13425,10 @@ snapshots: get-stream@6.0.1: {} + get-tsconfig@4.13.6: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@1.5.0: {} glob-parent@5.1.2: @@ -15753,6 +16044,8 @@ snapshots: resolve-pathname@3.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.1: dependencies: is-core-module: 2.11.0 @@ -16235,30 +16528,19 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@24.5.2)(typescript@5.9.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 24.5.2 - acorn: 8.15.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.9.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - tslib@2.5.0: {} tslib@2.6.2: {} tslib@2.8.1: {} + tsx@4.21.0: + dependencies: + esbuild: 0.27.3 + get-tsconfig: 4.13.6 + optionalDependencies: + fsevents: 2.3.3 + turndown@7.2.2: dependencies: '@mixmark-io/domino': 2.2.0 diff --git a/scripts/buildConfigTypes.ts b/scripts/buildConfigTypes.ts index 52184e4e..40e6c925 100644 --- a/scripts/buildConfigTypes.ts +++ b/scripts/buildConfigTypes.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; import * as path from "path"; -import { makeTypeScriptType } from "../src/gratsConfig"; -import { GratsConfigSpec } from "../src/configSpec"; +import { makeTypeScriptType } from "../src/gratsConfig.js"; +import { GratsConfigSpec } from "../src/configSpec.js"; export function writeTypeScriptTypeToDisk(): void { const doc = `/** diff --git a/scripts/profile.ts b/scripts/profile.ts index d9fa4b95..f1a0c118 100644 --- a/scripts/profile.ts +++ b/scripts/profile.ts @@ -33,7 +33,7 @@ export async function main() { let prevType = ""; if (fileIndex > 0) { prevType = `Type${fileIndex - 1}`; - prelude = `import { ${prevType} } from "./file${fileIndex - 1}";\n`; + prelude = `import { ${prevType} } from "./file${fileIndex - 1}.js";\n`; edge = ` /** @gqlField */ previous(): ${prevType} { return new ${prevType}(); diff --git a/src/Errors.ts b/src/Errors.ts index 770756c0..ae2f774e 100644 --- a/src/Errors.ts +++ b/src/Errors.ts @@ -13,7 +13,7 @@ import { CONTEXT_TAG, INFO_TAG, DIRECTIVE_TAG, -} from "./Extractor"; +} from "./Extractor.js"; export const ISSUE_URL = "https://github.com/captbaritone/grats/issues"; diff --git a/src/Extractor.ts b/src/Extractor.ts index 41f6b651..a40bb039 100644 --- a/src/Extractor.ts +++ b/src/Extractor.ts @@ -26,34 +26,34 @@ import { DiagnosticsResult, gqlErr, DiagnosticResult, -} from "./utils/DiagnosticError"; -import { err, ok } from "./utils/Result"; +} from "./utils/DiagnosticError.js"; +import { err, ok } from "./utils/Result.js"; import * as ts from "typescript"; import { DeclarationDefinition, NameDefinition, UNRESOLVED_REFERENCE_NAME, -} from "./TypeContext"; -import * as E from "./Errors"; -import { traverseJSDocTags } from "./utils/JSDoc"; -import { GraphQLConstructor, loc } from "./GraphQLConstructor"; -import { relativePath } from "./gratsRoot"; -import { ISSUE_URL } from "./Errors"; -import { detectInvalidComments } from "./comments"; +} from "./TypeContext.js"; +import * as E from "./Errors.js"; +import { traverseJSDocTags } from "./utils/JSDoc.js"; +import { GraphQLConstructor, loc } from "./GraphQLConstructor.js"; +import { relativePath } from "./gratsRoot.js"; +import { ISSUE_URL } from "./Errors.js"; +import { detectInvalidComments } from "./comments.js"; import { bestMatch, extend, invariant, levenshteinDistance, TsIdentifier, -} from "./utils/helpers"; -import * as Act from "./CodeActions"; +} from "./utils/helpers.js"; +import * as Act from "./CodeActions.js"; import { InputValueDefinitionNodeOrResolverArg, ResolverArgument, -} from "./resolverSignature"; -import { Parser } from "graphql/language/parser"; -import { ExportDefinition } from "./GraphQLAstExtensions"; +} from "./resolverSignature.js"; +import { Parser } from "graphql/language/parser.js"; +import { ExportDefinition } from "./GraphQLAstExtensions.js"; export const LIBRARY_IMPORT_NAME = "grats"; export const LIBRARY_NAME = "Grats"; diff --git a/src/GraphQLAstExtensions.ts b/src/GraphQLAstExtensions.ts index 6efe28ca..b940fad9 100644 --- a/src/GraphQLAstExtensions.ts +++ b/src/GraphQLAstExtensions.ts @@ -1,5 +1,5 @@ -import { ResolverSignature } from "./resolverSignature"; -import { TsIdentifier } from "./utils/helpers"; +import { ResolverSignature } from "./resolverSignature.js"; +import { TsIdentifier } from "./utils/helpers.js"; export type ExportDefinition = { tsModulePath: string; diff --git a/src/GraphQLConstructor.ts b/src/GraphQLConstructor.ts index 40b77690..24f01b5e 100644 --- a/src/GraphQLConstructor.ts +++ b/src/GraphQLConstructor.ts @@ -35,13 +35,13 @@ import { EnumValueNode, } from "graphql"; import * as ts from "typescript"; -import { uniqueId } from "./utils/helpers"; -import { DiagnosticResult, TsLocatableNode } from "./utils/DiagnosticError"; +import { uniqueId } from "./utils/helpers.js"; +import { DiagnosticResult, TsLocatableNode } from "./utils/DiagnosticError.js"; import { InputValueDefinitionNodeOrResolverArg, ResolverSignature, -} from "./resolverSignature"; -import { ExportDefinition } from "./GraphQLAstExtensions"; +} from "./resolverSignature.js"; +import { ExportDefinition } from "./GraphQLAstExtensions.js"; export class GraphQLConstructor { /* Top Level Types */ diff --git a/src/InterfaceGraph.ts b/src/InterfaceGraph.ts index b1710fa0..40a972d6 100644 --- a/src/InterfaceGraph.ts +++ b/src/InterfaceGraph.ts @@ -1,5 +1,5 @@ -import { TypeContext } from "./TypeContext"; -import { DefaultMap } from "./utils/helpers"; +import { TypeContext } from "./TypeContext.js"; +import { DefaultMap } from "./utils/helpers.js"; import { DefinitionNode, Kind } from "graphql"; export type InterfaceImplementor = { kind: "TYPE" | "INTERFACE"; name: string }; diff --git a/src/Locate.ts b/src/Locate.ts index 48067f91..aa584066 100644 --- a/src/Locate.ts +++ b/src/Locate.ts @@ -5,8 +5,8 @@ import { GraphQLSchema, Location, } from "graphql"; -import { Result, err, ok } from "./utils/Result"; -import { nullThrows } from "./utils/helpers"; +import { Result, err, ok } from "./utils/Result.js"; +import { nullThrows } from "./utils/helpers.js"; type EntityName = { parent: string; diff --git a/src/TypeContext.ts b/src/TypeContext.ts index f30c2ee6..41d32c61 100644 --- a/src/TypeContext.ts +++ b/src/TypeContext.ts @@ -13,11 +13,11 @@ import { gqlRelated, DiagnosticsResult, FixableDiagnosticWithLocation, -} from "./utils/DiagnosticError"; -import { err, ok } from "./utils/Result"; -import * as E from "./Errors"; -import { ExtractionSnapshot } from "./Extractor"; -import { ResolverArgument } from "./resolverSignature"; +} from "./utils/DiagnosticError.js"; +import { err, ok } from "./utils/Result.js"; +import * as E from "./Errors.js"; +import { ExtractionSnapshot } from "./Extractor.js"; +import { ResolverArgument } from "./resolverSignature.js"; export const UNRESOLVED_REFERENCE_NAME = `__UNRESOLVED_REFERENCE__`; @@ -45,7 +45,7 @@ export type NameDefinition = { export type DeclarationDefinition = NameDefinition | DerivedResolverDefinition; -import type { TsIdentifier } from "./utils/helpers"; +import type { TsIdentifier } from "./utils/helpers.js"; /** * Public interface for TypeContext. diff --git a/src/cli.ts b/src/cli.ts index b392c2fb..8ea67b4a 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -3,35 +3,35 @@ // LLM agent docs: See the llm-docs/ directory in the package root for // Markdown documentation covering all Grats features and configuration. -import * as E from "./Errors"; +import * as E from "./Errors.js"; import { Location } from "graphql"; -import { getParsedTsConfig } from "./"; +import { getParsedTsConfig } from "./index.js"; import { SchemaAndDoc, buildSchemaAndDocResult, extractSchemaAndDoc, -} from "./lib"; +} from "./lib.js"; import { Command } from "commander"; import { writeFileSync } from "fs"; import { resolve, dirname } from "path"; import { version } from "../package.json"; -import { locate } from "./Locate"; +import { locate } from "./Locate.js"; import { printGratsSDL, printExecutableSchema, printEnumsModule, -} from "./printSchema"; +} from "./printSchema.js"; import * as ts from "typescript"; import { diagnosticsMessage, locationlessErr, ReportableDiagnostics, DiagnosticsWithoutLocationResult, -} from "./utils/DiagnosticError"; -import { GratsConfig, ParsedCommandLineGrats } from "./gratsConfig"; -import { err, ok } from "./utils/Result"; -import { cacheFromProgram, cachesAreEqual, RunCache } from "./runCache"; -import { withFixesFixed, FixOptions, applyFixes } from "./fixFixable"; +} from "./utils/DiagnosticError.js"; +import { GratsConfig, ParsedCommandLineGrats } from "./gratsConfig.js"; +import { err, ok } from "./utils/Result.js"; +import { cacheFromProgram, cachesAreEqual, RunCache } from "./runCache.js"; +import { withFixesFixed, FixOptions, applyFixes } from "./fixFixable.js"; type BuildOptions = FixOptions; diff --git a/src/codegen/TSAstBuilder.ts b/src/codegen/TSAstBuilder.ts index 403d1be5..2317acea 100644 --- a/src/codegen/TSAstBuilder.ts +++ b/src/codegen/TSAstBuilder.ts @@ -1,7 +1,7 @@ import * as ts from "typescript"; -import { isNonNull } from "../utils/helpers"; +import { isNonNull } from "../utils/helpers.js"; import * as path from "path"; -import { resolveRelativePath } from "../gratsRoot"; +import { resolveRelativePath } from "../gratsRoot.js"; type JsonObject = { [key: string]: JsonValue }; type JsonArray = JsonValue[]; diff --git a/src/codegen/enumCodegen.ts b/src/codegen/enumCodegen.ts index 1fd2953f..ece3e97c 100644 --- a/src/codegen/enumCodegen.ts +++ b/src/codegen/enumCodegen.ts @@ -1,8 +1,8 @@ import { GraphQLEnumType, GraphQLSchema, isEnumType } from "graphql"; import * as ts from "typescript"; import { GratsConfig } from "../gratsConfig.js"; -import { nullThrows } from "../utils/helpers"; -import TSAstBuilder from "./TSAstBuilder"; +import { nullThrows } from "../utils/helpers.js"; +import TSAstBuilder from "./TSAstBuilder.js"; const F = ts.factory; diff --git a/src/codegen/resolverCodegen.ts b/src/codegen/resolverCodegen.ts index 99fc748b..f174f1ca 100644 --- a/src/codegen/resolverCodegen.ts +++ b/src/codegen/resolverCodegen.ts @@ -1,14 +1,14 @@ import { ConstDirectiveNode, GraphQLField } from "graphql"; import * as ts from "typescript"; -import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives"; +import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives.js"; import { ASSERT_NON_NULL_HELPER, createAssertNonNullHelper, -} from "../codegenHelpers"; -import { nullThrows } from "../utils/helpers"; -import { ResolverArgument, ResolverDefinition, Metadata } from "../metadata"; -import TSAstBuilder from "./TSAstBuilder"; -import { ExportDefinition } from "../GraphQLAstExtensions"; +} from "../codegenHelpers.js"; +import { nullThrows } from "../utils/helpers.js"; +import { ResolverArgument, ResolverDefinition, Metadata } from "../metadata.js"; +import TSAstBuilder from "./TSAstBuilder.js"; +import { ExportDefinition } from "../GraphQLAstExtensions.js"; const RESOLVER_ARGS = ["source", "args", "context", "info"] as const; diff --git a/src/codegen/resolverMapCodegen.ts b/src/codegen/resolverMapCodegen.ts index 1bb5d2b9..c30c95b3 100644 --- a/src/codegen/resolverMapCodegen.ts +++ b/src/codegen/resolverMapCodegen.ts @@ -1,10 +1,10 @@ import * as ts from "typescript"; -import { GratsConfig } from "../gratsConfig"; -import TSAstBuilder from "./TSAstBuilder"; -import ResolverCodegen from "./resolverCodegen"; -import { Metadata, FieldDefinition } from "../metadata"; +import { GratsConfig } from "../gratsConfig.js"; +import TSAstBuilder from "./TSAstBuilder.js"; +import ResolverCodegen from "./resolverCodegen.js"; +import { Metadata, FieldDefinition } from "../metadata.js"; import { GraphQLObjectType, GraphQLSchema } from "graphql"; -import { nullThrows } from "../utils/helpers"; +import { nullThrows } from "../utils/helpers.js"; const F = ts.factory; diff --git a/src/codegen/schemaCodegen.ts b/src/codegen/schemaCodegen.ts index d451dcc3..ffb9f3bd 100644 --- a/src/codegen/schemaCodegen.ts +++ b/src/codegen/schemaCodegen.ts @@ -27,14 +27,14 @@ import { valueFromASTUntyped, } from "graphql"; import * as ts from "typescript"; -import { extend, nullThrows } from "../utils/helpers"; +import { extend, nullThrows } from "../utils/helpers.js"; import { GratsConfig } from "../gratsConfig.js"; -import { naturalCompare } from "../utils/naturalCompare"; -import TSAstBuilder, { JsonValue } from "./TSAstBuilder"; -import ResolverCodegen from "./resolverCodegen"; -import { Metadata } from "../metadata"; -import { ConstDirectiveNode } from "graphql/language"; -import { ExportDefinition } from "../GraphQLAstExtensions"; +import { naturalCompare } from "../utils/naturalCompare.js"; +import TSAstBuilder, { JsonValue } from "./TSAstBuilder.js"; +import ResolverCodegen from "./resolverCodegen.js"; +import { Metadata } from "../metadata.js"; +import { ConstDirectiveNode } from "graphql/language/index.js"; +import { ExportDefinition } from "../GraphQLAstExtensions.js"; // These directives will be added to the schema by default, so we don't need to // include them in the generated schema. diff --git a/src/comments.ts b/src/comments.ts index 805e0da2..a1c47ef6 100644 --- a/src/comments.ts +++ b/src/comments.ts @@ -1,12 +1,12 @@ import * as ts from "typescript"; -import { rangeErr } from "./utils/DiagnosticError"; -import * as E from "./Errors"; -import * as Act from "./CodeActions"; +import { rangeErr } from "./utils/DiagnosticError.js"; +import * as E from "./Errors.js"; +import * as Act from "./CodeActions.js"; import { ALL_GQL_TAGS, KILLS_PARENT_ON_EXCEPTION_TAG, ONE_OF_TAG, -} from "./Extractor"; +} from "./Extractor.js"; // A line that starts with optional *s followed by @gql or @killsParentOnException const BLOCK_COMMENT_REGEX = diff --git a/src/configSpec.ts b/src/configSpec.ts index 4b66e406..b91bb6d4 100644 --- a/src/configSpec.ts +++ b/src/configSpec.ts @@ -1,5 +1,5 @@ import * as _GratsConfigSpec from "./configSpecRaw.json"; -import { ConfigSpec } from "./gratsConfig"; +import { ConfigSpec } from "./gratsConfig.js"; // TypeScript does not preserve string literal types when importing JSON. export const GratsConfigSpec: ConfigSpec = _GratsConfigSpec as any; diff --git a/src/fixFixable.ts b/src/fixFixable.ts index d926157a..f0dc406f 100644 --- a/src/fixFixable.ts +++ b/src/fixFixable.ts @@ -2,9 +2,9 @@ import * as ts from "typescript"; import { DiagnosticsWithoutLocationResult, FixableDiagnostic, -} from "./utils/DiagnosticError"; +} from "./utils/DiagnosticError.js"; import { writeFileSync, readFileSync } from "fs"; -import { relativePath } from "./gratsRoot"; +import { relativePath } from "./gratsRoot.js"; export type FixOptions = { fix: boolean; diff --git a/src/gratsConfig.ts b/src/gratsConfig.ts index 0688bd95..c76c7d3b 100644 --- a/src/gratsConfig.ts +++ b/src/gratsConfig.ts @@ -1,9 +1,9 @@ import * as ts from "typescript"; -import { err, ok, Result } from "./utils/Result"; -import { invariant } from "./utils/helpers"; -import { locationlessErr } from "./utils/DiagnosticError"; -import { GratsConfigSpec } from "./configSpec"; -import { GratsConfig } from "./TGratsConfig"; +import { err, ok, Result } from "./utils/Result.js"; +import { invariant } from "./utils/helpers.js"; +import { locationlessErr } from "./utils/DiagnosticError.js"; +import { GratsConfigSpec } from "./configSpec.js"; +import type { GratsConfig } from "./TGratsConfig.js"; /** * For Grats's config object we need the following: diff --git a/src/index.ts b/src/index.ts index a7487016..ada33786 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,17 +2,17 @@ // Markdown documentation covering all Grats features and configuration. import * as ts from "typescript"; -import { ParsedCommandLineGrats, validateGratsOptions } from "./gratsConfig"; -import { DiagnosticsWithoutLocationResult } from "./utils/DiagnosticError"; -import { err } from "./utils/Result"; +import { ParsedCommandLineGrats, validateGratsOptions } from "./gratsConfig.js"; +import { DiagnosticsWithoutLocationResult } from "./utils/DiagnosticError.js"; +import { err } from "./utils/Result.js"; -export { printSDLWithoutMetadata } from "./printSchema"; -export * from "./Types"; -export * from "./lib"; +export { printSDLWithoutMetadata } from "./printSchema.js"; +export * from "./Types.js"; +export * from "./lib.js"; // Used by the experimental TypeScript plugin -export { extract } from "./Extractor"; -export { codegen } from "./codegen/schemaCodegen"; -export { ReportableDiagnostics } from "./utils/DiagnosticError"; +export { extract } from "./Extractor.js"; +export { codegen } from "./codegen/schemaCodegen.js"; +export { ReportableDiagnostics } from "./utils/DiagnosticError.js"; // #FIXME: Report diagnostics instead of throwing! export function getParsedTsConfig( diff --git a/src/lib.ts b/src/lib.ts index 11a9c382..1582b17d 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -9,40 +9,40 @@ import { import { DiagnosticsWithoutLocationResult, graphQlErrorToDiagnostic, -} from "./utils/DiagnosticError"; -import { concatResults, ResultPipe } from "./utils/Result"; -import { ok, err } from "./utils/Result"; +} from "./utils/DiagnosticError.js"; +import { concatResults, ResultPipe } from "./utils/Result.js"; +import { ok, err } from "./utils/Result.js"; import * as ts from "typescript"; -import { ExtractionSnapshot } from "./Extractor"; -import { TypeContext } from "./TypeContext"; -import { validateSDL } from "graphql/validation/validate"; -import { ParsedCommandLineGrats } from "./gratsConfig"; -import { validateTypenames } from "./validations/validateTypenames"; -import { extractSnapshotsFromProgram } from "./transforms/snapshotsFromProgram"; -import { validateMergedInterfaces } from "./validations/validateMergedInterfaces"; -import { addInterfaceFields } from "./transforms/addInterfaceFields"; -import { filterNonGqlInterfaces } from "./transforms/filterNonGqlInterfaces"; -import { validateAsyncIterable } from "./validations/validateAsyncIterable"; -import { applyDefaultNullability } from "./transforms/applyDefaultNullability"; -import { mergeExtensions } from "./transforms/mergeExtensions"; -import { sortSchemaAst } from "./transforms/sortSchemaAst"; -import { validateDuplicateContextOrInfo } from "./validations/validateDuplicateContextOrInfo"; -import { validateSemanticNullability } from "./validations/validateSemanticNullability"; -import { resolveTypes } from "./transforms/resolveTypes"; -import { resolveResolverParams } from "./transforms/resolveResolverParams"; -import { customSpecValidations } from "./validations/customSpecValidations"; -import { makeResolverSignature } from "./transforms/makeResolverSignature"; -import { addImplicitRootTypes } from "./transforms/addImplicitRootTypes"; -import { Metadata } from "./metadata"; -import { validateDirectiveArguments } from "./validations/validateDirectiveArguments"; -import { coerceDefaultEnumValues } from "./transforms/coerceDefaultEnumValues"; -import { validateSomeTypesAreDefined } from "./validations/validateSomeTypesAreDefined"; +import { ExtractionSnapshot } from "./Extractor.js"; +import { TypeContext } from "./TypeContext.js"; +import { validateSDL } from "graphql/validation/validate.js"; +import { ParsedCommandLineGrats } from "./gratsConfig.js"; +import { validateTypenames } from "./validations/validateTypenames.js"; +import { extractSnapshotsFromProgram } from "./transforms/snapshotsFromProgram.js"; +import { validateMergedInterfaces } from "./validations/validateMergedInterfaces.js"; +import { addInterfaceFields } from "./transforms/addInterfaceFields.js"; +import { filterNonGqlInterfaces } from "./transforms/filterNonGqlInterfaces.js"; +import { validateAsyncIterable } from "./validations/validateAsyncIterable.js"; +import { applyDefaultNullability } from "./transforms/applyDefaultNullability.js"; +import { mergeExtensions } from "./transforms/mergeExtensions.js"; +import { sortSchemaAst } from "./transforms/sortSchemaAst.js"; +import { validateDuplicateContextOrInfo } from "./validations/validateDuplicateContextOrInfo.js"; +import { validateSemanticNullability } from "./validations/validateSemanticNullability.js"; +import { resolveTypes } from "./transforms/resolveTypes.js"; +import { resolveResolverParams } from "./transforms/resolveResolverParams.js"; +import { customSpecValidations } from "./validations/customSpecValidations.js"; +import { makeResolverSignature } from "./transforms/makeResolverSignature.js"; +import { addImplicitRootTypes } from "./transforms/addImplicitRootTypes.js"; +import { Metadata } from "./metadata.js"; +import { validateDirectiveArguments } from "./validations/validateDirectiveArguments.js"; +import { coerceDefaultEnumValues } from "./transforms/coerceDefaultEnumValues.js"; +import { validateSomeTypesAreDefined } from "./validations/validateSomeTypesAreDefined.js"; // Export the TypeScript plugin implementation used by // grats-ts-plugin -export { initTsPlugin } from "./tsPlugin/initTsPlugin"; +export { initTsPlugin } from "./tsPlugin/initTsPlugin.js"; -export type { GratsConfig } from "./gratsConfig"; +export type { GratsConfig } from "./gratsConfig.js"; export type SchemaAndDoc = { schema: GraphQLSchema; diff --git a/src/printSchema.ts b/src/printSchema.ts index 98ee268e..e17c8514 100644 --- a/src/printSchema.ts +++ b/src/printSchema.ts @@ -4,12 +4,12 @@ import { print, specifiedScalarTypes, } from "graphql"; -import { GratsConfig } from "./gratsConfig"; -import { codegen } from "./codegen/schemaCodegen"; -import { Metadata } from "./metadata"; -import { resolverMapCodegen } from "./codegen/resolverMapCodegen"; -import { codegenEnums } from "./codegen/enumCodegen"; -import { mapDefinitions } from "./utils/visitor"; +import { GratsConfig } from "./gratsConfig.js"; +import { codegen } from "./codegen/schemaCodegen.js"; +import { Metadata } from "./metadata.js"; +import { resolverMapCodegen } from "./codegen/resolverMapCodegen.js"; +import { codegenEnums } from "./codegen/enumCodegen.js"; +import { mapDefinitions } from "./utils/visitor.js"; /** * Prints code for a TypeScript module that exports a GraphQLSchema. diff --git a/src/publicDirectives.ts b/src/publicDirectives.ts index 31a470ca..f863917f 100644 --- a/src/publicDirectives.ts +++ b/src/publicDirectives.ts @@ -6,7 +6,7 @@ import { Location, parse, } from "graphql"; -import { uniqueId } from "./utils/helpers"; +import { uniqueId } from "./utils/helpers.js"; /** * Grats supports some additional, non-spec server directives in order to diff --git a/src/resolverSignature.ts b/src/resolverSignature.ts index fbb5a84b..7da1cd73 100644 --- a/src/resolverSignature.ts +++ b/src/resolverSignature.ts @@ -9,7 +9,7 @@ import { StringValueNode, TypeNode, } from "graphql"; -import { DiagnosticResult } from "./utils/DiagnosticError"; +import { DiagnosticResult } from "./utils/DiagnosticError.js"; /** * Describes the backing resolver for a field. This broadly matches the metadata diff --git a/src/tests/TestRunner.ts b/src/tests/TestRunner.ts index 03738faf..0bf906a4 100644 --- a/src/tests/TestRunner.ts +++ b/src/tests/TestRunner.ts @@ -1,9 +1,9 @@ import * as fs from "fs"; import * as path from "path"; import { diff } from "jest-diff"; -import { ask } from "./yesNo"; -import { Result } from "../utils/Result"; -import { Markdown } from "./Markdown"; +import { ask } from "./yesNo.js"; +import { Result } from "../utils/Result.js"; +import { Markdown } from "./Markdown.js"; export type TransformerResult = Result | false; diff --git a/src/tests/integrationFixtures/aliasedMethod/schema.ts b/src/tests/integrationFixtures/aliasedMethod/schema.ts index 3ce67d42..fd5179d3 100644 --- a/src/tests/integrationFixtures/aliasedMethod/schema.ts +++ b/src/tests/integrationFixtures/aliasedMethod/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull } from "graphql"; -import { someType as querySomeTypeResolver } from "./index"; +import { someType as querySomeTypeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const SomeTypeType: GraphQLObjectType = new GraphQLObjectType({ name: "SomeType", diff --git a/src/tests/integrationFixtures/complexDefaultInput/schema.ts b/src/tests/integrationFixtures/complexDefaultInput/schema.ts index 75984419..14bd0723 100644 --- a/src/tests/integrationFixtures/complexDefaultInput/schema.ts +++ b/src/tests/integrationFixtures/complexDefaultInput/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLInputObjectType } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const SomeObjType: GraphQLInputObjectType = new GraphQLInputObjectType({ name: "SomeObj", diff --git a/src/tests/integrationFixtures/complexPlurals/schema.ts b/src/tests/integrationFixtures/complexPlurals/schema.ts index 427df5e5..95051f06 100644 --- a/src/tests/integrationFixtures/complexPlurals/schema.ts +++ b/src/tests/integrationFixtures/complexPlurals/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLList, GraphQLNonNull, GraphQLString } from "graphql"; -import { arrayOfArrayOfPromises as queryArrayOfArrayOfPromisesResolver, arrayOfPromises as queryArrayOfPromisesResolver, asyncIterableOfArrayOfPromises as queryAsyncIterableOfArrayOfPromisesResolver } from "./index"; +import { arrayOfArrayOfPromises as queryArrayOfArrayOfPromisesResolver, arrayOfPromises as queryArrayOfPromisesResolver, asyncIterableOfArrayOfPromises as queryAsyncIterableOfArrayOfPromisesResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/connectionExample/index.ts b/src/tests/integrationFixtures/connectionExample/index.ts index 71c59e13..1f1db4c0 100644 --- a/src/tests/integrationFixtures/connectionExample/index.ts +++ b/src/tests/integrationFixtures/connectionExample/index.ts @@ -1,4 +1,4 @@ -import { Int } from "../../../Types"; +import { Int } from "../../../Types.js"; /** @gqlQueryField */ export function firstHundredIntegers(args: { diff --git a/src/tests/integrationFixtures/connectionExample/index.ts.expected.md b/src/tests/integrationFixtures/connectionExample/index.ts.expected.md index b7a5239c..0da561eb 100644 --- a/src/tests/integrationFixtures/connectionExample/index.ts.expected.md +++ b/src/tests/integrationFixtures/connectionExample/index.ts.expected.md @@ -3,7 +3,7 @@ ## Input ```ts title="connectionExample/index.ts" -import { Int } from "../../../Types"; +import { Int } from "../../../Types.js"; /** @gqlQueryField */ export function firstHundredIntegers(args: { diff --git a/src/tests/integrationFixtures/connectionExample/schema.ts b/src/tests/integrationFixtures/connectionExample/schema.ts index 826845a5..5d044b22 100644 --- a/src/tests/integrationFixtures/connectionExample/schema.ts +++ b/src/tests/integrationFixtures/connectionExample/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLList, GraphQLNonNull, GraphQLString, GraphQLInt, GraphQLBoolean } from "graphql"; -import { firstHundredIntegers as queryFirstHundredIntegersResolver } from "./index"; +import { firstHundredIntegers as queryFirstHundredIntegersResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const FirstHundredIntegersEdgeType: GraphQLObjectType = new GraphQLObjectType({ name: "FirstHundredIntegersEdge", diff --git a/src/tests/integrationFixtures/customScalarSerialization/index.ts b/src/tests/integrationFixtures/customScalarSerialization/index.ts index 0af029cd..3c592a51 100644 --- a/src/tests/integrationFixtures/customScalarSerialization/index.ts +++ b/src/tests/integrationFixtures/customScalarSerialization/index.ts @@ -1,4 +1,4 @@ -import type { SchemaConfig } from "./schema"; +import type { SchemaConfig } from "./schema.js"; /** @gqlScalar */ export type CustomScalar = number; diff --git a/src/tests/integrationFixtures/customScalarSerialization/index.ts.expected.md b/src/tests/integrationFixtures/customScalarSerialization/index.ts.expected.md index b46fd56b..e50c155e 100644 --- a/src/tests/integrationFixtures/customScalarSerialization/index.ts.expected.md +++ b/src/tests/integrationFixtures/customScalarSerialization/index.ts.expected.md @@ -3,7 +3,7 @@ ## Input ```ts title="customScalarSerialization/index.ts" -import type { SchemaConfig } from "./schema"; +import type { SchemaConfig } from "./schema.js"; /** @gqlScalar */ export type CustomScalar = number; diff --git a/src/tests/integrationFixtures/customScalarSerialization/schema.ts b/src/tests/integrationFixtures/customScalarSerialization/schema.ts index 2b07240a..9a5a0096 100644 --- a/src/tests/integrationFixtures/customScalarSerialization/schema.ts +++ b/src/tests/integrationFixtures/customScalarSerialization/schema.ts @@ -1,5 +1,5 @@ import type { GqlScalar } from "grats"; -import { type CustomScalar as CustomScalarInternal, hello as queryHelloResolver } from "./index"; +import { type CustomScalar as CustomScalarInternal, hello as queryHelloResolver } from "./index.js"; import { GraphQLSchema, GraphQLObjectType, GraphQLScalarType, GraphQLNonNull } from "graphql"; export type SchemaConfig = { scalars: { diff --git a/src/tests/integrationFixtures/deprecated/schema.ts b/src/tests/integrationFixtures/deprecated/schema.ts index 32ebbfc8..950a052f 100644 --- a/src/tests/integrationFixtures/deprecated/schema.ts +++ b/src/tests/integrationFixtures/deprecated/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { goodBye as queryGoodByeResolver, hello as queryHelloResolver } from "./index"; +import { goodBye as queryGoodByeResolver, hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/derivedContext/schema.ts b/src/tests/integrationFixtures/derivedContext/schema.ts index e569ba06..5c22045e 100644 --- a/src/tests/integrationFixtures/derivedContext/schema.ts +++ b/src/tests/integrationFixtures/derivedContext/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { hello as queryHelloResolver, derived } from "./index"; +import { hello as queryHelloResolver, derived } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/derivedContextAsync/schema.ts b/src/tests/integrationFixtures/derivedContextAsync/schema.ts index 44e8071b..160bd129 100644 --- a/src/tests/integrationFixtures/derivedContextAsync/schema.ts +++ b/src/tests/integrationFixtures/derivedContextAsync/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { derived, User as queryCurrentUserResolver, hello as queryHelloResolver, user as queryUserResolver } from "./index"; +import { derived, User as queryCurrentUserResolver, hello as queryHelloResolver, user as queryUserResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserType: GraphQLObjectType = new GraphQLObjectType({ name: "User", diff --git a/src/tests/integrationFixtures/enumDefault/schema.ts b/src/tests/integrationFixtures/enumDefault/schema.ts index 1e438ef0..c7d6a739 100644 --- a/src/tests/integrationFixtures/enumDefault/schema.ts +++ b/src/tests/integrationFixtures/enumDefault/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLEnumType } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const GreetingOptionsType: GraphQLEnumType = new GraphQLEnumType({ name: "GreetingOptions", diff --git a/src/tests/integrationFixtures/enumExport/enums.ts b/src/tests/integrationFixtures/enumExport/enums.ts index a1ba037b..2cfb6a11 100644 --- a/src/tests/integrationFixtures/enumExport/enums.ts +++ b/src/tests/integrationFixtures/enumExport/enums.ts @@ -3,7 +3,7 @@ * Do not manually edit. Regenerate by running `npx grats`. */ -import { Color as ColorEnum, Priority as PriorityEnum } from "./index"; +import { Color as ColorEnum, Priority as PriorityEnum } from "./index.js"; export const enums = { Color: ColorEnum, Priority: PriorityEnum diff --git a/src/tests/integrationFixtures/enumExport/schema.ts b/src/tests/integrationFixtures/enumExport/schema.ts index 04ebf080..702da93f 100644 --- a/src/tests/integrationFixtures/enumExport/schema.ts +++ b/src/tests/integrationFixtures/enumExport/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLEnumType } from "graphql"; -import { colorName as queryColorNameResolver, currentPriority as queryCurrentPriorityResolver, favoriteColor as queryFavoriteColorResolver } from "./index"; +import { colorName as queryColorNameResolver, currentPriority as queryCurrentPriorityResolver, favoriteColor as queryFavoriteColorResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const ColorType: GraphQLEnumType = new GraphQLEnumType({ name: "Color", diff --git a/src/tests/integrationFixtures/explicitNullPassedToArgWithDefault/schema.ts b/src/tests/integrationFixtures/explicitNullPassedToArgWithDefault/schema.ts index 4c389c46..7a631589 100644 --- a/src/tests/integrationFixtures/explicitNullPassedToArgWithDefault/schema.ts +++ b/src/tests/integrationFixtures/explicitNullPassedToArgWithDefault/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/functionField/schema.ts b/src/tests/integrationFixtures/functionField/schema.ts index 8f5023f1..fbeeee1d 100644 --- a/src/tests/integrationFixtures/functionField/schema.ts +++ b/src/tests/integrationFixtures/functionField/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/functionFieldRenamed/schema.ts b/src/tests/integrationFixtures/functionFieldRenamed/schema.ts index bd020a71..76c9322a 100644 --- a/src/tests/integrationFixtures/functionFieldRenamed/schema.ts +++ b/src/tests/integrationFixtures/functionFieldRenamed/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { notHello as queryHelloResolver } from "./index"; +import { notHello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/getAcessor/schema.ts b/src/tests/integrationFixtures/getAcessor/schema.ts index 876c0d4b..1d879970 100644 --- a/src/tests/integrationFixtures/getAcessor/schema.ts +++ b/src/tests/integrationFixtures/getAcessor/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { me as queryMeResolver } from "./index"; +import { me as queryMeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserType: GraphQLObjectType = new GraphQLObjectType({ name: "User", diff --git a/src/tests/integrationFixtures/inputTypeOneOf/index.ts b/src/tests/integrationFixtures/inputTypeOneOf/index.ts index c22f9570..ba4bf238 100644 --- a/src/tests/integrationFixtures/inputTypeOneOf/index.ts +++ b/src/tests/integrationFixtures/inputTypeOneOf/index.ts @@ -1,4 +1,4 @@ -import { ID } from "../../.."; +import { ID } from "../../../Types.js"; /** @gqlInput */ type UserPayload = { diff --git a/src/tests/integrationFixtures/inputTypeOneOf/index.ts.expected.md b/src/tests/integrationFixtures/inputTypeOneOf/index.ts.expected.md index acce951e..aa75b1d5 100644 --- a/src/tests/integrationFixtures/inputTypeOneOf/index.ts.expected.md +++ b/src/tests/integrationFixtures/inputTypeOneOf/index.ts.expected.md @@ -3,7 +3,7 @@ ## Input ```ts title="inputTypeOneOf/index.ts" -import { ID } from "../../.."; +import { ID } from "../../../Types.js"; /** @gqlInput */ type UserPayload = { diff --git a/src/tests/integrationFixtures/inputTypeOneOf/schema.ts b/src/tests/integrationFixtures/inputTypeOneOf/schema.ts index a1fbb818..c7139465 100644 --- a/src/tests/integrationFixtures/inputTypeOneOf/schema.ts +++ b/src/tests/integrationFixtures/inputTypeOneOf/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLInputObjectType, GraphQLID } from "graphql"; -import { greet as queryGreetResolver } from "./index"; +import { greet as queryGreetResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserPayloadType: GraphQLInputObjectType = new GraphQLInputObjectType({ name: "UserPayload", diff --git a/src/tests/integrationFixtures/killsParentOnException/schema.ts b/src/tests/integrationFixtures/killsParentOnException/schema.ts index 865fa985..2e8e0ef7 100644 --- a/src/tests/integrationFixtures/killsParentOnException/schema.ts +++ b/src/tests/integrationFixtures/killsParentOnException/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLNonNull, GraphQLString } from "graphql"; -import { me as queryMeResolver } from "./index"; +import { me as queryMeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserType: GraphQLObjectType = new GraphQLObjectType({ name: "User", diff --git a/src/tests/integrationFixtures/killsParentOnExceptionOnQuery/schema.ts b/src/tests/integrationFixtures/killsParentOnExceptionOnQuery/schema.ts index 32856bb2..e7f11645 100644 --- a/src/tests/integrationFixtures/killsParentOnExceptionOnQuery/schema.ts +++ b/src/tests/integrationFixtures/killsParentOnExceptionOnQuery/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLNonNull, GraphQLString } from "graphql"; -import { alwaysThrowsKillsParentOnException as queryAlwaysThrowsKillsParentOnExceptionResolver, hello as queryHelloResolver } from "./index"; +import { alwaysThrowsKillsParentOnException as queryAlwaysThrowsKillsParentOnExceptionResolver, hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/killsParentOnExceptionReturnsNull/schema.ts b/src/tests/integrationFixtures/killsParentOnExceptionReturnsNull/schema.ts index 865fa985..2e8e0ef7 100644 --- a/src/tests/integrationFixtures/killsParentOnExceptionReturnsNull/schema.ts +++ b/src/tests/integrationFixtures/killsParentOnExceptionReturnsNull/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLNonNull, GraphQLString } from "graphql"; -import { me as queryMeResolver } from "./index"; +import { me as queryMeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserType: GraphQLObjectType = new GraphQLObjectType({ name: "User", diff --git a/src/tests/integrationFixtures/nonNullArgWithDefault/schema.ts b/src/tests/integrationFixtures/nonNullArgWithDefault/schema.ts index 61558fa9..15fd4a35 100644 --- a/src/tests/integrationFixtures/nonNullArgWithDefault/schema.ts +++ b/src/tests/integrationFixtures/nonNullArgWithDefault/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/nonNullEnumDefault/schema.ts b/src/tests/integrationFixtures/nonNullEnumDefault/schema.ts index 81aef994..f3c3706c 100644 --- a/src/tests/integrationFixtures/nonNullEnumDefault/schema.ts +++ b/src/tests/integrationFixtures/nonNullEnumDefault/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLEnumType } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const GreetingOptionsType: GraphQLEnumType = new GraphQLEnumType({ name: "GreetingOptions", diff --git a/src/tests/integrationFixtures/nonNullableListIncludesNull/schema.ts b/src/tests/integrationFixtures/nonNullableListIncludesNull/schema.ts index b2f5570c..9f311f14 100644 --- a/src/tests/integrationFixtures/nonNullableListIncludesNull/schema.ts +++ b/src/tests/integrationFixtures/nonNullableListIncludesNull/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLList, GraphQLNonNull, GraphQLString } from "graphql"; -import { someList as querySomeListResolver, someListOfLists as querySomeListOfListsResolver } from "./index"; +import { someList as querySomeListResolver, someListOfLists as querySomeListOfListsResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/numericID/index.ts b/src/tests/integrationFixtures/numericID/index.ts index 11c29e11..7b216dd4 100644 --- a/src/tests/integrationFixtures/numericID/index.ts +++ b/src/tests/integrationFixtures/numericID/index.ts @@ -1,4 +1,4 @@ -import { ID } from "../../../Types"; +import { ID } from "../../../Types.js"; /** * Validating that graphql-js will coerce a numeric ID to a string. diff --git a/src/tests/integrationFixtures/numericID/index.ts.expected.md b/src/tests/integrationFixtures/numericID/index.ts.expected.md index a4f11feb..ecd1efe2 100644 --- a/src/tests/integrationFixtures/numericID/index.ts.expected.md +++ b/src/tests/integrationFixtures/numericID/index.ts.expected.md @@ -3,7 +3,7 @@ ## Input ```ts title="numericID/index.ts" -import { ID } from "../../../Types"; +import { ID } from "../../../Types.js"; /** * Validating that graphql-js will coerce a numeric ID to a string. diff --git a/src/tests/integrationFixtures/numericID/schema.ts b/src/tests/integrationFixtures/numericID/schema.ts index feef4b50..3675efd9 100644 --- a/src/tests/integrationFixtures/numericID/schema.ts +++ b/src/tests/integrationFixtures/numericID/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLID } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/parameterPropertyRenamed/schema.ts b/src/tests/integrationFixtures/parameterPropertyRenamed/schema.ts index d5eb003a..4f45014c 100644 --- a/src/tests/integrationFixtures/parameterPropertyRenamed/schema.ts +++ b/src/tests/integrationFixtures/parameterPropertyRenamed/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { me as queryMeResolver } from "./index"; +import { me as queryMeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const UserType: GraphQLObjectType = new GraphQLObjectType({ name: "User", diff --git a/src/tests/integrationFixtures/positionalNonNullArgWithDefault/schema.ts b/src/tests/integrationFixtures/positionalNonNullArgWithDefault/schema.ts index 16ebb076..a6dd7fa4 100644 --- a/src/tests/integrationFixtures/positionalNonNullArgWithDefault/schema.ts +++ b/src/tests/integrationFixtures/positionalNonNullArgWithDefault/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLNonNull } from "graphql"; -import { hello as queryHelloResolver } from "./index"; +import { hello as queryHelloResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/promiseOfPromise/schema.ts b/src/tests/integrationFixtures/promiseOfPromise/schema.ts index 529efcde..aad551ef 100644 --- a/src/tests/integrationFixtures/promiseOfPromise/schema.ts +++ b/src/tests/integrationFixtures/promiseOfPromise/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { promiseOfPromise as queryPromiseOfPromiseResolver, promiseOfPromisePromise as queryPromiseOfPromisePromiseResolver } from "./index"; +import { promiseOfPromise as queryPromiseOfPromiseResolver, promiseOfPromisePromise as queryPromiseOfPromisePromiseResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/resolveTypeViaClass/index.ts b/src/tests/integrationFixtures/resolveTypeViaClass/index.ts index e5f7fc59..62325986 100644 --- a/src/tests/integrationFixtures/resolveTypeViaClass/index.ts +++ b/src/tests/integrationFixtures/resolveTypeViaClass/index.ts @@ -1,4 +1,4 @@ -import { ID } from "../../../Types"; +import { ID } from "../../../Types.js"; /** @gqlInterface */ interface GqlNode { diff --git a/src/tests/integrationFixtures/resolveTypeViaClass/index.ts.expected.md b/src/tests/integrationFixtures/resolveTypeViaClass/index.ts.expected.md index eec96fb9..040cb61f 100644 --- a/src/tests/integrationFixtures/resolveTypeViaClass/index.ts.expected.md +++ b/src/tests/integrationFixtures/resolveTypeViaClass/index.ts.expected.md @@ -3,7 +3,7 @@ ## Input ```ts title="resolveTypeViaClass/index.ts" -import { ID } from "../../../Types"; +import { ID } from "../../../Types.js"; /** @gqlInterface */ interface GqlNode { diff --git a/src/tests/integrationFixtures/resolveTypeViaClass/schema.ts b/src/tests/integrationFixtures/resolveTypeViaClass/schema.ts index 745b0fe0..0e486ce2 100644 --- a/src/tests/integrationFixtures/resolveTypeViaClass/schema.ts +++ b/src/tests/integrationFixtures/resolveTypeViaClass/schema.ts @@ -1,6 +1,6 @@ -import DefaultNodeClass from "./index"; +import DefaultNodeClass from "./index.js"; import { GraphQLSchema, GraphQLObjectType, GraphQLInterfaceType, GraphQLID, GraphQLNonNull } from "graphql"; -import { Guest as GuestClass, ThisNameGetsIgnored as RenamedNodeClass, User as UserClass, node as queryNodeResolver } from "./index"; +import { Guest as GuestClass, ThisNameGetsIgnored as RenamedNodeClass, User as UserClass, node as queryNodeResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const GqlNodeType: GraphQLInterfaceType = new GraphQLInterfaceType({ name: "GqlNode", diff --git a/src/tests/integrationFixtures/resolverErrorElidedToNull/schema.ts b/src/tests/integrationFixtures/resolverErrorElidedToNull/schema.ts index 3fb437da..3edc4e6e 100644 --- a/src/tests/integrationFixtures/resolverErrorElidedToNull/schema.ts +++ b/src/tests/integrationFixtures/resolverErrorElidedToNull/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLObjectType, GraphQLString } from "graphql"; -import { alwaysThrows as queryAlwaysThrowsResolver } from "./index"; +import { alwaysThrows as queryAlwaysThrowsResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/skipInclude/schema.ts b/src/tests/integrationFixtures/skipInclude/schema.ts index 220cec17..92da08c8 100644 --- a/src/tests/integrationFixtures/skipInclude/schema.ts +++ b/src/tests/integrationFixtures/skipInclude/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLDirective, DirectiveLocation, specifiedDirectives, GraphQLObjectType, GraphQLString } from "graphql"; -import { greeting as queryGreetingResolver } from "./index"; +import { greeting as queryGreetingResolver } from "./index.js"; export function getSchema(): GraphQLSchema { const QueryType: GraphQLObjectType = new GraphQLObjectType({ name: "Query", diff --git a/src/tests/integrationFixtures/strictSemanticNullability/schema.ts b/src/tests/integrationFixtures/strictSemanticNullability/schema.ts index b57d75f7..c5c2b028 100644 --- a/src/tests/integrationFixtures/strictSemanticNullability/schema.ts +++ b/src/tests/integrationFixtures/strictSemanticNullability/schema.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, GraphQLDirective, DirectiveLocation, GraphQLList, GraphQLInt, specifiedDirectives, GraphQLObjectType, GraphQLString, defaultFieldResolver, GraphQLInterfaceType } from "graphql"; -import { actuallyReturnsAsyncNull as queryActuallyReturnsAsyncNullResolver, actuallyReturnsNull as queryActuallyReturnsNullResolver, me as queryMeResolver, names as subscriptionNamesResolver } from "./index"; +import { actuallyReturnsAsyncNull as queryActuallyReturnsAsyncNullResolver, actuallyReturnsNull as queryActuallyReturnsNullResolver, me as queryMeResolver, names as subscriptionNamesResolver } from "./index.js"; async function assertNonNull(value: T | Promise): Promise { const awaited = await value; if (awaited == null) diff --git a/src/tests/test.ts b/src/tests/test.ts index 367f2a8c..b72927a8 100644 --- a/src/tests/test.ts +++ b/src/tests/test.ts @@ -1,9 +1,9 @@ import * as path from "path"; -import TestRunner, { Transformer, TransformerResult } from "./TestRunner"; +import TestRunner, { Transformer, TransformerResult } from "./TestRunner.js"; import { buildSchemaAndDocResult, buildSchemaAndDocResultWithHost, -} from "../lib"; +} from "../lib.js"; import * as ts from "typescript"; import { buildASTSchema, @@ -14,25 +14,25 @@ import { specifiedScalarTypes, } from "graphql"; import { Command } from "commander"; -import { locate } from "../Locate"; -import { gqlErr, ReportableDiagnostics } from "../utils/DiagnosticError"; +import { locate } from "../Locate.js"; +import { gqlErr, ReportableDiagnostics } from "../utils/DiagnosticError.js"; import { readFileSync, writeFileSync } from "fs"; -import { codegen } from "../codegen/schemaCodegen"; -import { printEnumsModule } from "../printSchema"; +import { codegen } from "../codegen/schemaCodegen.js"; +import { printEnumsModule } from "../printSchema.js"; import { diff } from "jest-diff"; import * as semver from "semver"; import { GratsConfig, ParsedCommandLineGrats, validateGratsOptions, -} from "../gratsConfig"; -import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives"; -import { applySDLHeader, applyTypeScriptHeader } from "../printSchema"; -import { extend } from "../utils/helpers"; -import { Result, ok, err } from "../utils/Result"; -import { applyFixes } from "../fixFixable"; -import { writeTypeScriptTypeToDisk } from "../../scripts/buildConfigTypes"; -import { Markdown } from "./Markdown"; +} from "../gratsConfig.js"; +import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives.js"; +import { applySDLHeader, applyTypeScriptHeader } from "../printSchema.js"; +import { extend } from "../utils/helpers.js"; +import { Result, ok, err } from "../utils/Result.js"; +import { applyFixes } from "../fixFixable.js"; +import { writeTypeScriptTypeToDisk } from "../../scripts/buildConfigTypes.js"; +import { Markdown } from "./Markdown.js"; writeTypeScriptTypeToDisk(); @@ -281,6 +281,7 @@ const testDirs: TestDir[] = [ const firstLine = code.split("\n")[0]; let config: Partial = { nullableByDefault: true, + importModuleSpecifierEnding: ".js", }; if (firstLine.startsWith("// {")) { const json = firstLine.slice(3); diff --git a/src/transforms/addImplicitRootTypes.ts b/src/transforms/addImplicitRootTypes.ts index ee1161c4..0c8d5162 100644 --- a/src/transforms/addImplicitRootTypes.ts +++ b/src/transforms/addImplicitRootTypes.ts @@ -5,9 +5,9 @@ import { NameNode, ObjectTypeDefinitionNode, } from "graphql"; -import { OPERATION_TYPES } from "../Extractor"; -import { nullThrows, TsIdentifier } from "../utils/helpers"; -import { visitDefinitions } from "../utils/visitor"; +import { OPERATION_TYPES } from "../Extractor.js"; +import { nullThrows, TsIdentifier } from "../utils/helpers.js"; +import { visitDefinitions } from "../utils/visitor.js"; /** * Ensure any root types which have been extended with `@gqlQueryField` and diff --git a/src/transforms/addInterfaceFields.ts b/src/transforms/addInterfaceFields.ts index b2ecd37c..831f5d9b 100644 --- a/src/transforms/addInterfaceFields.ts +++ b/src/transforms/addInterfaceFields.ts @@ -1,17 +1,17 @@ -import * as E from "../Errors"; +import * as E from "../Errors.js"; import * as ts from "typescript"; import { DefinitionNode, Kind, ObjectTypeExtensionNode } from "graphql"; -import { TypeContext } from "../TypeContext"; +import { TypeContext } from "../TypeContext.js"; import { DiagnosticResult, DiagnosticsResult, gqlErr, gqlRelated, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import { InterfaceMap, computeInterfaceMap } from "../InterfaceGraph"; -import { extend, nullThrows, uniqueId } from "../utils/helpers"; -import { FIELD_TAG } from "../Extractor"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import { InterfaceMap, computeInterfaceMap } from "../InterfaceGraph.js"; +import { extend, nullThrows, uniqueId } from "../utils/helpers.js"; +import { FIELD_TAG } from "../Extractor.js"; /** * Grats allows you to define GraphQL fields on TypeScript interfaces using diff --git a/src/transforms/applyDefaultNullability.ts b/src/transforms/applyDefaultNullability.ts index d8faf227..815f549d 100644 --- a/src/transforms/applyDefaultNullability.ts +++ b/src/transforms/applyDefaultNullability.ts @@ -1,15 +1,15 @@ import { DocumentNode, Kind, visit } from "graphql"; -import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; +import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; import * as ts from "typescript"; -import * as E from "../Errors"; +import * as E from "../Errors.js"; import { addSemanticNonNullDirective, makeSemanticNonNullDirective, -} from "../publicDirectives"; -import { GraphQLConstructor } from "../GraphQLConstructor"; -import { GratsConfig } from "../gratsConfig"; -import { nullThrows } from "../utils/helpers"; +} from "../publicDirectives.js"; +import { GraphQLConstructor } from "../GraphQLConstructor.js"; +import { GratsConfig } from "../gratsConfig.js"; +import { nullThrows } from "../utils/helpers.js"; /** * Grats has options to make all fields nullable by default to conform to diff --git a/src/transforms/filterNonGqlInterfaces.ts b/src/transforms/filterNonGqlInterfaces.ts index b0047674..1a63b4c4 100644 --- a/src/transforms/filterNonGqlInterfaces.ts +++ b/src/transforms/filterNonGqlInterfaces.ts @@ -1,5 +1,5 @@ import { DefinitionNode, Kind, NamedTypeNode } from "graphql"; -import { TypeContext } from "../TypeContext"; +import { TypeContext } from "../TypeContext.js"; type InterfaceHaver = { readonly interfaces?: ReadonlyArray; diff --git a/src/transforms/makeResolverSignature.ts b/src/transforms/makeResolverSignature.ts index 8a215e13..7ecd3f60 100644 --- a/src/transforms/makeResolverSignature.ts +++ b/src/transforms/makeResolverSignature.ts @@ -5,9 +5,9 @@ import { Metadata, FieldDefinition, ContextArgs, -} from "../metadata"; -import { invariant, nullThrows } from "../utils/helpers"; -import { ResolverArgument as DirectiveResolverArgument } from "../resolverSignature"; +} from "../metadata.js"; +import { invariant, nullThrows } from "../utils/helpers.js"; +import { ResolverArgument as DirectiveResolverArgument } from "../resolverSignature.js"; export function makeResolverSignature(documentAst: DocumentNode): Metadata { const resolvers: Metadata = { diff --git a/src/transforms/mergeExtensions.ts b/src/transforms/mergeExtensions.ts index 1b801078..a2f06d31 100644 --- a/src/transforms/mergeExtensions.ts +++ b/src/transforms/mergeExtensions.ts @@ -1,6 +1,6 @@ import { DocumentNode, FieldDefinitionNode } from "graphql"; -import { extend } from "../utils/helpers"; -import { mapDefinitions } from "../utils/visitor"; +import { extend } from "../utils/helpers.js"; +import { mapDefinitions } from "../utils/visitor.js"; /** * Takes every example of `extend type Foo` and `extend interface Foo` and diff --git a/src/transforms/resolveResolverParams.ts b/src/transforms/resolveResolverParams.ts index f4e31346..37b929e5 100644 --- a/src/transforms/resolveResolverParams.ts +++ b/src/transforms/resolveResolverParams.ts @@ -10,25 +10,25 @@ import { DerivedResolverDefinition, ITypeContext, UNRESOLVED_REFERENCE_NAME, -} from "../TypeContext"; -import { err, ok } from "../utils/Result"; +} from "../TypeContext.js"; +import { err, ok } from "../utils/Result.js"; import { DiagnosticsResult, FixableDiagnosticWithLocation, gqlErr, tsErr, tsRelated, -} from "../utils/DiagnosticError"; -import { invariant, nullThrows } from "../utils/helpers"; +} from "../utils/DiagnosticError.js"; +import { invariant, nullThrows } from "../utils/helpers.js"; import { ContextResolverArgument, DerivedContextResolverArgument, NamedResolverArgument, ResolverArgument, UnresolvedResolverArgument, -} from "../resolverSignature"; -import * as E from "../Errors"; -import { GraphQLConstructor } from "../GraphQLConstructor"; +} from "../resolverSignature.js"; +import * as E from "../Errors.js"; +import { GraphQLConstructor } from "../GraphQLConstructor.js"; export function resolveResolverParams( ctx: ITypeContext, diff --git a/src/transforms/resolveTypes.ts b/src/transforms/resolveTypes.ts index 623a528a..abdab57c 100644 --- a/src/transforms/resolveTypes.ts +++ b/src/transforms/resolveTypes.ts @@ -12,19 +12,19 @@ import { UnionTypeDefinitionNode, visit, } from "graphql"; -import { loc } from "../GraphQLConstructor"; -import { TypeContext } from "../TypeContext"; +import { loc } from "../GraphQLConstructor.js"; +import { TypeContext } from "../TypeContext.js"; import * as ts from "typescript"; -import { err, ok } from "../utils/Result"; +import { err, ok } from "../utils/Result.js"; import { DiagnosticResult, DiagnosticsResult, TsLocatableNode, gqlErr, tsErr, -} from "../utils/DiagnosticError"; -import { extend, invariant, nullThrows } from "../utils/helpers"; -import * as E from "../Errors"; +} from "../utils/DiagnosticError.js"; +import { extend, invariant, nullThrows } from "../utils/helpers.js"; +import * as E from "../Errors.js"; type Template = { declarationTemplate: TypeDefinitionNode; diff --git a/src/transforms/snapshotsFromProgram.ts b/src/transforms/snapshotsFromProgram.ts index a5c6f85f..b61b03ff 100644 --- a/src/transforms/snapshotsFromProgram.ts +++ b/src/transforms/snapshotsFromProgram.ts @@ -1,10 +1,10 @@ import * as ts from "typescript"; -import { ParsedCommandLineGrats } from "../gratsConfig"; -import { ExtractionSnapshot, extract } from "../Extractor"; -import { DiagnosticsWithoutLocationResult } from "../utils/DiagnosticError"; -import { collectResults } from "../utils/Result"; -import { err } from "../utils/Result"; -import { extend } from "../utils/helpers"; +import { ParsedCommandLineGrats } from "../gratsConfig.js"; +import { ExtractionSnapshot, extract } from "../Extractor.js"; +import { DiagnosticsWithoutLocationResult } from "../utils/DiagnosticError.js"; +import { collectResults } from "../utils/Result.js"; +import { err } from "../utils/Result.js"; +import { extend } from "../utils/helpers.js"; const TAG_REGEX = /@(gql)|(killsParentOnException)/i; diff --git a/src/transforms/sortSchemaAst.ts b/src/transforms/sortSchemaAst.ts index 265163fb..f79c0af6 100644 --- a/src/transforms/sortSchemaAst.ts +++ b/src/transforms/sortSchemaAst.ts @@ -1,5 +1,5 @@ import { DefinitionNode, DocumentNode, Kind, NameNode, visit } from "graphql"; -import { naturalCompare } from "../utils/naturalCompare"; +import { naturalCompare } from "../utils/naturalCompare.js"; /* * Similar to lexicographicSortSchema from graphql-js but applied against an AST diff --git a/src/tsPlugin/initTsPlugin.ts b/src/tsPlugin/initTsPlugin.ts index a691f6a4..3bfedab5 100644 --- a/src/tsPlugin/initTsPlugin.ts +++ b/src/tsPlugin/initTsPlugin.ts @@ -1,8 +1,8 @@ import { version as gratsTsVersion } from "typescript"; import type * as TS from "typescript/lib/tsserverlibrary"; -import { extract } from "../Extractor"; -import { FAKE_ERROR_CODE } from "../utils/DiagnosticError"; -import { nullThrows } from "../utils/helpers"; +import { extract } from "../Extractor.js"; +import { FAKE_ERROR_CODE } from "../utils/DiagnosticError.js"; +import { nullThrows } from "../utils/helpers.js"; // An experimental plugin for TypeScript that adds a new language service // which reports diagnostics for the current file. Currently it only reports diff --git a/src/utils/DiagnosticError.ts b/src/utils/DiagnosticError.ts index 39472662..c5cc7567 100644 --- a/src/utils/DiagnosticError.ts +++ b/src/utils/DiagnosticError.ts @@ -1,6 +1,6 @@ import { GraphQLError, Location, Source } from "graphql"; import * as ts from "typescript"; -import { Result } from "./Result"; +import { Result } from "./Result.js"; export type FixableDiagnostic = ts.Diagnostic & { fix?: ts.CodeFixAction; diff --git a/src/utils/Result.ts b/src/utils/Result.ts index 9d205649..63fa6d1e 100644 --- a/src/utils/Result.ts +++ b/src/utils/Result.ts @@ -1,5 +1,5 @@ import * as ts from "typescript"; -import { DiagnosticsResult } from "./DiagnosticError"; +import { DiagnosticsResult } from "./DiagnosticError.js"; export type Result = Ok | Err; diff --git a/src/validations/customSpecValidations.ts b/src/validations/customSpecValidations.ts index a9b8fece..dacc1f1a 100644 --- a/src/validations/customSpecValidations.ts +++ b/src/validations/customSpecValidations.ts @@ -1,8 +1,8 @@ import { DocumentNode, Kind } from "graphql"; -import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError"; -import { ok } from "../utils/Result"; +import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError.js"; +import { ok } from "../utils/Result.js"; import { DiagnosticWithLocation } from "typescript"; -import * as E from "../Errors"; +import * as E from "../Errors.js"; /** * Grats depends upon graphql-js for implementing spec-compliant GraphQL schema diff --git a/src/validations/validateAsyncIterable.ts b/src/validations/validateAsyncIterable.ts index caa1c762..df32e216 100644 --- a/src/validations/validateAsyncIterable.ts +++ b/src/validations/validateAsyncIterable.ts @@ -10,9 +10,9 @@ import { TypeNode, visit, } from "graphql"; -import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import * as E from "../Errors"; +import { DiagnosticsResult, gqlErr } from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import * as E from "../Errors.js"; /** * Ensure that all fields on `Subscription` return an AsyncIterable and transform diff --git a/src/validations/validateDirectiveArguments.ts b/src/validations/validateDirectiveArguments.ts index cbec4518..a7cdffc7 100644 --- a/src/validations/validateDirectiveArguments.ts +++ b/src/validations/validateDirectiveArguments.ts @@ -15,9 +15,9 @@ import { DiagnosticsWithoutLocationResult, gqlErr, gqlRelated, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import { nullThrows } from "../utils/helpers"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import { nullThrows } from "../utils/helpers.js"; /** * Surprisingly, the GraphQL spec (and therefore graphql-js) does not enforce diff --git a/src/validations/validateDuplicateContextOrInfo.ts b/src/validations/validateDuplicateContextOrInfo.ts index f0dac5e5..17aa20e6 100644 --- a/src/validations/validateDuplicateContextOrInfo.ts +++ b/src/validations/validateDuplicateContextOrInfo.ts @@ -1,12 +1,12 @@ -import { DeclarationDefinition, NameDefinition } from "../TypeContext"; -import { err, ok } from "../utils/Result"; +import { DeclarationDefinition, NameDefinition } from "../TypeContext.js"; +import { err, ok } from "../utils/Result.js"; import { DiagnosticsResult, FixableDiagnosticWithLocation, gqlErr, gqlRelated, -} from "../utils/DiagnosticError"; -import * as E from "../Errors"; +} from "../utils/DiagnosticError.js"; +import * as E from "../Errors.js"; export function validateDuplicateContextOrInfo( definitions: Iterable, diff --git a/src/validations/validateMergedInterfaces.ts b/src/validations/validateMergedInterfaces.ts index 08630d9c..0e315fc9 100644 --- a/src/validations/validateMergedInterfaces.ts +++ b/src/validations/validateMergedInterfaces.ts @@ -1,11 +1,11 @@ import * as ts from "typescript"; -import * as E from "../Errors"; +import * as E from "../Errors.js"; import { DiagnosticsWithoutLocationResult, tsErr, tsRelated, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; /** * Prevent using merged interfaces as GraphQL interfaces. diff --git a/src/validations/validateSemanticNullability.ts b/src/validations/validateSemanticNullability.ts index de126343..36a52718 100644 --- a/src/validations/validateSemanticNullability.ts +++ b/src/validations/validateSemanticNullability.ts @@ -9,11 +9,11 @@ import { DiagnosticsWithoutLocationResult, gqlErr, gqlRelated, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import { GratsConfig } from "../gratsConfig"; -import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives"; -import { astNode } from "../utils/helpers"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import { GratsConfig } from "../gratsConfig.js"; +import { SEMANTIC_NON_NULL_DIRECTIVE } from "../publicDirectives.js"; +import { astNode } from "../utils/helpers.js"; /** * Ensure that all semantically non-nullable fields on an interface are also diff --git a/src/validations/validateSomeTypesAreDefined.ts b/src/validations/validateSomeTypesAreDefined.ts index 112ab4b7..570ede3c 100644 --- a/src/validations/validateSomeTypesAreDefined.ts +++ b/src/validations/validateSomeTypesAreDefined.ts @@ -2,9 +2,9 @@ import { GraphQLNamedType, GraphQLSchema } from "graphql"; import { DiagnosticsWithoutLocationResult, locationlessErr, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import * as E from "../Errors"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import * as E from "../Errors.js"; /** * We want to support a "getting started" experience where users can run `npx diff --git a/src/validations/validateTypenames.ts b/src/validations/validateTypenames.ts index 87efedc8..586fee32 100644 --- a/src/validations/validateTypenames.ts +++ b/src/validations/validateTypenames.ts @@ -10,10 +10,10 @@ import { DiagnosticsWithoutLocationResult, gqlErr, gqlRelated, -} from "../utils/DiagnosticError"; -import { err, ok } from "../utils/Result"; -import { nullThrows } from "../utils/helpers"; -import * as E from "../Errors"; +} from "../utils/DiagnosticError.js"; +import { err, ok } from "../utils/Result.js"; +import { nullThrows } from "../utils/helpers.js"; +import * as E from "../Errors.js"; /** * Ensure that every type which implements an interface or is a member of a diff --git a/tsconfig.json b/tsconfig.json index 0964f7d3..aedd5027 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,10 @@ { - // Most ts-node options can be specified here using their programmatic names. - "ts-node": { - // It is faster to skip typechecking. - // Remove if you want ts-node to do typechecking. - "transpileOnly": true, - "files": true, - "compilerOptions": { - // compilerOptions specified here will override those declared below, - // but *only* in ts-node. Useful if you want ts-node and tsc to use - // different options with a single tsconfig.json. - } - }, "grats": { "nullableByDefault": false }, "compilerOptions": { "skipLibCheck": true, - "lib": ["es2017"], - // typescript options here + "lib": ["es2020"], "experimentalDecorators": true, "outDir": "dist", "downlevelIteration": true, @@ -25,6 +12,8 @@ "declaration": true, "resolveJsonModule": true, "strictPropertyInitialization": true, + "module": "nodenext", + "moduleResolution": "nodenext", "paths": { // For tests "grats": ["./src/index.ts"] diff --git a/website/plugins/webpack.js b/website/plugins/webpack.js index 39a266cd..e3f4c6a5 100644 --- a/website/plugins/webpack.js +++ b/website/plugins/webpack.js @@ -9,6 +9,10 @@ module.exports = function (_context, _options) { fallback: { path: require.resolve("path-browserify"), }, + // Map .js extensions to .ts for ESM-style imports in TypeScript source + extensionAlias: { + ".js": [".ts", ".tsx", ".js"], + }, }, node: { __dirname: "mock",