diff --git a/.changeset/bright-pots-pretend.md b/.changeset/bright-pots-pretend.md
new file mode 100644
index 00000000000..dfe2ae81b2a
--- /dev/null
+++ b/.changeset/bright-pots-pretend.md
@@ -0,0 +1,5 @@
+---
+'@keystone-6/core': minor
+---
+
+Renames `.keystone/types` to `.keystone` and adds `graphql` export to `.keystone` that is the same as the `graphql` export from `@keystone-6/core` but uses the specific generated context type for the project
diff --git a/docs/pages/docs/walkthroughs/embedded-mode-with-sqlite-nextjs.mdx b/docs/pages/docs/walkthroughs/embedded-mode-with-sqlite-nextjs.mdx
index 84699e4cc62..b81b931c648 100644
--- a/docs/pages/docs/walkthroughs/embedded-mode-with-sqlite-nextjs.mdx
+++ b/docs/pages/docs/walkthroughs/embedded-mode-with-sqlite-nextjs.mdx
@@ -101,7 +101,7 @@ To create and edit blog records in Keystone’s Admin UI, add a `keystone.ts` [c
import { config, list } from '@keystone-6/core';
import { text } from '@keystone-6/core/fields';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
const Post: Lists.Post = list({
fields: {
@@ -186,7 +186,7 @@ import Link from 'next/link';
// Import the generated Lists API and types from Keystone
import { query } from '.keystone/api';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
type Post = {
id: string;
@@ -236,7 +236,7 @@ import { GetStaticPathsResult, GetStaticPropsContext, InferGetStaticPropsType }
import Link from 'next/link';
import { query } from '.keystone/api';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
type Post = {
id: string;
diff --git a/examples/basic/schema.ts b/examples/basic/schema.ts
index e5d2a2a042d..6e7081e5dc8 100644
--- a/examples/basic/schema.ts
+++ b/examples/basic/schema.ts
@@ -12,7 +12,7 @@ import {
} from '@keystone-6/core/fields';
import { document } from '@keystone-6/fields-document';
import { v4 } from 'uuid';
-import * as Keystone from '.keystone/types';
+import * as Keystone from '.keystone';
type AccessArgs = {
session?: {
diff --git a/examples/blog/keystone.ts b/examples/blog/keystone.ts
index 163766aaa97..f002824fcec 100644
--- a/examples/blog/keystone.ts
+++ b/examples/blog/keystone.ts
@@ -1,7 +1,7 @@
import { config } from '@keystone-6/core';
import { lists } from './schema';
import { insertSeedData } from './seed-data';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
export default config({
db: {
diff --git a/examples/blog/seed-data/index.ts b/examples/blog/seed-data/index.ts
index 747ca56aa88..d7fead2a98c 100644
--- a/examples/blog/seed-data/index.ts
+++ b/examples/blog/seed-data/index.ts
@@ -1,5 +1,5 @@
import { authors, posts } from './data';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
type AuthorProps = {
name: string;
diff --git a/examples/default-values/schema.ts b/examples/default-values/schema.ts
index 854e2edec51..d3f5345b6e8 100644
--- a/examples/default-values/schema.ts
+++ b/examples/default-values/schema.ts
@@ -1,7 +1,7 @@
import { list } from '@keystone-6/core';
import { checkbox, relationship, text, timestamp } from '@keystone-6/core/fields';
import { select } from '@keystone-6/core/fields';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
export const lists: Lists = {
Task: list({
diff --git a/examples/ecommerce/mutations/addToCart.ts b/examples/ecommerce/mutations/addToCart.ts
index 08756d4cf90..a32b05daa64 100644
--- a/examples/ecommerce/mutations/addToCart.ts
+++ b/examples/ecommerce/mutations/addToCart.ts
@@ -1,5 +1,5 @@
import { Session } from '../types';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
async function addToCart(
root: any,
diff --git a/examples/ecommerce/mutations/checkout.ts b/examples/ecommerce/mutations/checkout.ts
index 0e7b0819983..018449ccb68 100644
--- a/examples/ecommerce/mutations/checkout.ts
+++ b/examples/ecommerce/mutations/checkout.ts
@@ -1,4 +1,4 @@
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
// import stripeConfig from '../lib/stripe';
diff --git a/examples/ecommerce/schemas/Order.ts b/examples/ecommerce/schemas/Order.ts
index 8f5f3d96d83..81323e8d709 100644
--- a/examples/ecommerce/schemas/Order.ts
+++ b/examples/ecommerce/schemas/Order.ts
@@ -1,7 +1,7 @@
import { integer, text, relationship, virtual } from '@keystone-6/core/fields';
import { list, graphql } from '@keystone-6/core';
import { isSignedIn, rules } from '../access';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
diff --git a/examples/ecommerce/tests/mutations.test.ts b/examples/ecommerce/tests/mutations.test.ts
index 12758703d8c..192818086df 100644
--- a/examples/ecommerce/tests/mutations.test.ts
+++ b/examples/ecommerce/tests/mutations.test.ts
@@ -1,6 +1,6 @@
import { setupTestRunner } from '@keystone-6/core/testing';
import config from '../keystone';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
const FAKE_ID = 'cinjfgbkjnfg';
diff --git a/examples/ecommerce/types.ts b/examples/ecommerce/types.ts
index 58c57e0f9b2..7d9dfb89419 100644
--- a/examples/ecommerce/types.ts
+++ b/examples/ecommerce/types.ts
@@ -1,11 +1,6 @@
-import { KeystoneListsAPI } from '@keystone-6/core/types';
-
-// NOTE -- these types are commented out in main because they aren't generated by the build (yet)
-// To get full List and GraphQL API type support, uncomment them here and use them below
-// import type { KeystoneListsTypeInfo } from '.keystone/types';
-
import type { Permission } from './schemas/fields';
-export type { Permission } from './schemas/fields';
+
+export type { Permission };
export type Session = {
itemId: string;
@@ -21,8 +16,6 @@ export type Session = {
};
};
-export type ListsAPI = KeystoneListsAPI;
-
export type AccessArgs = {
session?: Session;
item?: any;
diff --git a/examples/extend-graphql-schema-graphql-ts/custom-schema.ts b/examples/extend-graphql-schema-graphql-ts/custom-schema.ts
deleted file mode 100644
index 8e9557c9ed3..00000000000
--- a/examples/extend-graphql-schema-graphql-ts/custom-schema.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import { graphql } from '@keystone-6/core';
-import { Context } from '.keystone/types';
-
-export const extendGraphqlSchema = graphql.extend(base => {
- const Statistics = graphql.object<{ authorId: string }>()({
- name: 'Statistics',
- fields: {
- draft: graphql.field({
- type: graphql.Int,
- resolve({ authorId }, args, _context) {
- const context = _context as Context;
- return context.query.Post.count({
- where: { author: { id: { equals: authorId } }, status: { equals: 'draft' } },
- });
- },
- }),
- published: graphql.field({
- type: graphql.Int,
- resolve({ authorId }, args, _context) {
- const context = _context as Context;
- return context.query.Post.count({
- where: { author: { id: { equals: authorId } }, status: { equals: 'published' } },
- });
- },
- }),
- latest: graphql.field({
- type: base.object('Post'),
- async resolve({ authorId }, args, _context) {
- const context = _context as Context;
- const [post] = await context.db.Post.findMany({
- take: 1,
- orderBy: { publishDate: 'desc' },
- where: { author: { id: { equals: authorId } } },
- });
- return post;
- },
- }),
- },
- });
- return {
- mutation: {
- publishPost: graphql.field({
- // base.object will return an object type from the existing schema
- // with the name provided or throw if it doesn't exist
- type: base.object('Post'),
- args: { id: graphql.arg({ type: graphql.nonNull(graphql.ID) }) },
- resolve(source, { id }, _context) {
- const context = _context as Context;
- // Note we use `context.db.Post` here as we have a return type
- // of Post, and this API provides results in the correct format.
- // If you accidentally use `context.query.Post` here you can expect problems
- // when accessing the fields in your GraphQL client.
- return context.db.Post.updateOne({
- where: { id },
- data: { status: 'published', publishDate: new Date().toISOString() },
- });
- },
- }),
- },
- query: {
- recentPosts: graphql.field({
- type: graphql.list(graphql.nonNull(base.object('Post'))),
- args: {
- id: graphql.arg({ type: graphql.nonNull(graphql.ID) }),
- days: graphql.arg({ type: graphql.nonNull(graphql.Int), defaultValue: 7 }),
- },
- resolve(source, { id, days }, _context) {
- const context = _context as Context;
- // Create a date string in the past from now()
- const cutoff = new Date(
- new Date().setUTCDate(new Date().getUTCDate() - days)
- ).toISOString();
-
- // Note we use `context.db.Post` here as we have a return type
- // of [Post], and this API provides results in the correct format.
- // If you accidentally use `context.query.Post` here you can expect problems
- // when accessing the fields in your GraphQL client.
- return context.db.Post.findMany({
- where: { author: { id: { equals: id } }, publishDate: { gt: cutoff } },
- });
- },
- }),
- stats: graphql.field({
- type: Statistics,
- args: { id: graphql.arg({ type: graphql.nonNull(graphql.ID) }) },
- resolve(source, { id }) {
- return { authorId: id };
- },
- }),
- },
- };
-});
diff --git a/examples/extend-graphql-schema-graphql-ts/keystone.ts b/examples/extend-graphql-schema-graphql-ts/keystone.ts
index 76e5afc6d8c..820e156ae58 100644
--- a/examples/extend-graphql-schema-graphql-ts/keystone.ts
+++ b/examples/extend-graphql-schema-graphql-ts/keystone.ts
@@ -1,6 +1,5 @@
import { config } from '@keystone-6/core';
-import { lists } from './schema';
-import { extendGraphqlSchema } from './custom-schema';
+import { lists, extendGraphqlSchema } from './schema';
export default config({
db: {
diff --git a/examples/extend-graphql-schema-graphql-ts/schema.ts b/examples/extend-graphql-schema-graphql-ts/schema.ts
index 75e7fbea011..b784d0ff992 100644
--- a/examples/extend-graphql-schema-graphql-ts/schema.ts
+++ b/examples/extend-graphql-schema-graphql-ts/schema.ts
@@ -1,7 +1,8 @@
import { list } from '@keystone-6/core';
import { select, relationship, text, timestamp } from '@keystone-6/core/fields';
+import { Lists, graphql } from '.keystone';
-export const lists = {
+export const lists: Lists = {
Post: list({
fields: {
title: text({ validation: { isRequired: true } }),
@@ -25,3 +26,88 @@ export const lists = {
},
}),
};
+
+export const extendGraphqlSchema = graphql.extend(base => {
+ const Statistics = graphql.object<{ authorId: string }>()({
+ name: 'Statistics',
+ fields: {
+ draft: graphql.field({
+ type: graphql.Int,
+ resolve({ authorId }, args, context) {
+ return context.query.Post.count({
+ where: { author: { id: { equals: authorId } }, status: { equals: 'draft' } },
+ });
+ },
+ }),
+ published: graphql.field({
+ type: graphql.Int,
+ resolve({ authorId }, args, context) {
+ return context.query.Post.count({
+ where: { author: { id: { equals: authorId } }, status: { equals: 'published' } },
+ });
+ },
+ }),
+ latest: graphql.field({
+ type: base.object('Post'),
+ async resolve({ authorId }, args, context) {
+ const [post] = await context.db.Post.findMany({
+ take: 1,
+ orderBy: { publishDate: 'desc' },
+ where: { author: { id: { equals: authorId } } },
+ });
+ return post;
+ },
+ }),
+ },
+ });
+ return {
+ mutation: {
+ publishPost: graphql.field({
+ // base.object will return an object type from the existing schema
+ // with the name provided or throw if it doesn't exist
+ type: base.object('Post'),
+ args: { id: graphql.arg({ type: graphql.nonNull(graphql.ID) }) },
+ resolve(source, { id }, context) {
+ // Note we use `context.db.Post` here as we have a return type
+ // of Post, and this API provides results in the correct format.
+ // If you accidentally use `context.query.Post` here you can expect problems
+ // when accessing the fields in your GraphQL client.
+ return context.db.Post.updateOne({
+ where: { id },
+ data: { status: 'published', publishDate: new Date().toISOString() },
+ });
+ },
+ }),
+ },
+ query: {
+ recentPosts: graphql.field({
+ type: graphql.list(graphql.nonNull(base.object('Post'))),
+ args: {
+ id: graphql.arg({ type: graphql.nonNull(graphql.ID) }),
+ days: graphql.arg({ type: graphql.nonNull(graphql.Int), defaultValue: 7 }),
+ },
+ resolve(source, { id, days }, context) {
+ // Create a date string in the past from now()
+ const cutoff = new Date(
+ new Date().setUTCDate(new Date().getUTCDate() - days)
+ ).toISOString();
+
+ // Note we use `context.db.Post` here as we have a return type
+ // of [Post], and this API provides results in the correct format.
+ // If you accidentally use `context.query.Post` here you can expect problems
+ // when accessing the fields in your GraphQL client.
+ return context.db.Post.findMany({
+ where: { author: { id: { equals: id } }, publishDate: { gt: cutoff } },
+ });
+ },
+ }),
+ stats: graphql.field({
+ type: Statistics,
+ args: { id: graphql.arg({ type: graphql.nonNull(graphql.ID) }) },
+ resolve(source, { id }) {
+ return { authorId: id };
+ },
+ }),
+ },
+ };
+});
diff --git a/examples/extend-graphql-schema/custom-schema.ts b/examples/extend-graphql-schema/custom-schema.ts
index 83e46338527..eb20d0318f9 100644
--- a/examples/extend-graphql-schema/custom-schema.ts
+++ b/examples/extend-graphql-schema/custom-schema.ts
@@ -1,5 +1,5 @@
import { graphQLSchemaExtension } from '@keystone-6/core';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
export const extendGraphqlSchema = graphQLSchemaExtension({
typeDefs: `
diff --git a/examples/rest-api/keystone.ts b/examples/rest-api/keystone.ts
index b317c45d539..5fa2a7bda1d 100644
--- a/examples/rest-api/keystone.ts
+++ b/examples/rest-api/keystone.ts
@@ -2,7 +2,7 @@ import { config } from '@keystone-6/core';
import { lists } from './schema';
import { insertSeedData } from './seed-data';
import { getTasks } from './routes/tasks';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
/*
A quick note on types: normally if you're adding custom properties to your
diff --git a/examples/rest-api/routes/tasks.ts b/examples/rest-api/routes/tasks.ts
index d800f2e445f..8c1d0d9cdfa 100644
--- a/examples/rest-api/routes/tasks.ts
+++ b/examples/rest-api/routes/tasks.ts
@@ -1,5 +1,5 @@
import type { Request, Response } from 'express';
-import type { Context } from '.keystone/types';
+import type { Context } from '.keystone';
/*
This example route handler gets all the tasks in the database and returns
diff --git a/examples/rest-api/seed-data/index.ts b/examples/rest-api/seed-data/index.ts
index a36b032f4fc..b057508fd43 100644
--- a/examples/rest-api/seed-data/index.ts
+++ b/examples/rest-api/seed-data/index.ts
@@ -1,5 +1,5 @@
import { persons, tasks } from './data';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
type PersonProps = {
name: string;
diff --git a/examples/task-manager/keystone.ts b/examples/task-manager/keystone.ts
index 163766aaa97..f002824fcec 100644
--- a/examples/task-manager/keystone.ts
+++ b/examples/task-manager/keystone.ts
@@ -1,7 +1,7 @@
import { config } from '@keystone-6/core';
import { lists } from './schema';
import { insertSeedData } from './seed-data';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
export default config({
db: {
diff --git a/examples/task-manager/seed-data/index.ts b/examples/task-manager/seed-data/index.ts
index a36b032f4fc..b057508fd43 100644
--- a/examples/task-manager/seed-data/index.ts
+++ b/examples/task-manager/seed-data/index.ts
@@ -1,5 +1,5 @@
import { persons, tasks } from './data';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
type PersonProps = {
name: string;
diff --git a/examples/testing/example.test.ts b/examples/testing/example.test.ts
index 0d056d13ac8..8580e44d716 100644
--- a/examples/testing/example.test.ts
+++ b/examples/testing/example.test.ts
@@ -1,6 +1,6 @@
import { setupTestEnv, setupTestRunner, TestEnv } from '@keystone-6/core/testing';
import config from './keystone';
-import { Context } from '.keystone/types';
+import { Context } from '.keystone';
// Setup a test runner which will provide a clean test environment
// with access to our GraphQL API for each test.
diff --git a/examples/testing/schema.ts b/examples/testing/schema.ts
index 12e8aae72ca..fb24900e9f5 100644
--- a/examples/testing/schema.ts
+++ b/examples/testing/schema.ts
@@ -1,7 +1,7 @@
import { list } from '@keystone-6/core';
import { checkbox, password, relationship, text, timestamp } from '@keystone-6/core/fields';
import { select } from '@keystone-6/core/fields';
-import { Lists } from '.keystone/types';
+import { Lists } from '.keystone';
export const lists: Lists = {
Task: list({
diff --git a/examples/virtual-field/schema.ts b/examples/virtual-field/schema.ts
index 23391e07173..b63302718f4 100644
--- a/examples/virtual-field/schema.ts
+++ b/examples/virtual-field/schema.ts
@@ -1,6 +1,6 @@
-import { list, graphql } from '@keystone-6/core';
+import { list } from '@keystone-6/core';
import { select, relationship, text, timestamp, virtual } from '@keystone-6/core/fields';
-import { Lists, Context } from '.keystone/types';
+import { Lists, Context, graphql } from '.keystone';
export const lists: Lists = {
Post: list({
@@ -17,7 +17,7 @@ export const lists: Lists = {
isPublished: virtual({
field: graphql.field({
type: graphql.Boolean,
- resolve(item: any) {
+ resolve(item) {
return item.status === 'published';
},
}),
diff --git a/packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context/package.json b/packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context/package.json
new file mode 100644
index 00000000000..45f0943d72c
--- /dev/null
+++ b/packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context/package.json
@@ -0,0 +1,4 @@
+{
+ "main": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-graphql-ts-without-context.cjs.js",
+ "module": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-graphql-ts-without-context.esm.js"
+}
diff --git a/packages/core/___internal-do-not-use-will-break-in-patch/require-source/package.json b/packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts/package.json
similarity index 65%
rename from packages/core/___internal-do-not-use-will-break-in-patch/require-source/package.json
rename to packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts/package.json
index e5777beeb70..c068c2209c2 100644
--- a/packages/core/___internal-do-not-use-will-break-in-patch/require-source/package.json
+++ b/packages/core/___internal-do-not-use-will-break-in-patch/graphql-ts/package.json
@@ -1,4 +1,4 @@
{
- "main": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-require-source.cjs.js",
- "module": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-require-source.esm.js"
+ "main": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-graphql-ts.cjs.js",
+ "module": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-graphql-ts.esm.js"
}
diff --git a/packages/core/___internal-do-not-use-will-break-in-patch/load-config/package.json b/packages/core/___internal-do-not-use-will-break-in-patch/load-config/package.json
new file mode 100644
index 00000000000..7590e4cca83
--- /dev/null
+++ b/packages/core/___internal-do-not-use-will-break-in-patch/load-config/package.json
@@ -0,0 +1,4 @@
+{
+ "main": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-load-config.cjs.js",
+ "module": "dist/keystone-6-core-___internal-do-not-use-will-break-in-patch-load-config.esm.js"
+}
diff --git a/packages/core/package.json b/packages/core/package.json
index e30d84200ba..8c8ef88d4b9 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -141,7 +141,7 @@
"index.ts",
"system.ts",
"next.ts",
- "___internal-do-not-use-will-break-in-patch/{node-api,next-graphql,require-source}.ts",
+ "___internal-do-not-use-will-break-in-patch/{node-api,next-graphql,load-config,graphql-ts,graphql-ts-without-context}.ts",
"___internal-do-not-use-will-break-in-patch/admin-ui/pages/*/index.tsx",
"___internal-do-not-use-will-break-in-patch/admin-ui/{next-config.ts,id-field-view.tsx}",
"artifacts.ts",
diff --git a/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context.ts b/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context.ts
new file mode 100644
index 00000000000..8d935967374
--- /dev/null
+++ b/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context.ts
@@ -0,0 +1 @@
+export * from '../types/schema/api-without-context';
diff --git a/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts.ts b/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts.ts
new file mode 100644
index 00000000000..060b50d4fc7
--- /dev/null
+++ b/packages/core/src/___internal-do-not-use-will-break-in-patch/graphql-ts.ts
@@ -0,0 +1,5 @@
+// this entry point purely exists so that we can essentially import from @graphql-ts/schema
+// from .keystone when a user might be using a stricter package manager (e.g. pnpm)
+// that doesn't allow importing things that you don't depend on yourself
+// and users won't be directly depending on @graphql-ts/schema
+export * from '@graphql-ts/schema';
diff --git a/packages/core/src/___internal-do-not-use-will-break-in-patch/load-config.ts b/packages/core/src/___internal-do-not-use-will-break-in-patch/load-config.ts
new file mode 100644
index 00000000000..d81128e1fce
--- /dev/null
+++ b/packages/core/src/___internal-do-not-use-will-break-in-patch/load-config.ts
@@ -0,0 +1 @@
+export { loadConfig } from '../lib/config/loadConfig';
diff --git a/packages/core/src/___internal-do-not-use-will-break-in-patch/require-source.ts b/packages/core/src/___internal-do-not-use-will-break-in-patch/require-source.ts
deleted file mode 100644
index bfd5f740551..00000000000
--- a/packages/core/src/___internal-do-not-use-will-break-in-patch/require-source.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { requireSource } from '../lib/config/requireSource';
diff --git a/packages/core/src/artifacts.ts b/packages/core/src/artifacts.ts
index b0042f9401f..dd0d87f5944 100644
--- a/packages/core/src/artifacts.ts
+++ b/packages/core/src/artifacts.ts
@@ -203,6 +203,63 @@ const nextGraphQLAPIDTS = `export const config: any;
export default config;
`;
+const graphqlTsAPI = `import * as graphqlTsSchema from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/graphql-ts';
+import type { Context } from '../index';
+export * from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/graphql-ts-without-context';
+export { field, fields, interface, interfaceField, object, union } from './graphql-ts-with-context';
+
+export type { Context }
+
+export type NullableType = graphqlTsSchema.NullableType;
+export type Type = graphqlTsSchema.Type;
+export type NullableOutputType = graphqlTsSchema.NullableOutputType;
+export type OutputType = graphqlTsSchema.OutputType;
+export type Field<
+ Source,
+ Args extends Record>,
+ TType extends OutputType,
+ Key extends string
+> = graphqlTsSchema.Field