From d251ce5fac90009ed3542e6e23cdc37e2d2bb9ed Mon Sep 17 00:00:00 2001 From: Jason Kuhrt Date: Tue, 7 Jul 2020 08:51:47 -0400 Subject: [PATCH] chore: remove old docs --- docs/.nojekyll | 0 docs/README.md | 119 - docs/_coverpage.md | 20 - docs/_sidebar.md | 69 - docs/api/modules/main.md | 41 - docs/api/modules/main/exports/logger.md | 197 - docs/api/modules/main/exports/schema.md | 1201 ------ docs/api/modules/main/exports/server.md | 26 - docs/api/modules/main/exports/settings.md | 443 --- docs/api/modules/main/exports/use.md | 28 - docs/api/modules/plugin.md | 25 - docs/api/modules/testing.md | 76 - docs/architecture.md | 182 - docs/assets/diagram-backing-types-1.png | Bin 183961 -> 0 bytes docs/assets/diagram-backing-types-2.png | Bin 191102 -> 0 bytes docs/assets/nexus-logo-black.png | Bin 6815 -> 0 bytes docs/assets/nexus-logo-white.png | Bin 7044 -> 0 bytes docs/assets/nexus-terminal.png | Bin 567952 -> 0 bytes docs/changelog.md | 3 - docs/components/logger/about.md | 7 - docs/components/logger/api.md | 3 - docs/components/logger/plugins-api.md | 1 - docs/components/logger/plugins.md | 1 - docs/components/schema/about.md | 49 - docs/components/schema/api/_sidebar.md | 81 - docs/components/schema/api/copy/api-args.md | 57 - .../schema/api/copy/api-enumType.md | 26 - .../schema/api/copy/api-extendType.md | 29 - .../schema/api/copy/api-inputObjectType.md | 15 - .../schema/api/copy/api-interfaceType.md | 23 - .../schema/api/copy/api-makeSchema.md | 224 -- .../schema/api/copy/api-mutationField.md | 39 - .../schema/api/copy/api-objectType.md | 42 - .../components/schema/api/copy/api-plugins.md | 141 - .../schema/api/copy/api-queryField.md | 43 - .../schema/api/copy/api-scalarType.md | 60 - .../schema/api/copy/api-unionType.md | 16 - .../schema/api/copy/best-practices.md | 63 - .../schema/api/copy/builder-construction.md | 10 - .../schema/api/copy/future-features.md | 13 - .../schema/api/copy/getting-started.md | 172 - .../schema/api/copy/library-authors.md | 47 - .../schema/api/copy/plugin-connection.md | 251 -- .../schema/api/copy/plugin-fieldAuthorize.md | 18 - .../api/copy/plugin-nullabilityGuard.md | 63 - .../schema/api/copy/plugin-queryComplexity.md | 95 - .../schema/api/copy/type-generation.md | 29 - .../schema/api/copy/why-graphql-nexus.md | 19 - docs/components/schema/api/index.md | 12 - docs/components/schema/plugins-api.md | 132 - docs/components/schema/plugins.md | 1 - docs/components/schema/plugins/connection.md | 245 -- .../schema/plugins/field-authorize.md | 12 - .../schema/plugins/nullability-guard.md | 56 - docs/components/schema/plugins/prisma.md | 139 - .../schema/plugins/query-complexity.md | 89 - docs/favicon.ico | Bin 15086 -> 0 bytes .../migrate-from-nexus-schema.md | 269 -- docs/getting-started/tutorial.md | 227 -- docs/guides/authentication.md | 1 - docs/guides/authorization.md | 1 - docs/guides/cli.md | 51 - docs/guides/concepts.md | 15 - docs/guides/configuration.md | 1 - docs/guides/databases.md | 1 - docs/guides/deployment.md | 1 - docs/guides/error-handling.md | 3 - docs/guides/logger.md | 32 - docs/guides/plugins.md | 3 - docs/guides/project-layout.md | 107 - docs/guides/schema.md | 835 ----- docs/guides/server.md | 27 - docs/guides/testing.md | 229 -- docs/guides/writing-plugins.md | 225 -- docs/index.html | 622 ---- docs/meta/spec-sheet.md | 95 - docs/migration-guides/prisma-users.md | 56 - docs/plugins/prisma.md | 3203 ----------------- docs/references/recipes.md | 322 -- docs/tutorial/_sidebar.md | 89 - .../chapter-1-setup-and-first-query.md | 94 - .../chapter-2-writing-your-first-schema.md | 225 -- .../chapter-3-adding-mutations-to-your-api.md | 318 -- docs/tutorial/chapter-4-testing-your-api.md | 198 - .../chapter-5-persisting-data-via-prisma.md | 331 -- .../tutorial/chapter-6-testing-with-prisma.md | 194 - docs/tutorial/chapter-7-authentication.md | 5 - docs/tutorial/introduction.md | 53 - 88 files changed, 12586 deletions(-) delete mode 100644 docs/.nojekyll delete mode 100644 docs/README.md delete mode 100644 docs/_coverpage.md delete mode 100644 docs/_sidebar.md delete mode 100644 docs/api/modules/main.md delete mode 100644 docs/api/modules/main/exports/logger.md delete mode 100644 docs/api/modules/main/exports/schema.md delete mode 100644 docs/api/modules/main/exports/server.md delete mode 100644 docs/api/modules/main/exports/settings.md delete mode 100644 docs/api/modules/main/exports/use.md delete mode 100644 docs/api/modules/plugin.md delete mode 100644 docs/api/modules/testing.md delete mode 100644 docs/architecture.md delete mode 100644 docs/assets/diagram-backing-types-1.png delete mode 100644 docs/assets/diagram-backing-types-2.png delete mode 100644 docs/assets/nexus-logo-black.png delete mode 100644 docs/assets/nexus-logo-white.png delete mode 100644 docs/assets/nexus-terminal.png delete mode 100644 docs/changelog.md delete mode 100644 docs/components/logger/about.md delete mode 100644 docs/components/logger/api.md delete mode 100644 docs/components/logger/plugins-api.md delete mode 100644 docs/components/logger/plugins.md delete mode 100644 docs/components/schema/about.md delete mode 100644 docs/components/schema/api/_sidebar.md delete mode 100644 docs/components/schema/api/copy/api-args.md delete mode 100644 docs/components/schema/api/copy/api-enumType.md delete mode 100644 docs/components/schema/api/copy/api-extendType.md delete mode 100644 docs/components/schema/api/copy/api-inputObjectType.md delete mode 100644 docs/components/schema/api/copy/api-interfaceType.md delete mode 100644 docs/components/schema/api/copy/api-makeSchema.md delete mode 100644 docs/components/schema/api/copy/api-mutationField.md delete mode 100644 docs/components/schema/api/copy/api-objectType.md delete mode 100644 docs/components/schema/api/copy/api-plugins.md delete mode 100644 docs/components/schema/api/copy/api-queryField.md delete mode 100644 docs/components/schema/api/copy/api-scalarType.md delete mode 100644 docs/components/schema/api/copy/api-unionType.md delete mode 100644 docs/components/schema/api/copy/best-practices.md delete mode 100644 docs/components/schema/api/copy/builder-construction.md delete mode 100644 docs/components/schema/api/copy/future-features.md delete mode 100644 docs/components/schema/api/copy/getting-started.md delete mode 100644 docs/components/schema/api/copy/library-authors.md delete mode 100644 docs/components/schema/api/copy/plugin-connection.md delete mode 100644 docs/components/schema/api/copy/plugin-fieldAuthorize.md delete mode 100644 docs/components/schema/api/copy/plugin-nullabilityGuard.md delete mode 100644 docs/components/schema/api/copy/plugin-queryComplexity.md delete mode 100644 docs/components/schema/api/copy/type-generation.md delete mode 100755 docs/components/schema/api/copy/why-graphql-nexus.md delete mode 100644 docs/components/schema/api/index.md delete mode 100644 docs/components/schema/plugins-api.md delete mode 100644 docs/components/schema/plugins.md delete mode 100644 docs/components/schema/plugins/connection.md delete mode 100644 docs/components/schema/plugins/field-authorize.md delete mode 100644 docs/components/schema/plugins/nullability-guard.md delete mode 100644 docs/components/schema/plugins/prisma.md delete mode 100644 docs/components/schema/plugins/query-complexity.md delete mode 100644 docs/favicon.ico delete mode 100644 docs/getting-started/migrate-from-nexus-schema.md delete mode 100644 docs/getting-started/tutorial.md delete mode 100644 docs/guides/authentication.md delete mode 100644 docs/guides/authorization.md delete mode 100644 docs/guides/cli.md delete mode 100644 docs/guides/concepts.md delete mode 100644 docs/guides/configuration.md delete mode 100644 docs/guides/databases.md delete mode 100644 docs/guides/deployment.md delete mode 100644 docs/guides/error-handling.md delete mode 100644 docs/guides/logger.md delete mode 100644 docs/guides/plugins.md delete mode 100644 docs/guides/project-layout.md delete mode 100644 docs/guides/schema.md delete mode 100644 docs/guides/server.md delete mode 100644 docs/guides/testing.md delete mode 100644 docs/guides/writing-plugins.md delete mode 100644 docs/index.html delete mode 100644 docs/meta/spec-sheet.md delete mode 100644 docs/migration-guides/prisma-users.md delete mode 100644 docs/plugins/prisma.md delete mode 100644 docs/references/recipes.md delete mode 100644 docs/tutorial/_sidebar.md delete mode 100644 docs/tutorial/chapter-1-setup-and-first-query.md delete mode 100644 docs/tutorial/chapter-2-writing-your-first-schema.md delete mode 100644 docs/tutorial/chapter-3-adding-mutations-to-your-api.md delete mode 100644 docs/tutorial/chapter-4-testing-your-api.md delete mode 100644 docs/tutorial/chapter-5-persisting-data-via-prisma.md delete mode 100644 docs/tutorial/chapter-6-testing-with-prisma.md delete mode 100644 docs/tutorial/chapter-7-authentication.md delete mode 100644 docs/tutorial/introduction.md diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index da065164a..000000000 --- a/docs/README.md +++ /dev/null @@ -1,119 +0,0 @@ -

- -

-
- -

Welcome To Nexus

-

-

- -

-

- Code-First Type-Safe GraphQL Framework -
- Made with ♥️ by Prisma • Nexus Schema originally by Tim Griesser -

-
- -[Tweets](https://nxs.li/tweets) // [Discussions](https://nxs.li/discussions) // [Issues](https://nxs.li/issues) // [Changelog](https://nxs.li/changelog) ([canary](https://nxs.li/changelog/canary)) // [Repo](https://nxs.li/repo) - -
- -
-
-
- -Nexus is a [Node.js](https://nodejs.org) [TypeScript](https://www.typescriptlang.org/)-focused [code-first](https://www.prisma.io/blog/series/what-is-nexus-wsobadcm7oju) [GraphQL](https://graphql.org/) framework. It has three complementary aspects that you interact with: - -1. An API for building your fully featured GraphQL API. All features include a focus on type-safety autocompletion and jsDoc. -2. A CLI for supporting your daily workflows while working. -3. A plugin system spaning API _and_ CLI for rich end-to-end plugins that you can use (or write) to fill in your niche needs. - -Nexus is young, but growing fast. Every two weeks [a new release is cut](https://nxs.li/changelog) and we have a [roadmap](https://github.com/orgs/graphql-nexus/projects/1). - -**The Nexus API enables you to:** - -- Build your GraphQL Schema -- Build your Database Schema -- Map DB schema to GQL one -- Generate CRUD -- Generate clients -- Query your database -- Manage app configuration -- Manage your HTTP server -- Log structured data -- System test your GraphQL API - -**The Nexus CLI supports you with:** - -- The `nexus dev` command which watches and recompiles your API on every change with rich interactivity such as database migration prompts and managed tsconfig settings. -- The `nexus build` command which builds an optimized bundle for lean deployments. - -## The Goals of Nexus {docsify-ignore} - -1. Scale gracefully from simple to complex, prototype to production -2. Be type-safe without excessive generics or incomprehensible type errors -3. Have an API that is declarative -4. Be largely learnable by just using it -5. Be deeply extensible -6. Be zero Config -7. Approach zero boilerplate - -## Highlights of Nexus {docsify-ignore} - -- **Type-safety by default** - Take advantage of TypeScript without the hassle of type annotations everywhere -- **GraphQL Server included** - We manage the GraphQL server for you while letting you control it -- **Bundled CLI for development workflows** - Develop, test and build your app using our CLI -- **Reusable modules** - Leverage your programming language to reuse parts of your GraphQL schema -- **Scalable** - Split your GraphQL schema by features to horizontally scale as your project grows -- **Testable** - Nexus includes tooling to run integration tests against your API -- **Zero config** - Thanks to conventions over configuration, get up and running quickly without the hassle of configuring anything -- **Batteries included (DB, rate limiting, relay connections, custom scalars, ...)** - We've got you covered beyond the to-do app -- **Readable** - Implement your schema with code, read it with the autogenerated GraphQL SDL file -- **Pluggable** - Make use of the Nexus plugin ecosystem or create yours to enhance the default experience -- **No lock-in** - Buying into a framework can be scary. We make sure you've got the right escape hatches - -## Why Nexus {docsify-ignore} - -Nexus, the framework, is built on top of a great library called Nexus _Schema_, built by [Tim Griesser](https://github.com/tgriesser). - -« Nexus Schema was born out of my experience building several production GraphQL APIs, in different languages and frameworks. The first with vanilla [graphql-js](https://github.com/graphql/graphql-js), another schema-first with [graph.ql](https://github.com/matthewmueller/graph.ql) and later [graphql-tools](https://github.com/apollographql/graphql-tools). Following that with [graphene-python](https://docs.graphene-python.org/en/latest/) and most recently with a bit of [graphql-ruby](http://graphql-ruby.org/). - -After working with the toolkits in other scripting languages, it felt like there was a gap in the JavaScript approaches. Schema-first development starts out great, by simply expressing your schema in the GraphQL Schema Definition Language (SDL) and providing resolvers matching to the types as needed you are up and running fast! No need for tons of requires or "overhead" to get a GraphQL server running. - -As your schema then grows to hundreds or thousands of types, manually curating these SDL fragments becomes tedious. Documentation changes can be tough. Modifying fields on interfaces can require manual changes to many implementing types, a process that can be quite error prone. - -_If only there were a way to combine the simplicity of schema-first development, with the long-term maintainability of a definition-first approach._ - -Nexus Schema aims to fill that void, making the process as simple as possible while also making good use of the runtime to introduce powerful ways of composing types, introducing type or schema wide changes, and much more. - -The core idea of Nexus Schema draws from basing the schema off the SDL - keeping things declarative and simple to understand. For example it allows you to reference the type names as string literals rather than always need to import to reference types (but, you can do that too if you prefer). - -By combining automatic type generation with some of the more powerful features of TypeScript - type merging, conditional types, and type inference, we can know exactly which type names we are referring to and able to use throughout our code. We can know both the parameters and the return type of resolvers without providing any type annotation. It takes a little getting used to, but it ends up leading to a great feedback loop of the types annotating themselves. » — _Tim Griesser_ - -The complex mechanisms on which Nexus Schema relies turned out to produce a lot of friction to the daily workflows that people have to deal with when working with it. - -Nexus, the framework, is a natural continuation of that vision built by Tim Griesser which aims to make Nexus Schema more accessible to everyone by hiding some of the underlying complexity of the system and by trying to push users into the pit of success. - -## Learning Pre-requisites {docsify-ignore} - -Having a decent understanding of GraphQL and a bit of familiarity with TypeScript may help you adopt Nexus. If you like to dive in and learn on the fly feel free to do so, but if you do want to build up some pre-requisite knowledge upfront then the following resources may be of interest. - -_GraphQL_ - -- [How to GraphQL](https://www.howtographql.com) -- [Production Ready GraphQL](https://book.productionreadygraphql.com/) -- [Official GraphQL website](https://graphql.org) ([community resources](https://graphql.org/community/)) - -_TypeScript_ - -- [The New Handbook](https://microsoft.github.io/TypeScript-New-Handbook/everything/) -- [The Interactive Playground](http://www.typescriptlang.org/play) -- [Dozens of articles](https://mariusschulz.com/blog) by [Marius Schulz](https://github.com/mariusschulz) -- [Dozens of articles](https://2ality.com/index.html) by [Dr. Axel Rauschmayer](https://github.com/rauschma) - -## Diving In {docsify-ignore} - -- Go through the [tutorial](/tutorial/introduction) -- Explore the [examples repo](https://github.com/graphql-nexus/examples) -- Explore your own first app by running `npx nexus` diff --git a/docs/_coverpage.md b/docs/_coverpage.md deleted file mode 100644 index aea98729b..000000000 --- a/docs/_coverpage.md +++ /dev/null @@ -1,20 +0,0 @@ -![logo](/assets/nexus-logo-white.png) - -### Code-First Type-Safe GraphQL Framework - -

- GitHub - - Docs -

- -
-
- -```cli -npx nexus -``` - - - -![color](#2F2C40) diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index 1143e6e9d..000000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,69 +0,0 @@ -- Getting Started - -- [Welcome To Nexus](README) -- [Tutorial](tutorial/introduction) - -- Migration Guides - -- [Prisma Users](migration-guides/prisma-users) -- [Nexus Schema Users](getting-started/migrate-from-nexus-schema) - -- Guides - -- [Concepts](guides/concepts) -- [Schema](guides/schema) -- [Server](guides/server) -- [Logger](guides/logger) -- [Testing](guides/testing) -- [Project Layout](guides/project-layout) -- [Error Handling](guides/error-handling) -- [Plugins](guides/plugins) -- [Recipes](references/recipes) -- [Writing Plugins](guides/writing-plugins) -- [CLI](guides/cli) - -- Plugins - -- [`prisma`](plugins/prisma) -- [`jwt-auth`](https://github.com/Camji55/nexus-plugin-jwt-auth) -- [`shield`](https://github.com/lvauvillier/nexus-plugin-shield) - -- API - -- [`nexus`](api/modules/main) - - - [`schema`](api/modules/main/exports/schema) - - [`log`](api/modules/main/exports/logger) - - [`server`](api/modules/main/exports/server) - - [`settings`](api/modules/main/exports/settings) - - [`use`](api/modules/main/exports/use) - -- [`nexus/testing`](api/modules/testing) - -* [`nexus/plugin`](api/modules/plugin) - -- Meta - -- [Roadmap ⤤](https://github.com/orgs/graphql-nexus/projects/1) -- [Changelog](changelog) -- [Spec Sheet](meta/spec-sheet) -- [Architecture](architecture) - -- Components Standalone - -- [`@nexus/schema`](components/schema/about) - - - [API](components/schema/api/index.md) - - [Plugins API](components/schema/plugins-api) - - [SDL Converter ⤤](https://nexus.js.org/converter) - - [Plugins](components/schema/plugins) - - [Connection](components/schema/plugins/connection) - - [Query Complexity](components/schema/plugins/query-complexity) - - [Field Authorize](components/schema/plugins/field-authorize) - - [Nullability Guard](components/schema/plugins/nullability-guard) - - [Prisma](components/schema/plugins/prisma) - -- [`@nexus/logger`](components/logger/about) - - [API](components/logger/api) - - [Plugins](components/logger/plugins) - - [Plugins API](components/logger/plugins-api) diff --git a/docs/api/modules/main.md b/docs/api/modules/main.md deleted file mode 100644 index 727c37196..000000000 --- a/docs/api/modules/main.md +++ /dev/null @@ -1,41 +0,0 @@ -The main module exports an application singleton. It is available as the default export. For convenience you can import the app components as named exports too. - -**Example of importing default export** - -```ts -import app from 'nexus' - -app.log.info('hello world') - -app.settings.change({ - server: { - port: 5689, - }, -}) - -app.schema.queryType({ - definition(t) { - t.field('foo', { type: 'String' }) - }, -}) -``` - -**Example of importing named exports** - -```ts -import { schema, settings, log } from 'nexus' - -log.info('hello world') - -settings.change({ - server: { - port: 5689, - }, -}) - -schema.queryType({ - definition(t) { - t.field('foo', { type: 'String' }) - }, -}) -``` diff --git a/docs/api/modules/main/exports/logger.md b/docs/api/modules/main/exports/logger.md deleted file mode 100644 index 95f217c66..000000000 --- a/docs/api/modules/main/exports/logger.md +++ /dev/null @@ -1,197 +0,0 @@ -# `import { log }` - -[issues](https://nxs.li/issues/component/logger) / [features](https://nxs.li/issues/components/logger/features) | [bugs](https://nxs.li/issues/component/logger/bugs) - -### `fatal` - -A [Log](#Log) that outputs at `fatal` (6) level. - -### `error` - -A [Log](#Log) that outputs at `error` (5) level. - -### `warn` - -A [Log](#Log) that outputs at `warn` (4) level. - -### `info` - -A [Log](#Log) that outputs at `info` (3) level. - -### `debug` - -A [Log](#Log) that outputs at `debug` (2) level. - -### `trace` - -A [Log](#Log) that outputs at `trace` (1) level. - -### `addToContext` - -Add context to the logger. All subsequent logs will have this information included under their `context` property. Data is merged deeply using [lodash merge](https://lodash.com/docs/4.17.15#merge). - -Use this if you have some information that you wish all logs to include in their context. - -##### Signature - -

- - -```ts -(context: Record) => Logger -``` - -##### Example - -```ts -log.addToContext({ user: 'Toto' }) -log.info('hello') -log.warn('bye') -// { "context": { "user": "Toto" }, "event": "hello", ... } -// { "context": { "user": "Toto" }, "event": "bye", ... } -``` - -##### Example of local scalar precedence - -```ts -log.addToContext({ user: { name: 'Toto', age: 10 }) -log.info("hi", { user: { name: 'Titi', heightCM: 155 }) -// { "context": { "user": { "name": "Titi", age: 10, heightCM: 155 }}, ... } -``` - -### `child` - -Create a new logger that inherits its parents' context and path. - -Context added by children is never visible to parents. - -Context added by children is deeply merged using [lodash merge](https://lodash.com/docs/4.17.15#merge) with the context inherited from parents. - -Context added to parents is immediately visible to all existing children. - -##### Signature - -

- - -```ts -(name: string) => Logger -``` - -##### Example - -```ts -log.addToContext({ user: 'Toto' }) - -const bar = log.child('bar').addToContext({ bar: 'bar' }) -const foo = log.child('foo').addToContext({ foo: 'foo' }) - -log.info('hello') -bar.info('bar') -foo.info('foo') - -// { "context": { "user": "Toto" }, path: ["app"], "event": "hello", ... } -// { "context": { "user": "Toto", "bar": "bar" }, path: ["app", "bar"], "event": "bar", ... } -// { "context": { "user": "Toto", "foo": "foo" }, path: ["app", "foo"], "event": "foo", ... } -``` - -### Type Glossary - -#### `F` `Log` - -##### Signature - -```ts -(event: string, context?: Record) => void -``` - -Parameters: - -- `event` - - The event name of this log. Maps to the `event` property in the output JSON. - - ##### Remarks - - The log api is designed to get you thinking about logs in terms of events with structured data instead of strings of interpolated data. This approach gets you significantly more leverage out of your logs once they hit your logging platform, e.g. [ELK](https://www.elastic.co/what-is/elk-stack) - -- `context` - - Contextual information about this log. The object passed here is deeply merged under the log's `context` property. - - ##### Example - - ```ts - log.info('hello', { user: 'Toto' }) - // { "context": { "user": "Toto" }, ... } - ``` - -##### Example - -```ts -import { log } from 'nexus' - -log.info('hello') -``` - -#### `I` `JSONLog` - -##### Type - -```ts -{ - level: 10 | 20 | 30 | 40 | 50 - time: number - pid: number - hostname: string - path: string[] - context: JSON - event: string -} -``` - -- `level` - Numeric representation of log levels. Numeric because it easy later to filter e.g. level `30` and up. `10` is `trace` while on the other end of the scale `50` is `fatal`. - -- `time` - Unix timestamp in milliseconds. - -- `pid` - The process ID given by the host kernel. - -- `hostname` - The machine host (`require('os').hostname()`) - -- `path` - The fully qualified name of the logger. - - ##### Example - - ```ts - import { log } from 'nexus' - - log.info('hi') // { path: ['nexus'], ... } - log.child('b').info('hallo') // { path: ['nexus', 'b'], ... } - ``` - -- `context` - Custom contextual data added by you. Any data added by the log call, previous `addToContext` calls, or inheritance from parent context. - -- `event` - The name of this log event. - -##### Example - -```json -{ - "path": ["nexus", "dev", "watcher"], - "event": "restarting", - "level": 30, - "time": 1582856917643, - "pid": 49426, - "hostname": "Jasons-Prisma-Machine.local", - "context": { - "changed": "api/graphql/user.ts" - } -} -``` diff --git a/docs/api/modules/main/exports/schema.md b/docs/api/modules/main/exports/schema.md deleted file mode 100644 index 5dc833ad8..000000000 --- a/docs/api/modules/main/exports/schema.md +++ /dev/null @@ -1,1201 +0,0 @@ -# `import { schema }` - -[issues](https://nxs.li/issues/component/schema) / [features](https://nxs.li/issues/components/schema/features) | [bugs](https://nxs.li/issues/component/schema/bugs) - -Use the schema to model your domain, all the data that your API will accept and return, and how all the various objects in the domain relate to one another (the "graph" in "GraphQL"). - -### `objectType` - -[GraphQL Docs for Object Types](https://graphql.org/learn/schema/#object-types-and-fields) - -The most common kind of type in most GraphQL schemas. of a GraphQL schema are object types, a type you can -fetch from your schema, with fields: - -##### Signature - -```ts -objectType(config: { - name: string - description?: string - rootTyping?: NexusGenBackingTypes - nonNullDefaults?: NonNullConfig - definition: ObjectDefinitionBlock -}) => NexusObjectType -``` - -- `name` **(required)** The name of this object. - -- `definition` **(required)** The function used to define the fields of this object. See below for the various field builders available. - -- `description` The description of this object. Tools like GraphQL Playground can display this content. - -- `nonNullDefaults` [NonNullConfig](#i-nonnullconfig) - -- `rootTyping` [NexusGenBackingTypes](#s-nexusgenbackingtypes) - -##### Example - -```ts -import { schema } from 'nexus' - -schema.objectType({ - name: 'User', - definition(t) { - t.int('id', { description: 'Id of the user' }) - t.string('fullName', { description: 'Full name of the user' }) - t.list.field('posts', { - type: 'Post', - resolve(post, args, ctx) { - return ctx.db.user.getOne(post.id).posts() - }, - }) - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.int('id') - t.string('title') - }, -}) -``` - -#### `t.field` - -##### Signature - -```ts -( - name: string, - config: FieldConfig -) => void -``` - -todo - -#### `t.` - -``` -t.id -t.string -t.boolean -t.int -t.float -``` - -Field builder specialization for GraphQL scalar types: `string`, `boolean`, `int`, `float`, `id`. They are like `t.field` but omit the `config.type` property and accept a resolver as their second parameter as an alternative to full-on field config. - -##### Signature - -```ts -(name: string, param?: UntypedFieldConfig | Resolver) => void -``` - -#### `t.list` - -Use this to express a list of some other type. All field builders are available as properties. - -#### `t.implements` - -todo - -##### Signature - -```ts -(...interfaceNames: string[]) => void -``` - -#### `t.modify` - -Modify a field added via an interface. - -##### Signature - -```ts -(fieldName: string, modifications: todo) => void -``` - -todo - -#### `t.connection` - -This field builder helps you implement paginated associations between types in your schema. The contributions that it makes to your GraphQL schema adhere to the [Relay Connection Specification](https://facebook.github.io/relay/graphql/connections.htm#sec-Node). In other words it allows you the API author to write the minimum logic required to create spec-compliant relay connections for your API clients. - -##### Signature - - -```ts -( - fieldName: string, - config: { - type: GraphQLType, - additionalArgs?: Args - inheritAdditionalArgs?: boolean - disableForwardPagination?: boolean - disableBackwardPagination?: boolean - strictArgs?: boolean - validateArgs?: ( - argsArgs: Args, - info: ResolverInfo - ) => void - extendConnection?: (t: TypeBuilder) => void - extendEdge?: (t: TypeBuilder) => void - pageInfoFromNodes?: ( - nodes: Node[], - args: Args, - context: Context, - info: ResolverInfo - ) => { - hasNextPage: boolean, - hasPreviousPage: boolean - } - cursorFromNode?: ( - node: Node, - args: Args, - context: Context, - info: ResolverInfo, - forCursor: { - index: number - nodes: Node[] - } - ) => MaybePromise - } & - | { nodes?: never, resolve: Resolver } - | { resolve?: never, nodes: NodeResolver } -) => void -``` - -- param `config` - - - `type` [GraphQLType](#graphqltype) - The type of this field. - - - `resolve` [Resolver](#graphqltype) - Implement everything yourself. - - Useful for more complex pagination cases, where you may want to use utilities from other libraries like [`graphql-relay`](https://github.com/graphql/graphql-relay-js), and only use Nexus for the construction and type-safety. - - Unlike with `nodes` approach, this approach makes no assumptions about values for the `edges` `cursor` `pageInfo` properties. - - ##### Optionality - - Forbidden if `nodes` given. Required otherwise. - - - `nodes` [NodeResolver](#graphqltype) - - ##### Optionality - - Forbidden if `resolve` given. Required otherwise. - - ##### Remarks - - When you use this approach (instead of `resolve`), Nexus makes some assumptions about the structure of the connection. You are only required to return a list of nodes to resolve based on the connection, and then we will automatically infer the `hasNextPage`, `hasPreviousPage`, and `cursor` values for you. - - The returned array of nodes should have a length of one greater than the requested item count. The additional item should be placed according to this pattern: - - - paginating forward / selecting `first`: last - - paginating backward / selecting `last`: first - - For example, if the query is paginating forward, and there are 20 nodes in the returned array: - - ``` - Query Args Returned Nodes - - (first: 2) [{id: 1}, {id: 2}, {id: 3}] - ~~~~~~~ ------------------- Extra - (last: 2) [{id: 18}, {id: 19}, {id: 20}] - ~~~~~~~~ ------------------------------------- Extra - ``` - - Nexus then slices the array in the paginating direction, and if there are more than "N" node results, Nexus takes this to mean that there is another page in the paginating direction. - - If you set `assumeExactNodeCount` to `true` in `schema.connections` setting then this heuristic changes. Nexus then assumes that a next page exists if the returned array length is `>=` to requested node count. - - * `additionalArgs` [Args](#args) - Additional arguments to use for just this field. - - ##### Default - - `undefined` - - ##### Remarks - - When used, the `additionalArgs` in app settings `schema.connections` will not be inherited. If you do wish to inherit them, enable that with `inheritAdditionalArgs`. - - * `inheritAdditionalArgs` - Whether to inherit the `additionalArgs` from app settings `schema.connections` - - ##### Default - - `true` if `additionalArgs` is not set, `false` otherwise. - - * `disableForwardPagination` - If `true` then `first` and `after` args are _not_ present. When disabled, `last` arg becomes required, unless you disable `strictArgs`. - - ##### Default - - `false` - - - `disableBackwardPagination` - If `true` then `last` and `before` args are _not_ present. When disabled, `first` arg becomes required, unless you disable `strictArgs`. - - ##### Default - - `false` - - - `strictArgs` - Whether `first`/`last` arg nullability should reflect the forward/backward pagination configuration. When `true`, then the following pattern is used: - - - when _only_ forward pagination enabled - - meaning, `disableForwardPagination && !disableBackwardPagination` - - then, `last` arg is required - - when _only_ backward pagination enabled - - meaning, `!disableForwardPagination && disableBackwardPagination` - - then, `first` arg is required - - ##### Default - - `true` - - - `validateArgs` - Custom logic to validate the args. Throw an error to signal validation failure. - - ##### Signature - -

- - ```ts - (args: Args, info: ResolverInfo) => void - ``` - - ##### Default - - Validates that client passes a `first` or a `last` arg, and not both. - - - `extendConnection` - Dynamically add additional fields to the GraphQL connection object. Similar to `extendEdge`. - - ##### Signature - -

- - ```ts - (t: TypeBuilder) => void - ``` - - ##### Default - - `undefined` - - ##### Remarks - - Because this customizes the GraphQL connection object type, the _name_ of the type will necessarily be changed as well. If it didn't, it would conflict with the non-extended connection type in your schema (if any). The following pattern will be used to name the GraphQL object type: - -

- - ``` - {camelCaseJoin: }_Connection - ``` - - ##### Example - - ```ts - schema.queryType({ - name: 'Query', - definition(t) { - t.connection("toto", { - type: 'Boolean', - extendConnection(t) { - t.string('foo', () => 'bar') - } - }), - ... - } - }) - ``` - - ```graphql - type QueryToto_Connection { - edges: [BooleanEdge] - pageInfo: PageInfo! - foo: String! - } - ... - ``` - - - `extendEdge` - Dynamically add additional fields to the GraphQL edge object. Similar to `extendConnection`. - - ##### Signature - -

- - ```ts - (t: TypeBuilder) => void - ``` - - ##### Default - - `undefined` - - ##### Remarks - - Because this customizes the GraphQL edge object type, the _name_ of the type will necessarily be changed as well. If it didn't, it would conflict with the non-extended edge type in your schema (if any). The following pattern will be used to name the GraphQL object type: - -

- - ``` - {camelCaseJoin: }_Edge - ``` - - ##### Example - - ```ts - schema.queryType({ - name: 'Query', - definition(t) { - t.connection("toto", { - type: 'Boolean', - extendEdge(t) { - t.string('foo', () => 'bar') - } - }), - ... - } - }) - ``` - - ```graphql - type QueryToto_Edge { - cursor: String! - node: Boolean! - foo: String! - } - ... - ``` - - * `pageInfoFromNodes` - Override the default algorithm to determine `hasNextPage` and `hasPreviousPage` page info fields. Often needed when using `cursorFromNode`. See `nodes` for what default algorithm is. - - ##### Signature - - ```ts - ( - nodes: Node[], - args: Args, - context: Context, - info: ResolverInfo - ) => { - hasNextPage: boolean, - hasPreviousPage: boolean - } - ``` - - ##### Default - - `undefined` - - * `cursorFromNode` - Approach we use to transform a node into a cursor - - ##### Signature - - ```ts - ( - node: Node, - args: Args, - context: Context, - info: ResolverInfo, - forCursor: { - index: number - nodes: Node[] - } - ) => MaybePromise - ``` - - ##### Default - - `'nodeField'` - -##### SchemaContributions {docsify-ignore} - -todo - -##### Example of using `resolve` {docsify-ignore} - -```ts -import { schema } from 'nexus' -import { connectionFromArray } from 'graphql-relay' - -schema.queryType({ - definition(t) { - t.connection('users', { - type: 'User', - async resolve(root, args, ctx, info) { - return connectionFromArray(await ctx.resolveUserNodes(), args) - }, - }) - }, -}) -``` - -##### Example of using `nodes` {docsify-ignore} - -```ts -schema.queryType({ - definition(t) { - t.connection('users', { - type: 'User', - nodes(root, args, ctx, info) { - // [{ id: 1, ... }, ..., { id: 10, ... }] - return ctx.users.resolveForConnection(root, args, ctx, info) - }, - }) - }, -}) -``` - -One limitation of the `nodes` property, is that you cannot paginate backward without a `cursor`, or without defining a `cursorFromNode` property on either the field or plugin config. This is because we can't know how long the connection list may be to begin paginating backward. - -```ts -schema.queryType({ - definition(t) { - t.connection('usersConnectionNodes', { - type: 'User', - cursorFromNode(node, args, ctx, info, { index, nodes }) { - if (args.last && !args.before) { - const totalCount = USERS_DATA.length - return `cursor:${totalCount - args.last! + index + 1}` - } - return connectionPlugin.defaultCursorFromNode(node, args, ctx, info, { - index, - nodes, - }) - }, - nodes() { - // ... - }, - }) - }, -}) -``` - -##### Example of using `additionalArgs` {docsify-ignore} - -```ts -schema.queryType({ - definition(t) { - t.connection('userConnectionAdditionalArgs', { - type: 'User', - disableBackwardPagination: true, - additionalArgs: { - isEven: schema.booleanArg({ - description: 'If true, filters the users with an odd pk', - }), - }, - resolve() { - // ... - }, - }) - }, -}) -``` - -##### Example of extending connection type globally {docsify-ignore} - -```ts -settings.change({ - schema: { - connections: { - extendConnection: { - totalCount: { - type: 'Int', - }, - }, - }, - }, -}) - -schema.queryType({ - definition(t) { - t.connection('users', { - type: 'User', - nodes() { - // ... - }, - totalCount() { - return ctx.users.totalCount(args) - }, - }) - }, -}) -``` - -##### Example of extending connection type for one field {docsify-ignore} - -```ts -schema.queryType({ - definition(t) { - t.connection('users', { - extendConnection(t) { - t.int('totalCount', { - resolve(source, args, ctx) { - return ctx.users.totalCount(args), - } - }) - }, - }) - }, -}) -``` - -### `queryType` - -Refer to `objectType`. This is a shorthand where `config.name` is assigned `Query`. - -### `mutationType` - -Refer to `objectType`. This is a shorthand where `config.name` is assigned `Mutation`. - -### `subscriptionType` - -Not implemented, please see [#447](https://github.com/graphql-nexus/nexus/issues/447). - -### `inputObjectType` - -[GraphQL Docs for Input Object Types](https://graphql.org/learn/schema/#input-types) - -Defines an object which can be passed as an input value. - -##### Signature - - -```ts -(config: { - description?: string - nonNullDefaults?: NonNullConfig - definition: InputObjectDefinitionBlock -}) => NexusInputObjectType -``` - -- `name` - The name of this object. - -- `description` - The description of this object. Tools like GraphQL Playground can display this content. - - ##### Default - - `undefined` - -- `nonNullDefaults` - todo - - ##### Default - - `undefined` - -- `definition` - See below for the various field builders available. - -##### Example - -
- -```ts -import { schema } from 'nexus' - -schema.inputObjectType({ - name: 'MyInput', - definition(t) { - t.string('foo', { required: true }) - t.int('bar') - }, -}) - -schema.objectType({ - name: 'Qux', - definition(t) { - t.string('toto', { - args: { - myInput: 'MyInput', - }, - }) - }, -}) -``` - -```graphql -input MyInput { - bar: Int - foo: String! -} - -type Qux { - toto(myInput: MyInput): String -} -``` - -
- -Unlike object types, input types do not have arguments, so they do not have resolvers or "backing types" - -#### `t.field` - -todo - -#### `t.` - -todo - -#### `t.list` - -todo - -### `enumType` - -[GraphQL Docs for Enum Types](https://graphql.org/learn/schema/#enumeration-types) - -##### Signature - -```ts -enumType(config: NexusEnumTypeConfig): NexusEnumTypeDef -``` - -##### `NexusEnumTypeConfig` options - -- `name` **(required)**: Name of your type - -- `members` **(required)**: All members of the enum, either as an array of strings/definition objects, as an object, or as a TypeScript enum - -- `description` _(optional)_: The description to annotate the GraphQL SDL - -- `rootTyping` _(optional)_: Root type information for this type. By default, types are extracted for any .ts file in your project. You can configure that from the `schema.rootTypingsGlobPattern` setting - -##### Example - -Defining as an array of enum values: - -```ts -import { schema } from 'nexus' - -const Episode = schema.enumType({ - name: 'Episode', - members: ['NEWHOPE', 'EMPIRE', 'JEDI'], - description: 'The first Star Wars episodes released', -}) -``` - -As an object, with a simple mapping of enum values to internal values: - -```ts -import { schema } from 'nexus' - -const Episode = schema.enumType({ - name: 'Episode', - members: { - NEWHOPE: 4, - EMPIRE: 5, - JEDI: 6, - }, -}) -``` - -### `interfaceType` - -[GraphQL Docs for Interface Types](https://graphql.org/learn/schema/#input-types) - -In Nexus, you do not need to redefine the interface fields on the -implementing object types, instead you may use `.implements(interfaceName)` -and all of the interface fields will be added to the type. - -##### Signature - -```ts -interfaceType(config: NexusInterfaceTypeConfig): NexusInterfaceTypeDef -``` - -##### `NexusInterfaceTypeConfig` options - -- `name` **(required)**: Name of your type - -- `definition` **(required)**: A function to define the fields of your type - -- `description` _(optional)_: The description to annotate the GraphQL SDL - -- `nonNullDefaults` _(optional)_: Configures the nullability for the type, check the documentation's "Getting Started" section to learn more about GraphQL Nexus's assumptions and configuration - on nullability. - -- `rootTyping` _(optional)_: Root type information for this type. By default, types are extracted for any .ts file in your project. You can configure that from the `schema.rootTypingsGlobPattern` setting - -##### Example - -```ts -import { schema } from 'nexus' - -schema.interfaceType({ - name: 'Node', - definition(t) { - t.id('id', { description: 'GUID for a resource' }) - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.implements('Node') - }, -}) -``` - -If you need to modify the description or resolver defined by an interface, you can call the `modify` method on `objectType` to change these after the fact. - -### `scalarType` - -[GraphQL Docs for Scalar Types](https://graphql.org/learn/schema/#scalar-types) - -Nexus allows you to provide an `asNexusMethod` property which will make the scalar available as a builtin on the definition block object. We automatically generate and merge the types so you get type-safety just like the scalar types specified in the spec. - -##### Signature - -```ts -scalarType(config: NexusScalarTypeConfig): NexusScalarTypeDef -``` - -##### `NexusScalarTypeConfig` options - -- `name` **(required)**: Name of your type - -- `serialize` **(required)**: Serializes an internal value to include in a response - -- `description` _(optional)_: The description to annotate the GraphQL SDL - -- `deprecation` _(optional)_: Any deprecation info for this scalar type - -- `parseValue` _(optional)_: Parses an externally provided value to use as an input - -- `parseLiteral` _(optional)_: Parses an externally provided literal value to use as an input - -- `asNexusMethod` _(optional)_: Adds this type as a method on the Object/Interface definition blocks - -- `rootTyping` _(optional)_: Root type information for this type. By default, types are extracted for any .ts file in your project. You can configure that from the `schema.rootTypingsGlobPattern` setting - -##### Example - -```ts -import { schema } from 'nexus' - -schema.scalarType({ - name: 'Date', - asNexusMethod: 'date', - description: 'Date custom scalar type', - parseValue(value) { - return new Date(value) - }, - serialize(value) { - return value.getTime() - }, - parseLiteral(ast) { - if (ast.kind === Kind.INT) { - return new Date(ast.value) - } - return null - }, -}) -``` - -### `unionType` - -[GraphQL Docs for Union Types](https://graphql.org/learn/schema/#union-types) - -Union types are very similar to interfaces, but they don't get to specify any -common fields between the types. - -##### Signature - -```ts -unionType(config: NexusUnionTypeConfig): NexusUnionTypeDef -``` - -##### `NexusUnionTypeConfig` options - -- `name` **(required)**: Name of your type - -- `description` _(optional)_: The description to annotate the GraphQL SDL - -- `deprecation` _(optional)_: Info about a field deprecation. Formatted as a string and provided with the deprecated directive on field/enum types and as a comment on input field - -- `rootTyping` _(optional)_: Root type information for this type. By default, types are extracted for any .ts file in your project. You can configure that from the `schema.rootTypingsGlobPattern` setting - -##### Example - -```ts -import { schema } from 'nexus' - -schema.unionType({ - name: 'MediaType', - description: 'Any container type that can be rendered into the feed', - definition(t) { - t.members('Post', 'Image', 'Card') - t.resolveType((item) => item.name) - }, -}) -``` - -### `arg` - -[GraphQL Docs on Arguments](https://graphql.org/learn/schema/#arguments) - -##### Signature - - -```ts -(config: { - type: 'Boolean' | 'Float' | 'Int' | 'String' | 'ID' - default?: TYPEGEN - description?: string - list?: null | true | boolean[] - nullable?: boolean - required?: boolean -}) => NexusArgDef -``` - -- `type` - The type of the argument. - -- `required` - Whether the argument is required or not. - - When `true` then `nullable` is `false`. - -- `nullable` - Whether the argument is nullable or not. - - When `true` then `required` is `false`. - -- `list` - Whether the argument is a list or not. - - When `true` it is a list. - - When an array, the inner boolean specifies whether the list member can be nullable. - -- `description` - The description to annotate the GraphQL SDL - -##### Example - -Defines an argument that can be used in any object or interface type. Args can be reused in multiple locations, and it can be convenient to create your own wrappers around arguments. - -```ts -import { schema } from 'nexus' -import { ScalarArgConfig } from 'nexus/types' - -function requiredInt(opts: ScalarArgConfig) { - return schema.arg({ ...opts, required: true, type: 'Int' }) -} -``` - -### `Arg` - -``` -idArg -stringArg -booleanArg -intArg -floatArg -``` - -Sugar for creating arguments of type `Int` `String` `Float` `ID` `Boolean`. - -### `addToContext` - -Add context to your graphql resolver functions. The objects returned by your context contributor callbacks will be shallow-merged into `ctx`. The `ctx` type will also accurately reflect the types you return from callbacks passed to `addToContext`. - -##### Example - -```ts -import { schema } from 'nexus' - -schema.addToContext((_req) => { - return { - greeting: 'Howdy!', - } -}) - -schema.queryType({ - definition(t) { - t.string('hello', { - resolve(_root, _args, ctx) { - return ctx.greeting - }, - }) - }, -}) -``` - -### `use` - -Add schema plugins to your app. These plugins represent a subset of what framework plugins ([`app.use`](/api/modules/main/exports/use)) can do. This is useful when, for example, a schema plugin you would like to use has not integrated into any framework plugin. You can find a list of schema plugins [here](/components/schema/plugins). - -##### Example - -```ts -import { schema } from 'nexus' -import somePlugin from 'some-plugin' - -schema.use(somePlugin()) - -schema.use({ - name: 'myPlugin', - description: 'my inline schema plugin', - // ... -}) -``` - -### `middleware` - -Run arbitrary logic before and/or after GraphQL resolvers in your schema. Middleware is run as a first-in-first-out (FIFO) stack. The order of your middleware definitions determines their order in the stack. - -##### Signature - -```ts -schema.middleware((config: CreateFieldResolverInfo) => MiddlewareFn | undefined)): void -``` - -`schema.middleware` expect a function with the signature `(root, args, ctx, info, next)` to be returned. - -If the current middleware function does not end the request-response cycle, it must call `next` to pass control to the next middleware function, until the actual GraphQL resolver gets called. - -> Note: You can skip the creation of a middleware by returning `undefined` instead of a middleware. - -##### Example: Simple middlewares - -```ts -// graphql.ts -import { schema } from 'nexus' - -schema.middleware((_config) => { - return async (root, args, ctx, info, next) => { - ctx.log.info('before - middleware 1') - const result = await next(root, args, ctx, info) - ctx.log.info('after - middleware 1') - return result - } -}) - -schema.middleware((_config) => { - return async (root, args, ctx, info, next) => { - ctx.log.info('before - middleware 2') - const result = await next(root, args, ctx, info) - ctx.log.info('after - middleware 2') - return result - } -}) - -schema.queryType({ - definition(t) { - t.string('hello', (_root, _args, ctx) => { - ctx.log.info('executing resolver') - return Promise.resolve('world') - }) - }, -}) - -/** - * Output - * before - middleware 1 - * before - middleware 2 - * executing resolver - * after - middleware 2 - * after - middleware 1 - */ -``` - -##### Example: Trace resolvers completion time of the `Query` type only - -```ts -import { schema } from 'nexus' - -schema.middleware((config) => { - if (config.parentTypeConfig.name !== 'Query') { - return - } - - return async (root, args, ctx, info, next) => { - const startTimeMs = new Date().valueOf() - const value = await next(root, args, ctx, info) - const endTimeMs = new Date().valueOf() - const resolver = `Query.${config.fieldConfig.name}` - const completionTime = endTimeMs - startTimeMs - - ctx.log.info(`Resolver '${resolver}' took ${completionTime} ms`, { - resolver, - completionTime, - }) - - return value - } -}) - -schema.queryType({ - definition(t) { - t.string('hello', async () => { - // Wait two seconds - await new Promise((res) => setTimeout(res, 2000)) - return 'world' - }) - }, -}) - -/** - * Output: - * ● server:request Resolver 'Query.hello' took 2001 ms -- resolver: 'Query.hello' time: 2001 - */ -``` - -### `importType` - -##### Signature - -```ts -(scalarType: GraphQLScalarType, methodName?: string): GraphQLScalarType -(type: GraphQLNamedType): GraphQLNamedType -``` - -`schema.importType` is useful for adding existing GraphQL.js types into your Nexus schema. - -[Check out this repository](https://github.com/Urigo/graphql-scalars) for a handful list of useful scalar types that might be useful to your GraphQL API. - -When passing a `GraphQLScalarType`, you can additionally pass a `methodName` as a second parameter, which will augment the `t` parameter of your definition builder with a convenient method to create a field of the associated type. - -##### Example: Adding a date scalar type - -```ts -import { schema } from 'nexus' -import { GraphQLDate } from 'graphql-iso-date' - -schema.importType(GraphQLDate, 'date') - -schema.objectType({ - name: 'SomeObject', - definition(t) { - t.date('createdAt') // t.date() is now available (with types!) thanks to `importType` - }, -}) -``` - -`schema.importType` can also be used to add types from an existing GraphQL schema into your Nexus schema. This is useful to incrementally adopt Nexus if you already have a GraphQL schema built with a different technology than Nexus. - -##### Example: Adding types from a schema-first schema - -```ts -import { schema } from 'nexus' -import { existingSchema } from './existing-schema' - -Object.values(existingSchema.getTypeMap()).forEach(schema.importType) -``` - -### Type Glossary - -#### `I` `FieldConfig` - -```ts -{ - type: string - args?: Args - description?: string - deprecation?: string - nullable?: boolean - list?: true | boolean[] - resolve: Resolver -} -``` - -#### `O` `Args` - -todo - -#### `U` `GraphQLType` - -todo - -#### `I` `TypeBuilder` - -todo - -#### `I` `Context` - -todo - -#### `I` `ResolverInfo` - -todo - -#### `I` `Node` - -todo - -#### `I` `NonNullConfig` - -todo - -```ts -{ - /** - * Whether output fields are non-null by default. - * - * type Example { - * field: String! - * otherField: [String!]! - * } - * - * @default true - */ - output?: boolean; - /** - * Whether input fields (field arguments, input type members) - * are non-null by default. - * - * input Example { - * field: String - * something: [String] - * } - * - * @default false - */ - input?: boolean; -} -``` - -#### `I` `RootTypingImport` - -todo - -```ts -{ - /** - * File path to import the type from. - */ - path: string; - /** - * Name of the type we want to reference in the `path` - */ - name: string; - /** - * Name we want the imported type to be referenced as - */ - alias?: string; -} -``` - -#### `F` `Resolver` - -todo - -#### `S` `NexusGenBackingTypes` - -todo - -By default, types are extracted for any .ts file in your project. You can configure that from the `schema.rootTypingsGlobPattern` setting diff --git a/docs/api/modules/main/exports/server.md b/docs/api/modules/main/exports/server.md deleted file mode 100644 index 918ad5116..000000000 --- a/docs/api/modules/main/exports/server.md +++ /dev/null @@ -1,26 +0,0 @@ -# `import { server }` - -[issues](https://nxs.li/issues/component/server) / [features](https://nxs.li/issues/components/server/features) | [bugs](https://nxs.li/issues/component/server/bugs) - -Use the server to run the HTTP server that clients will connect to. - -### `express` - -Gives you access to the underlying `express` instance. - -Use this to add middlewares or expose additional REST endpoints if needed. - -##### Example of using middlewares - -```ts -import cors from 'cors' -import { server } from 'nexus' - -server.express.use(cors()) -``` - -### `raw.http` - -The underlying [Node HTTP Server](https://nodejs.org/api/http.html#http_class_http_server) instance. - -Access to this is made available mostly as an escape hatch, and maybe a few valid advanced use-cases. If you haven't already/are not sure, consider [opening an issue](https://nxs.li/issues/create/feature) for your use-case. Maybe Nexus can and should provide better first-class support for what you are trying to do! diff --git a/docs/api/modules/main/exports/settings.md b/docs/api/modules/main/exports/settings.md deleted file mode 100644 index 21bf42ebf..000000000 --- a/docs/api/modules/main/exports/settings.md +++ /dev/null @@ -1,443 +0,0 @@ -# `import { settings }` - -[issues](https://github.com/graphql-nexus/nexus/labels/scope%2Fsettings) - [`feature`](https://github.com/graphql-nexus/nexus/issues?q=is%3Aopen+label%3Ascope%2Fsettings+label%3Atype%2Ffeat) [`bug`](https://github.com/graphql-nexus/nexus/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Ascope%2Fsettings+label%3Atype%2Fbug+) - -Use the settings to centrally configure various aspects of the various components. - -### `change` - - -```ts -(settingsInput: { - server?: { - port?: number - host?: string - path?: string - playground?: boolean | { path?: string } - } - authorization?: false | { formatError?: (authConfig: AuthorizationConfig) => Error } - schema?: { - nullable?: { - outputs?: boolean - inputs?: boolean - } - connections?: Record - generateGraphQLSDLFile?: false | string - rootTypingsGlobPattern?: string - } - logger?: { - filter?: - | string - | { - level?: Level - pattern?: string - } - pretty?: - | boolean - | { - enabled: boolean - timeDiff: boolean - color: boolean - levelLabel: boolean - } - } -}) => Settings -``` - -Change your app's current settings. This is an additive API meaning it can be called multiple times, each time merging with the previous settings. - -#### `server.playground` - -
- -``` -boolean -``` - -Should the app expose a [GraphQL Playground](https://github.com/prisma-labs/graphql-playground) to clients? - -_Default_ - -`true` in dev, `false` otherwise. - -#### `server.port` - -
- -``` -number -``` - -The port the server should listen on. - -_Default_ - -- Is `NEXUS_PORT` environment variable set? Then that. -- Is `PORT` environment variable set? Then that. -- Is `NODE_ENV` environment variable `production`? Then `80` -- Else `4000` - -#### `server.host` - -
- -``` -string -``` - -The host the server should listen on. - -_Default_ - -- Is `HOST` environment variable set? Then that. -- Else the [Node HTTP server listen default](https://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback) which is `'::'` if IPv6 is present otherwise `'0.0.0.0'` for IPv4. - -#### `server.path` - -
- -``` -string -``` - -The path on which the GraphQL API should be served. - -_Default_ - -`/graphql` - -#### `schema.nullable.inputs` - -
- -``` -boolean -``` - -Should passing arguments be optional for clients by default? - -_Default_ - -`true` - -#### `schema.nullable.outputs` - -
- -``` -boolean -``` - -Should the data requested by clients _not_ be guaranteed to be returned by default? - -_Default_ - -`true` - -#### `schema.generateGraphQLSDLFile` - -
- -``` -false | string -``` - -Should a [GraphQL SDL file](https://www.prisma.io/blog/graphql-sdl-schema-definition-language-6755bcb9ce51) be generated when the app is built and to where? - -A relative path is interpreted as being relative to the project directory. Intermediary folders are created automatically if they do not exist already. - -_Default_ - -`api.graphql` - -#### schema.authorization - -
- -``` -false | { formatError?: (authConfig: AuthConfig) => Error } -``` - -Disable or configure the `authorize` field behaviour. - -#### `schema.rootTypingsGlobPattern` - -
- -``` -string -``` - -A glob pattern which will be used to find the files from which to extract the backing types used in the `rootTyping` option of `schema.(objectType|interfaceType|unionType|enumType)` - -_Default_ - -The default glob pattern used id `./**/*.ts` - -#### `schema.connections` - -
- -```ts -Record -``` - -todo - -###### Example of adding a specialized kind of connection field builder {docsify-ignore} - -```ts -import { settings } from 'nexus' - -settings.change({ - schema: { - connections: { - analyticsConnection: { - typePrefix: 'Analytics', - extendConnection: { - totalCount: { type: 'Int' }, - avgDuration: { type: 'Int' }, - }, - }, - }, - }, -}) -``` - -###### Example of including a `nodes` field like GitHub API globally {docsify-ignore} - -If you want to include a `nodes` field, which includes the nodes of the connection flattened into an array similar to how GitHub does in their [GraphQL API](https://developer.github.com/v4/), set schema setting `includeNodesField` to `true`. - -```ts -import { settings } from 'nexus' - -settings.change({ - schema: { - connections: { - default: { - includeNodesField: true, - }, - }, - }, -}) -``` - -```graphql -query IncludeNodesFieldExample { - users(first: 10) { - nodes { - id - } - pageInfo { - endCursor - hasNextPage - } - } -} -``` - -#### `logger.filter` - -
- -``` -string | { level?: Level, pattern?: string } -``` - -`string` form is shorthand for `logger.filter.pattern`. See below for object form. - -#### `logger.filter.level` - -Set the default filter level. This setting is used whenever a filter pattern does not specify the level. For example filter patterns like `*` `app` and `app:*` would use this setting but filter patterns like `*@*` `app@info+` `app:router@trace` would not. - -When a log falls below the set level then it is not sent to the logger output (typically stdout). - -_Default_ - -First found in the following order - -1. `LOG_LEVEL` env var -2. `'info'` if `NODE_ENV=production` -3. `'debug'` - -#### `logger.filter.pattern` - -
- -``` -string -``` - -Filter logs by path and/or level. - -_Default_ - -`'app:*, nexus:*@info+, *@warn+'` - -##### Examples - -``` - All logs at... - - Path - app app path at default level - app:router app:router path at default level - - List - app,nexus app and nexus paths at default level - - Path Wildcard - * any path at default level - app:* app path plus descendants at default level - app::* app path descendants at default level - - Negation - !app any path at any level _except_ those at app path at default level - !* no path (meaning, nothing will be logged) - - Removal - *,!app any path at default level _except_ logs at app path at default level - *,!*@2- any path _except_ those at debug level or lower - app,!app@4 app path at default level _except_ those at warn level - - Levels - *@info all paths at info level - *@error- all paths at error level or lower - *@debug+ all paths at debug level or higher - *@3 all paths at info level - *@4- all paths at error level or lower - *@2+ all paths at debug level or higher - app:*@2- app path plus descendants at debug level or lower - app::*@2+ app path descendants at debug level or higher - - Level Wildcard - app@* app path at all levels - *@* all paths at all levels - - Explicit Root - . root path at default level - .@info root path at info level - .:app Same as "app" - .:* Same as "*" -``` - -#### `logger.pretty` - -Shorthand for `logger.pretty.enabled`. - -#### `logger.pretty.enabled` - -Should logs be logged with rich formatting etc. (`true`), or as JSON (`false`)? - -_Default_ - -- Is `LOG_PRETTY` environment variable `true`? Then `true`. -- Is `LOG_PRETTY` environment variable `false`? Then `false`. -- Is process.stdout attached to a TTY? Then `true` - -###### Example of what it looks like - -``` -LOG_DEMO=true nexus dev -``` - -``` ------------ -LOGGER DEMO ------------ - 4 ✕ root:foo -- lib: /see/ - 0 ■ root:foo - | har { mar: 'tek' } - | jar [ - | 1, 2, 3, 4, 4, 5, 6, - | 6, 7, 9, 1, 2, 4, 5, - | 6, 7, 3, 6, 5, 4 - | ] - | kio [Object: null prototype] [foo] {} - 1 ▲ root:foo -- bleep: [ 1, '2', true ] - 0 ● root:foo - 1 ○ root:foo - | results [ - | { userId: 1, id: 1, title: 'delectus aut autem', completed: false }, - | { userId: 1, id: 2, title: 'quis ut nam facilis et officia qui', completed: false }, - | { userId: 1, id: 3, title: 'fugiat veniam minus', completed: false }, - | { userId: 1, id: 4, title: 'et porro tempora', completed: true }, - | { - | userId: 1, - | id: 5, - | title: 'laboriosam mollitia et enim quasi adipisci quia provident illum', - | completed: false - | } - | ] - | tri 'wiz' - | on false - 0 ○ root:foo -- foo: 'bar' - 0 — root:foo -- a: 1 b: 2 c: 'three' ------------ -``` - -#### `logger.pretty.color` - -Should logs have color? - -_Default_ - -`true` - -#### `logger.pretty.timeDiff` - -Should a time delta between each log be shown in the gutter? - -_Default_ - -`true` - -#### `logger.pretty.levelLabel` - -Should the label of the level be shown in the gutter? - -_Default_ - -`false` - -##### Example - -```ts -import { settings } from 'nexus' - -settings.change({ - server: { - port: 9876, - }, -}) -``` - -### `current` - -##### Type - -```ts -SettingsData -``` - -A reference to the current settings object. - -### `original` - -```ts -SettingsData -``` - -A reference to the original settings object. - -### Type Glossary - -#### Level - -``` -'trace' | 'debug' | 'info' | 'warn' | 'critical' | 'fatal' -``` - -#### SettingsData - -todo diff --git a/docs/api/modules/main/exports/use.md b/docs/api/modules/main/exports/use.md deleted file mode 100644 index 5792d256b..000000000 --- a/docs/api/modules/main/exports/use.md +++ /dev/null @@ -1,28 +0,0 @@ -# `import { use }` - -[issues](https://nxs.li/issues/component/plugins) / [features](https://nxs.li/issues/components/plugins/features) | [bugs](https://nxs.li/issues/component/plugins/bugs) - -Use the plugin component to add new functionality to your project. - -##### Signature - -```ts -(nexusPlugin: NexusPlugin) => void -``` - -##### Example - -```ts -import { use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' - -use(prisma()) -``` - -##### Remarks - -To discover plugins, simply look to the sidebar listing on this website. - -To get an overview of what Nexus plugin _are_ refer to the [Plugins guide](/guides/plugins). - -To learn how to write your own plugins refer to the [Writing Plugins guide](/guides/writing-plugins). diff --git a/docs/api/modules/plugin.md b/docs/api/modules/plugin.md deleted file mode 100644 index 2d24a66a4..000000000 --- a/docs/api/modules/plugin.md +++ /dev/null @@ -1,25 +0,0 @@ -# `/plugin` - -## `F` `RuntimePlugin` - -todo - -## `F` `TesttimePlugin` - -todo - -## `F` `WorktimePlugin` - -todo - -## `I` `RuntimeLens` - -todo - -## `I` `TesttimeLens` - -todo - -## `I` `WorktimeLens` - -todo diff --git a/docs/api/modules/testing.md b/docs/api/modules/testing.md deleted file mode 100644 index a13f35abd..000000000 --- a/docs/api/modules/testing.md +++ /dev/null @@ -1,76 +0,0 @@ -# `/testing` - -## `createTestContext` - -Setup a test context providing utilities to query against your GraphQL API. - -This context can be augmented by plugins. - -##### Signature - -```ts -function createTestContext(opts?: CreateTestContextOptions): Promise -``` - -##### Example With Jest - -```ts -import { TestContext, createTestContext } from 'nexus/testing' - -let ctx: TestContext - -beforeAll(async () => { - Object.assign(ctx, await createTestContext()) - await ctx.app.start() -}) - -afterAll(async () => { - await ctx.app.stop() -}) - -test('hello', async () => { - const result = await ctx.client.send(`{ hello }`) - - expect(result).toMatchInlineSnapshot() -}) -``` - -## `I` CreateTestContextOptions - -```ts -export interface CreateTestContextOptions { - /** - * A path to the entrypoint of your app. Only necessary if the entrypoint falls outside of Nexus convention. - * You should typically use this if you're using `nexus dev --entrypoint` or `nexus build --entrypoint`. - */ - entrypointPath?: string -} -``` - -## `I` `TestContext` - -```ts -export interface TestContext { - client: { - send: (query: string, variables: Record): Promise - headers: { - set(headers: Record): void - set(name: string, value: string): void - set(header: [string, string]): void - add(headers: Record): void - add(name: string, value: string): void - add(header: [string, string]): void - del(name: string): void - get(name: string): null | string - has(name: string): boolean - entries(): [string,string][] - } - } - app: { - server: { - start: () => Promise - stop: () => Promise - } - } -} -``` diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 81d548cb6..000000000 --- a/docs/architecture.md +++ /dev/null @@ -1,182 +0,0 @@ -## Repos & Packages - -
- -![Repos & Packages](https://dsc.cloud/661643/repos-and-packages.png) - -
- -## Reflection - -todo - -## Assembly - -todo - -## Plugins - -### Diagrams - -#### Plugin Tree Shaking - -![plugin-tree-shaking](https://dsc.cloud/661643/plugin-tree-shaking.png) - -### Glossary - -#### Entrypoint - -A plugin entrypoint is responsible for returning the plugin's manifest input. This is what users actually deal with at the app layer. - -```ts -import { prisma } from 'nexus-plugin-prisma' -// ~~~~~~ <------------- The entrypoint, returns a manifest input -import { use } from 'nexus' - -use(prisma()) -``` - -#### Manifest - -A plugin manifest describes logistical information about a plugin like where its package file is located on disk, what versions of Nexus it is compatible with, and more. - -Plugin manifests are created by Nexus by processing the manifest inputs returned by plugin entrypoints. - -```ts -import { prisma } from 'nexus-plugin-prisma' - -const prismaPluginManifestInput = prisma() -``` - -This lazy approach allows Nexus the flexibility it needs to provide features like automatic environment variable plugin settings injection and tree-shaking. - -#### Manifest Input - -A manifest input is the view of manifests that plugin authors work with. It models the minimum information that Nexus needs to build the plugin manifest. It is also more human friendly, for example minimizing the number of required fields. Developer experience is not the primary motivation here however. We want Nexus to control as much as possible, so the less the human has to specify the more we achieve this goal. For example we ask for a path to package json rather than the contents of it. We want Nexus to be the one that reads it, when and how it wants. - -#### Dimension - -A plugin dimension represents a high-level area of plugin concern that are separated by module from other dimensions. In other words, each dimension has its own entrypoint. Nexus will directly import it. A dimension is found by Nexus from Nexus reading the Plugin manifest. - -There are three dimensions: worktime, testtime, and runtime. Worktime allows plugins to tap into the CLI, the builder, dev mode, and more. Testtime allows plugins to tap into features of the Nexus testing component. Runtime allows plugins to tap into the API. - -Directionally Nexus is on a good track, but there is work still left to do. The names are a bit confusing when you dig into the details, and the supposed separation between worktime/runtime has undesirable "loopholes" because of reflection. Details; - -1. Runtime dimension does not mean plugging exclusively into what is run in your production code. There are actually reasons to plug into the runtime for ostensibly worktime benefit... This is due to Nexus' so-called reflection system, wherein the app is run in the background during development for development purposes. - -2. The rationale for splitting worktime from runtime is clear, tree-shaking alone makes the case for it. However the separation between worktime and testing is less clear, perhaps nonsense, and so may be revisited in the future. - -3. We've talked about motivation for separating worktime from runtime, yet there are runtime parts for worktime (reflection). What this means is that expensive dependencies can make there way into the runtime dimension that a user should actually _not_ be paying for in production runtime. - -#### Lens - -A plugin lens is just a specialized api into a subset of Nexus to hook into, extend, manipulate, and react to it during execution. The name "lens" is arbitrary. The choice comes from it being "view" into Nexus. Each dimension has its own specialized lens. - -#### Dimension Entrypoint - -Just like the plugin has a top level entrypoint so to does each dimension within the plugin have its own entrypoint. These sub-entrypoints can be thought as sub-plugins, with the top-level plugin just being a grouping mechanism. - -### Comparisons to Other Systems - -#### Rollup - -- Like Rollup plugins are prefixed with `-plugin-` -- We have considered but so far not put first-party Nexus plugins under the pattern `@nexus/plugin-`. Rollup made this transition retroactively. -- Rollup suggests plugins have a default export so that are much easier to use on the command line. Nexus suggests plugins also have default exports for similar system-usability reasons (not cli in Nexus' case, but other future features maybe like auto-use). - -### Loading Flow - -todo -what follows is a stub - -1. capture the used plugins in the app -1. validate entrypoints -1. transform entrypoints into manifests -1. for each dimension (work, test, run) in the manifest - 1. import it - 1. catch any import errors - 1. validate imported value - 1. load plugin - 1. catch any load errors - -## Build Flow - -1. The app layout is calculated - We discover things like where the entrypoint is, if any, and where [Nexus modules](/guides/project-layout?id=nexus-modules) are, if any. -1. Worktime plugins are loaded (see [Plugin Loading Flow](#plugin-loading-flow)) -1. Typegen is acquired - This step is about processes that reflect upon the app's source code to extract type information that will be automatically used in other parts of the app. This approach is relatively novel among Node tools. There are dynamic and static processes. The static ones use the TypeScript compiler API while the dynamic ones literally run the app with node in a special reflective mode. - - Dynamic has the benefit of being able to produce types that IDE's can pick up for use in not just TypeScript but also JavaScript. It works for the schema typegen because the GraphQL Schema builders permit generating accurate derived TypeScript. Dynamic works regardless of the abstractions users through over them. On the downside, dynamic is riskier because runtime errors in the app can halt its completion. When the types to be generated are based upon arbitrary code, the task becomes one of effectively re-writing TypeScript and thus impractical. - - Static doesn't have to deal with the unpredictabilities of running an app and so has the benefit of being easier to reason about in a sense. It also has the benefit of extracting accurate type information using the native TS system whereas dynamic relies on building TS types from scratch. This makes static a fit for arbitrary code. On the downside, robust AST processing is hard work, and so, so far, static restricts how certain expressions can be written, otherwise AST traversal fails. - - 1. A start module is created in memory. It imports the entrypoint and all [Nexus modules](/guides/project-layout?id=nexus-modules). It registers an extension hook to transpile the TypeScript app on the fly as it is run. The transpilation uses the project's tsconfig but overrides target and module so that it is runnable by Node (10 and up). Specifically es2015 target and commonjs module. For example if user had module of `esnext` the transpilation result would not be runnable by Node. - 1. The start module is run in a sub-process for maximum isolation. (we're looking at running within workers [#752](https://github.com/graphql-nexus/nexus/issues/752)) - 1. In parallel, a TypeScript instance is created and the app source is statically analyzed to extract context types. This does not require running the app at all. TypeScript cache called tsbuildinfo is stored under `node_modules/.nexus`. - -1. A new TypeScript instance is created so that the types generated in the previous step are picked up by the checker. This should be faster because it reuses the TypeScript cache created in the previous step. -1. The app is type checked -1. The app is transpiled -1. The app is emitted into `.nexus/build`. This convention keeps derived files in a well known generally ignored location. -1. A production-oriented start module is generated differing in the following ways: - - paths are relative - - typescript not hooked into module extensions - - plugins are imported for tree-shaking - -## Dependency Philosophy - -Nexus takes a different perspective on the arguably mainstream approach of Node dependency management. In Node it is common practice to write and share tiny reusable modules. Then, users build their applications by assembling these many smaller packages how they need to. - -Nexus takes a batteries included approach. Aside from being featureful, it also means bundling things that would typically be peer dependencies in other systems: `graphql` and `@nexus/schema` for Nexus itself, and for prisma plugin `@prisma/cli`, `@prisma/sdk`, and `@prisma/client`. There are numerous benefits to this. - -1. Setting up dependency automation tools like renovate lead to simpler experiences. - - For example when `graphql` 0.15 was released, bothering `nexus` users to upgrade it wouldn't have made sense since `@nexus/schema` didn't support it yet. - -2. Integration bugs are owned by the core team - - For example when TypeScript 3.9 was released `nexus-prisma` was incompatible with it. The types it generated led to static errors that were previously not there due to a change in how TS dealt with `any` as a type generic default. - -3. Simpler upgrade paths for you - - It is easier to piece together an upgrade path from one dep to another than a combination of `n` deps to another combination of `n` deps. In pratice what happens is the migration guide is written with a discrete set of `n` rather than all possible `n`. - -4. More "honest" than peer dependenies - - Peer dependencies in a nutshell are a loose contract encoding thus: "I, author of lib A, declare that A supports a _range_ of lib B that, you, user, will bring to the party". This sounds great, but how is this claim enforced? Its very likely not, at least rigorously. Trust in semver and a test suite against one version of `B` is probably how the majority of situations go. And so of course a not insubstantial burden falls onto users' laps. - - If Nexus, especially with Prisma plugin, were going to leverage peer dependencies (implying a range of lib support or what's the point?) doing it honestly would mean a test suite running against a matrix of the combinations of the supported ranges of peer deps. Nexus already runs a matrix of Node versions and OSs. Adding peer deps to the mix would further strain an already strained test setup. Then, of course, there would be the actual burden of supporting whatever idiosyncracies exist along the ranges. Our internal implementations would complexify, more tests would be needed, more room for bugs. - -5. Yarn `resolutions` to the rescue - - _But what if I **really** need an older or newer version of X transient dep!?_ - - If the bundled versions of deps in Nexus or Prisma plugin aren't meeting your needs and there is an urgent issue you can use the [yarn resolutions](https://classic.yarnpkg.com/en/docs/selective-version-resolutions) option. If you aren't using `yarn` or a package manager with similar capability, and you aren't willing to, then you probably don't have an urgent issue. - - Of course by doing this you're going outside what a given version of Nexus officially supports, so, YMMV "your mileage may vary"! But its not like if Nexus were using peer dep ranges that this caveat would magically go away. - -In conclusion, from both a DX and engineering resource perspective we believe the best dep strategy for Nexus is not peer deps but internalized deps. Recapping the tradeoffs: - -- **Cost:** Giving you less flexibility to tailor the packages you use - ...but even then _not really_. You _can_ have final say via Yarn's `resolutions` setting. - -- **Benefit:** For us, lowering our implementation complexity, tests, and test infrastructure; The number of bugs which we in turn have to spend more time triaging, reproducting, and investigating. For you, less things to install, think about; More confidence that integration works; More overhead around dep management, changelog consumption, upgrade paths, and, invariably, bug reporting. - -## Glossary - -### Assembly - -The process in which the app "configuration" (settings, schema type defs, used plugins, etc.) is processed into a runnable state. Nexus apps are only ever assembled once in their process lifecycle. - -### Reflection - -The general idea of the app source code or its state at runtime being analyzed to extract data. - -### Dynamic Reflection - -The process in which the app is run in order to extract data out of it. The data in turn can be used for anything. For example typegen to provide better TypeScript types or GraphQL SDL generation. - -### Static Reflection - -The process in which the app is analyzed with the TS API to extract data out of it. The data in turn can be used for anything. For example typegen to provide better TypeScript types. diff --git a/docs/assets/diagram-backing-types-1.png b/docs/assets/diagram-backing-types-1.png deleted file mode 100644 index 71e98def1b46dc12faca37a5e7f329ffd8b044c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183961 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 diff --git a/docs/assets/diagram-backing-types-2.png b/docs/assets/diagram-backing-types-2.png deleted file mode 100644 index a2af3b4d2c63f22295b90922e1632ba03d93d8b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191102 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 dx3@=6xEGP9aJpQVq!Q?)YpR83~g%* zfij8c9Ft;4vk?;L3l=#bruJN^rqeoXoC(mV&HqeM^=u2?^&e|M8UVsgIURtV-Hb2Rp8U z`|BX#)&uQa@ZOkhCM;e?HPN;LUc^MaFdhe z<7;L+$F&ESaq`Q`)@cGwplNtp1&A6JsgA$~SCZ1~t*o@0eU1Rf#m2@)aPmGIo5-`( zK>*tTcyYkoe(1VB3PcgS;-27L9)@5mv-d`X9P3Rfu>gTd~6!c!5j8S)ediV~i zJdv@=)sawZa1{Fp9(pU@8$!!dBwK6X^KFhx%=-SzI(`W&K|l50$C+?04V$6hhX*fn zE^B!oXv$6l?hh9eKC=!%Qw=(1?LbSOOA9CEMWPSSH!BB#e9K;VZFRNXw~8eI{y7JL z?BrxD?*VZ@(*1q-nb?84E*z`owZ8)`Vn=O5p%~wv$O~D-(0(lX4t4QoP0MT?>>JEM zYw%=mb2{$X-0icg^4sLbjDe%_rHNmkyS2%pRq(rV7YJDM$D}_Wr{pRXY(f~4U1K(Ya zf1x7t()`7f+I=UeSAJv<+*gZXbMoXaMIrIY5}W_GG6277IXE}~jD&4a!t@D*J_X6VCc{ z3-pVH-J&mB8z5#{Ce(jb|5_*O3AehMyPx${E)iVu9azJ5FoAfcYi?1|CJ#8jo_0bYOB)ZxGRId#&w_RI zG*v5HVq2OJK00Ta#r?a%Hg1-4+jHXyiB%5}zud(*ZF`kA3de@)guJBg_GfC~&IO9x zOiFnRdur`0YxD5@sP2%g1*fLBu?5tjS|6ZTP_u_8yaGq?8U!?IWM`&BW2Mk+)DB8! zoXP|4(sth3BFbyLa}3mi`?7oHic>3OtIb~2Z+LO(=KLnoKgZmBXf*@;X;Y$OD=KC!e*jdv~~3KjsX|o6bzL?0vw@D@9v|fGE&IB!pFytOGpp~=&&#N#-r$g z41?3tjR5)#fcQxLw8X@QtLTg6Qh=TUQ20nJBL*IwnI)+Z{cht}!Q^2>3Z>iBo(ar4 zfvlx>FWBm$07&5jg;B#tDx7sme9qM>9J=X~JkuJmNMNPkYrcN{WJ^eH&`@=*!E3;= zo;s`h*iAY z6n%pt(|J;N<2SM>bbzx91rbzqo)gHbv>zMyrppPfUHZKd0b1|uzBM*2yeLysK*2V7 z&94KSsg~no!W?_^q=1}@(uj)kV#8nq8ZnOu>}Z19vOB>H_j%Vc10)I00R_&!ljT%{Bs`J9O~_=m@6V#q&;6ust2P93w!_XT z)lN@LR$iecqfvJAWEHpJxRq#oJjvhHt4`@WF^clCSple z_C&&PP#}c)px9{4Z_u$gz<3G|YBo0M8nM~O`fcZ@Z-dg^Nu#ESUAOw2eCZNHYDUKO z93=)mRA=m$79f{;ceFXk3u@Gijs>knvp&s%+xh5%OX|zLb#vtJOdVjB1vD9@l%x5+ zd=_3hu}*0K2mLXNT7j0;>5;E+-fwJ3ZU9-U4`MC%%XB~u0O>cFb;khaN;?Ae4N7?W zi|=Bhx9M(^3Ff^a_KhGDDxe(8SChI8-7wMHOKsjEXFeqxu(q?ym4np(G}E4^gI3`@qTIyx-B zDw36UPE@BA1`~!#)%ZBV#Df{Z71C1Q zFR43zg|k;vj3#SMvU@a9$~TQ#?t7m-7|^|)i+Q7d)+@4_mnzhzx+w(TmLxPjqjBV5 zJ>`LegsN%`9lf&g#}Wd}+uIYvXZ1M!^<3Ky5{g9OpCiE${prGb2LpmZU*;9d$c*qC zl_8L?bu-7z>l@zg(b{YM}>R@6OFsGk2_vwHM}=ql=7b99clkrS-a?-VhTUBm^@#%fK2 z(?A>z_#?QRBou-a1z0{&e)gy?!l2ApEa?fVmn^?0d=c=kZ1HKC9HwfvfPT_-EMied zC7HX29)V(a7)muo`VPe2*i?4&$YI{g%>VGlz z9^h2|;U92LWEGOpFe?$EjBE~yviIJ~ESqdjp-l-H+1WcJTT05_dsX(X?D^i0QGWmb z|9ao|y1Ketj&siQJm33!fA97Ad`im_=lB$eW4UkN@02oP$<=I3d(Rq`fKMakwC-T| zF)>X4?zWX&hD3ed6Q7Pyg>kfA!iBzB>uUcXq(b0Q5NubdKH^4hB488Z0oY6;-Tu-yq`Hw6c3ze z?~QhK)-)11g?BBog0oRD*Ss~6qd4IrHqifgxdXHl$f5J1>R)RPD5E)v#!rHT%(?9@7Q<2Iqf(ZmFxI(R`qGETTHyWUIWHaS!7DkA&9Zu zv$(;P&GSwpk>r)eL@`{V+gZy+wKeJCA({6UGU`L+m~_NnV!Nj6_4G-7?Ahl6U?PyC z5&_oJywaM%%f|Qhmb2QkQvx{X`&F}KlbE@c<*7vkWFb^nF06LC6xsRv_m*c!5&%bn z$e0%OhZvsj&=+2NSrHq5!EJeUYr)J*ct+qhd&+4Q`IEx9L=omAg=8J>_&*aPl=QX< z#J$Y-q7iH|0OyNaWiA(TJ!orsGb7poun8YYG$%~mzZfNV-dY_4K-feh{gXp0K+Luc z|9TrwqGX*Bp`=0AsSJe8B+F}a3ZS=tW(o$Eew8S+*d?YZZ6UOEzD$MXKW)t;K5K~f`F`?{cF&8i} z^L=}$^Ld5>eaau%cp>{UT~p8c9i~`tuZ}ly4{cFK3zx1v&B3Cj*}#yqsF#hWPSt2P zcHnT9G<;MTaAgWWSHeWbi|nK*%sG;usM zuUn?IOvN?G#yUtJv_D@%hux8ptE-ExNc`|DNioV}P3N+_xt*O|npy^E{5XyTs{^TG zj-Jq%j;3qGs@L|i*JAl?qE(>Y&<0#>sRqDB$(iQA0uRjkbS|;bLenvxzL?Q;RQNpl zk4qoGpLqtHjp2NN80hW{b6Argc2>#nC&u_k>N^JFu0I9sGK6L(=ZUDCTmw+YNM64h zl>USY+ei#Rd53AeHf-m0+lQ$(W(cER?ojh!-=|c-M!z+b0v?y)+4uhIF&zfay}=M zs_R2-0{0{jv%0EQyy1Ev-w3}?B^1w)Os5!8mw0p>^TWv4Yhy4!@|TyaWU$KWsz~2w z6`{lIt*)B%RI7dDChG&}$!({{6Ma2g>1V#?Q05PiI+JYJYwGQv^tjpZ)@=Y8e(H zlc12Nu5dqm{+1_z_L%46X*a*>CEhCf@Im7hRhKcU%~XCvbfhL&Xhc3rFomNvNxp!n zv$2@s%0w@ZoJmUlm+NOmu@RKt{rf2OBWcmHvMaIKXVfj?Nq5~WisDA9M#?A0g0{OJ zzk0s?mhG z#+3QP(htn1)Ha!3USp%eBTD&Bkwl&SkVhBWQIEJ9`bI32{Ct_7CEQc)nI9c&DGWzl zVexDdMHR_B(z~Z5dj}h%2fDc&4+Em-ZUqpHwQjvt86Y^PAe1^2_abA`Vg6CryQXM4 zmy7mmb=?WaXv*qUZjGK~7reFGT^-6q$gTP_Ui6SW;=>Y>+5q;K(fD3!eg|g&`T)iT z=lT(isR$g zvSRf8#FP^@CkEcKN&F*Y42~!rj^nK)HUYWD}=)1d5O(S_VzPM?I zV`B7r8(7(=sY2R{J~mk8msJo>r0B^3>|9QB8AW{rT;vZau@9yDl!SNPgPm0SGws=dvRkvGe6ODV zmS0O&YbIr7D^0!GsrM_7!#Cj9J3v&P>I z?o@R1(n!$A_hov9&b{y~+N!4b4W@Ltm?%`Uwys@h#$|s7j*bkqB~wT9#3|(jri-+x zv}t>JduveMYfU+=*KK*N=#v|;*1_J<_T?6@(7o4x`z}AJRtY-ohR9o!rO-744yM)!{h*E#N2Ngh z6O+kuvg%E1sh0Ndcxd`_h3;)fZN&2>5fXBVXV4f-m0LJYTAuZ3`@$;arZIb}Sv6oI zDIj*DOH_WlFb}oZ>$sG|soodg7kt_KC>~ z$B(F5cDDB&j@q`k+EQoX=^<3p%Rh4b1{1{mq>~Pu8rVO?fKXnubamrKjQ}}j><0DX z2r-YoN^kw94EY@9)z}#Vx&%Jr_aVodHJvhADI?@EWFIWNlUCY2MzOH(lME#c)6Mg8 z{%e^Rpn>z^TDFk{gi=j)$;Rr&&z=%J;sBT^I{*YK9; z`~W=%7{~HkS6EDkzrIvEiQ&LMmwoHT=O^Bt;c9UHT3Hv|>5j9BZfjGymzHpK*G1hY zONO9g`}95AnMGzHl}tB9w@u1h)juZYPdlD@KOw+NA*m88rc{6A`J(<)Y0acd6!LT) z{-@xcjYd_P6|qTH^b8g+C~G+AiJ#cY>T&RFl^UT8eG`8{sQs<;Q{rs)6EQt1rj7m` zv9srisJUNJeo$x!HQU@`locs$Z&+ zhyxRK2LAWuncgv`iVG-3He{X)$i6=e+|<=v9B=-#Xp!e)Y zdEZbz)Z?Rx!I{+7{>!LR+r@9s2rH>kQ=wzYk?Zwu$P@LK4JL;)kf5UjCq3aE_Y0vh z;T++!YluwX=S=kCWLbw(egMlvrH00O9rluun${GVhB-qX-hGeOsE$C~Ggt3qkL8)S zekq&a?uVG4r|I&Qc;?OvljPFkF{M-G-grGdLQAags^dw zC?m3qPgAy9G_e~9RZ>5T6gODDctVerp%zn!y^!Ajr}@OisZ-md_3u@`xD(xEq3c?n z(zRGO`IhJL5;fDlfyGekY^TD(&feIQ_SFwU7|nSZnE`A6zgdL*GOD<{?tZS2JLF2HB!-r)}C2Ud_ zMLXX-Kzxb+?iX1eV*krG%M#5OJuekPRS>O%*Oscv!uI7O9jRiBv1CD~oYb}JU#Nt! zN=M2e9Q^i*F-s%o?26hI3|(oF9ne||v1F*smuTjv3L;gYOd&o4n$&eHYVfqK|3 zGr>?!?xdsMMB(7zG!Nc%J?V?`e{2|+{cty=+$|6hAOpUYuf$%Hpko}cWasn;19*N1 zjD@{QD$7c+AXm=Sn&95bmgFv8Y_>asL$9IZvaZKz?OT`{q22$M1~HQN*h)%D=|oej zuS7W2wMTB!4JB1TeR-iHKiaqUQlj>fx}M8z325OGQP*6O!NQKaHUuPZQC#MMG?~Ti z$cEh{OV=rEQ8rXmYz7K5)RKA%YjXRL6B6^p)`Y?Bn&hJ%n4$ zG_e{P<1cs4!K7E#{iQ0DC@!ta6dMv^pJ;b*-sQNk|2-+FLnJNOdR zEs}>)NnV#g+w#SleSmXF*klXu`qQ>kM=(HpW4=TwFYa^P2kXs+y=KcH%nCA0w$*U) zoEXsj;#2Wim4#DQj^^imT$vb6DmZC%&rcyNb*HROs*X;})&~kfVA3UsijjDJ8mOi5 z%V;dnbazmLp6hqNoxBhAn4_n;ZV;Y$o0P=ztYY%nk3&!@F}}MdXLc1;<=L%H)s#bU z>BEmFEa6x0Y9+}<0^s+yscB<4cP)*0%qWe^@NwFJRcb}NvUP%6ygkXAF%=q#7 z9J(8qBdK_8Vm!MZq+pEW70~658JF)fP1ES^Py0ah?1_|`wyB!M;b&@$d^vZLSoRwX zwZRk(r&sVqq+#RVp=K+5v#mp=rAZINMb(^vy<079wECTt=+#f(@jjf7k(A9U-zqA7 z_vQJS?ccA<@3g#qEW|mqkWnz8m7>HT)Y=kvBuWaXDVHEs3sQ?E5CJBl#mRP-4Da9M zeFlSRVWczwq<8ZdnE+z-RpnRfo&qjMF^-7ayle8%7DU<)*K)k0Hn$g&M1T)K9b_I* zv!meVxlXxNJhZ1neWz?%IAq%JCa0%eV6A+mioNd%{k%#V@btYA1!!}-l=)+;{vz{l z4>$&kGPMgbN12(}*p}MjuR+gBD(#g!_78FNpo{Dr1fuSg4_iULoFpT7$cPcRt-!Q* z_CEYq$^L?D>w@`l_}wFMjBz2<@eEI^8@^n<<+u9X&ph;W!p;~75LHQ_=UkB!46E^V z=1EjNQRHQK%8qp`^_8caGqL`5aY@M5U}5KJ1VNB6<#V=YLM|5t8Erk&=+A# z2b~g+F$V6Gbe!YqQe|6wd+*_>tM9B+K+nHRgZ-z3g8ABuE-Vrx-C<;w`a;L z4oX(wWAbXO2THn^`SH|llETsFy(Q*2+sDVr*&0kg{xBK1PBT@mBXbh4n!Epzm?D>K z$`}MHWa#tQAsL)g@BNCuXN^XDs;=y3n%O-qV076vc@>zXpVJ8SL?=aPRhR0Qdu{`1 z_RXWBmF}WH?#2LP-+SVlX>MIS59Avo-8_G=ZOUBqLpw6Nq602-&tODEZtJZNtvp@_ z&TQ(#zg)?}@IDt+JUV_3+IqUDs=mHF2j%Z^DODA4eE%-c_5whO-$W|-L9S^?$?I7u z^X9~o+VhJ{g2j1QyWLsfFbneziRn<9Y82Vt07}$_cZoDE{NYLq=!mO#{fKF|emrF# z03!78;C@AKS!|>0F<^&FnX|nGjb#%zX!#w?U<3Kf3`T&&doE?uQS7C9?^bXyIg)}< z4KQwbdlRek3kDAYHt&7$vG8CSV;!tkb z=v#pT(c1nAS%LZ=+@tU0MucA+-ZPg9YebGHb4-~32i$r1dTC4ydd{jNRaIJE&*gEe z^$h}veDs4O$EG)1QP|+A7S|Sqp*B&=UY;I}i|LSh)iu0w3_& zppW7+)yT5A%0vnB4GBZmK9d+>MX)<2_jm7MKJ3U0$zM4P!;uOE>0Jiz-iddkH66Y9 zI`b^8T54=_^V3gv?@Kc$5WJ0C4=ReF#`~O(mXP=YIwTphQ~6uV18#Hv0<$*PNZ|VAM6BL55(6I&4X{-CDoK1LOfxtMw|RSUAw%akMr!kDCsESTDFI;@oKu%H-(6!+&(KO}9|6|y-z}*O;L0f# z(gQ#@^0J}WAzf9nN?@fWW2CIeq56-(;Un1f`)|zrpleT00*&DlCJ$o|6N(t}o#cfLr$B^hGz}}+unQtqY(Cao zA9$&?wR1|J-XhFmx3i7B6FhWd57f>FfP0u2+3*s1_G5BFQF&Kq9z$`<%<%ze2)c0q zS#O>a8t6lSn!$?QB!N60n9JBp7FwhUB(phcWiIJ_P-s0e&LqUNsJH^@t6KUeL|`V` zYwL&3;pR64Ye7y1!OW_86o(D56INf)vY?>8u>yQ>oKQf^xNam{`#t|pFpIjHSp!hv z=D9xVM8OctLAT+AmB^lJxr6cApwP(wcFSt1*x?bOT)3rw@TP_OBLUIHe?I2Qr5N89 zTDR#dUKjZ0n&YdX+_w%K9lc{TO~aF}Zzha42ymQNM_zLmqrn|Rt#C5_t;cJcr(3i4 z%2^7Z-7kICGFcLLY_cO`>g#fmCS*fMObF1RKc>ytS==ukqgC*kE=Z)gjY|$eC$CkB z`q*i%?2vQKDraGqp_%wAbPA0#mSbtrMtE_Pea(9Z*v?wTX?i1igF7v(M{1Z8jP;b9 z@yYh9IHRp$qqDJ!Z45>K%$LLx1(9n)RJx@eB9|F7T^uE8LGG<>Re0SHyQdeTHblV& z>Wsg@Uh`7wI3674GOfrM6K2i|J4`@Gn4y+;{v%Luk+EePRS{%BTaqYU7Y-GqU4l@h zuvA-$38{xxLS2{>m^4~O1tAY^&cw%YI_&4+V5(Pf z!nw?U55JP1yttKV9}Sg7ODfm3%x~Ku#FOshp>b+V7;?%;5Pw+exfdMP(JJdPT?KMf zj+0qEVI6l`cWT= zv7a_h^dvl}wVv0fI!^FBxV@{oy?Rz_$iC z+{5xC;SIXq@zz$9LplDL=iX04ssL5Wy0l~H33$UJ5sfAx@7P^LNa2mmn`+6IU*@8-dg-L$9=lIX&Un#?f=xMDz!clY9FI3&!wB zE>q(IT1$*T=FMHZKXLblHM>nlj=XASb9KA1s~o;_gQPbNfTtdK#eO|=hTXnJ+@BkD zUlnnEYT^5nhyOwiA1%6zZO0Tuz}b+9pe%Fie;;cWe#0Io&_v&}I=(;p3%#ZY6wJ%K zPu0#dYld29hAi!4pcJs6Kb(e!Qavb@q|1{2uct#|fh-EE%qDy|J4%aVs5R`$<&&(% z^Q-A6#~F41!4Yp9!d#FI*NAV+!-kW=4o)3g+nnHu8+Uf+alDrM@6D{L>)869#h=~- zpzSXv5{A;fg>f?yB|T=zLl|DtWUZ==wJ6@x#NzwtBjitpQ6B3{k)SXS9dSX{i&99t zBn`qP$T`4AXlH0~k3{bZ=|UI>q<oggdC`h25L87q*W2YFbE=2!}3d;0Z=yZKG4iw^699m6H~wwj|7mDD59)JJ#ll?OfcW6@%FyvY^_8KMLXiiUb?AtY zvdpJfHM_Fl|MSKl9mDkF*4N#pbZ{IX$n}`R;k$EiA<)i=U#&8ook<)+i?Vw~NMBH$qTsCTj;QQbw?|+B}YLM-U8KzUW6&c zfd>cw)Q|$qu5O5HN0jowW8ZuKmuaC}WD*KJrVRwS_WI@m-wrG{4B{gw@g1k|Z+HCr z2}6p~`if?uG*f)gB3xB<>8?WfF_>Ka`z1a|xl@5q8S#vNfBEkx9j43nVcq%LmFc9~ z>vnYub5g^B|8d*&NL)Vrnd|>}FY+m4I7=+T2ESHiX;U<%>oX4vFXbXLcYh69j9%d) zS+El0f4?0)kJ8lC1knt&`9+1Dsaf z;5ztrA5gTv|KhjOe~x@Qk`ERB_R$pqV>focJx;*@o~AK?8uQ0qgynobT2w;yP+>=H zd*5#FBPAkU5&r{r4ln7DC#yX6N-QKmguuPgLHOs_=2j0stZ%zMBFs3*#vRGd@q995 z9Zdu!jn5>ZEz?V%Pcp^to&j|3sGHv{pX?>#e;+~(={UG%&Fft|4vFLw3V+j0kA>`6 zgw+$d*XtX>mef9WoefwA7ifrVh?_DAulL~ZywTV=92^``9!uRLwXcB}^m_Igt{w32 zP?7g2y~0t9XJfIReVq!gbwYO;PsPBjuz?91cc;$jq3=}x@pvOp28g{(Zy{F6Mfe z$)8Nxt2%4j)a!M9O42_fYZO=eap%vZOI)}C z&i&&5C?nwmu-PG_ocH^0t>E7mFkpXayo}?^VAub(spZJeq})8rnV_}<8{C@`&i|5_ z7yn`2`1gKM{7ZVqS7-22j|}2k_ZyF9E$I4`{(BkxdMFG~VG3;zdbU8HT z2=bV{?Uma^#XqU%*tXC1u=96=5D`|WV;x+Tf8IlfeC3uOA9?u5(dqt6m-vhGL~V0~ z5Jk(s2J-*)07UREXz^$ zWA+iAJAd_o5$xA3MKAa0OXDCg*Z z{O$g;!`Ki|HFBOXeVF@^uxHIKiqCH2KGi-HVaGt}6kz31!9RHqeCGbU;n8Gc3rCyF zMZJ4p8Od9m_p#u+RnXFbmmev^yMHWv=0G|F{|tWrr^*Z2b`Laj8SZ4bSeyNH`lB1N ztUG*gm!e%DieU<%xcx8xKlnKn^e^06+>aN+!bh&!W%7kv{)6G{JRdA1;yQHt;lYRP z?S;CYR6oH9J@kEZ{G1NypNyWT%7Soth5MJ5BZ{`nb&e zhc-a(m;XwWVbMP8&ImcLZHv2bS_!Ui$;Mm0#JilzX|7+-!~rWmY14T<7smP&u~$L2 zQqM*2XT0j21mos2^PlR6X zWeTM05oVMRYcvfnwtDp5vzZo~jil?fafdZ`cX54`_~^K;E_d{{N~&3lvTW{=M8^}Y zu?Z<5cAk_M_ivN#5(IEQzF`svmgxo;=G0(V>BBPGg>G~FkccfI(t7V-yUR@CiGcy* zH=tAT;R7!N1H;9(EAEia2A}yPB2lhYS96u6BO;S>T{Tn;&qp~X`|BlLOA3>yaxJ#* zA~Cz=u{WFY42uukZS7l=(h8H!zukv9!MzPekEp3%%U0RvA^>{;nU-nftSdFxP^Jv? z&yd~hp}h5O-_2R!!3c7?X6^+}PJ75CafzrD&SNYx6k^3(U0tCRC;$i$i1MMcR@fYr z;a}qZr(34iX@P;U?#kWpu+vt=f@?>l0*oZkoQ@s^Ut}~@%J>8qPLw)Lb#HU=eU$ZR z++yD^7NhAFkjFF-N^$TpF=1Mh>OYu|g>YscTVDvv4I?%;KTP40pR=c5O~;ERD|i`{ z%b>J2GBUzv(c**su)!mQU0>L$?*ou{9y`VH7P4!9BaF4&8)Li3=STFknfz5^K8@wp zjnl^_NAMqKDyaB)ZuHYdiB<=kjqaSrjk|9Ol4S@51x8i3OR!u=c(GbQtRyDkf#YB$XA$?|-`Ae!;DvaO%jb zSv{2(g#B^*2l*o&#FNZC<3PHn`~KtX#q6<|u$;GTL~nF^VuDkuTaF|Uy-3y*y87cinljk)tnJGz(CD$UVnS7^AxRDRz}=;NYkA$zG?N?>c)72y8Kb5TfYkV zYW+b%9eTRIb#}hV3U6BAmWlhA z`gLWB@CT9`%s1)x?)!tn-l*U&Ul+_B$jtA;Od^Kr+ZDLpq>7h6P5QWaIysoSGs9P$ zQ!koiW(9KXZ%c?&fG?Eg>#zNrK{hKCx(>6N##}$Pu}Ve}soUe-8@Z*iC)$A_#MvFD zyHEHB)u+T;3Bt681w%hU-(3c)isX%;s!56g;hiokirYuD@vHy3RtDtU5Ec7Rb{3>= zuw<8O@5M*dQ&e52uj>DsY(KI!es4V(6*kfHrxJ?C?7Br{>d?`7T#+gZQQ3<&op&wP z6sK8jD*iGm+aT+r&X=;oJ+Nzy7#MktHcn(?UjD$ye)*w)$T}0m{>Z^Vhrt@qu*mF>YbhPm(h&u?c!4mZTi82oo#@aSHcp^9!!ZrdGkqGG)} z|LthV)$CV0HD$28hiF^dUp2uj9%Oh1ogu8+{xl4!?1%V>L@Sce9TfKSj~Yp>=5#*v zys=A7GWhKeUcsrXM<4l^YlA;8N6v$psXWF8K+)x5d%Zkv5 zI2TyKqj+g{*Qch-0zuB) zq!KTj$KD+OYY||aPrOa}9>leZs;VhCJDERNe~6=c)15lKHwK9DmE4~{Zr<6j?(Fj; zul0ptx)yVt)W>WQLp>(^25jF(7Jb5Mf}d|Adb(dieKeTauYBa|`>$2@w>HfYEgQTP z^kvFM`WcP;Dh+W*@a^JG9Sp&(2fsR4Tp7GHU&Q#Lj(sfbT=ikT%QOLotPh+8)1D#2(Y)*=^K+{( z2l6NXg&4E~p`X8|8*(4EeXVVLi1*|pgI27?&fo{At%OObsojn!R5(2wA8K_;Zhnqi zt1v|7hyMBu=Mzk9SAQl&M{>1iG{QJn8TWGku$qUhvOMTXeORRBF@1%BBls-gt=qTF zC%ox!pfvs<{o~a4HSN}Sx23a+zdm!ssuzzTd<>=N&ueI-^zDcK66v3g-{ChhE{ic_ zi((%#KwSGHO)Pb`C}XDu#Wq`*cNo9bM1H^_8;KiiG3Po4)av$s=y!j8n{DK7A)$`r zlov3WQ{KwiIqXRupmvH1hS<+fa}!iG!BO7@U@?U@nMl0z$rax=9vu^8x098;Q%A{F zSM>*nYNt+gg=MIw%D&ED_z6F(uc8CTIKhGYzd{%D`pt#nf;SkC3jGFdN&A_hsS*U4Ck>uGeswZ-@*&Nw0Iy0CV7a`Y8ZNT zD)BPcvcw<4x}?D`^ryvl$37~KVF<{XZ{51}L9um}U#q~1Ixe5Ip+J-XbL~X3$`zw? z{{MeIo{+OXM3L5F|_j%|(B=}xV3dK6`OojrzLpYh398xk{(wbY2MAu*P z;BnjaRX5BqATD~IvG`Brubqbev%cvme2>$o+;s@sWS@4;PhQWQc=SBXZ!e{Q+zmo8 zsSwu#DaIp~orJvM@^iBpwcI-%p*?YX4KX9B7zngnH)!2oBUS^I>Y=GvP;|5*$TJ(S z!|!$a^Oc+W{goDyJ=5@!hV;wkW-Gw*|8A8W7MtM@t9E)C#Ui%v`8?02v$pIBfL%G; zl%}4A2(h(x!+b!$L#yn^wu&6+jHaTe5))<#Cj9*zWfoKE?_zcdY~XN-1&g_n+*)sN z;QH}y&Aw_x@3C78sbmv8k1_`2> zN9!{D5~kC(1tJ0iIRJ0j94`rzBhB0KOwi39p%|xGA{S>q**f#XZu!;zB*Gy~3lvD0 z`u&9dJtc?>keUFG(a{qo5q%|(^5s75zId$w4MTAt2QhdQ;$5wLi!wLps*R*&7D@R+ z18%1HJP62D;9zR`!-i|v+J1VGQ)@@?kKi%?E;o|evmroms7Q6aOvJruKnWEsR8H<(kNvn2bWX4j^~VYYXPj)5LrU zpaBkAE9!ZoFojopl>3n*!CC;C3|}R~$W`B{O!ssmn>q9SG&jE#*6{tj%LkdXGnC^# zydR0c1;v!0q&vco_13z*s2$DQ?>tSAqUm5 z=KVP9JW}Vucd9(acEH{}3EcTP1Hm2zT+R+c5E>==Z)Eil#*A{jsb=9D-d)C5%%O^% zVHOu-@A~%aZ%%r!iyL2C8)EiN64q&+HTzDfWB0i5OmJSSn%+42#aq6Ft9bz8_A*QuLv2 z-W;udARCc5BHR>x*l+2IkieSqi@&W=^dTgm_5MPCz;Hk3SD13ve^XZEsqA}Y^5aeN z6gl<3DLo`?8<85FJtHfjO?$njRJs}e9B#Oq}+mN43PySl1C{o(Nrg`}H7f@xC zN2Og2tE<0qIp+3MJ;Pnu^$^4HN!TPES^DKLnGBl~hT+SzvzuDYfY$-y5|ESXgs~KW zLtkF-fvHeBKWs8b2Y^647!w8|D%CW#=dlf~y9^aC2=gor7X~q(Bv_m>22Gr3FPlCo z;Fh(Z%gVStL)YpVA&B$Kbg!d5|9%yFh?(eI3v86fGt89@dG-N$s@;w3{%>4q`!9e3EPA?$9Hv+OZ$ z5!*nXQA;jv;OGi1Y5*qc%SZCxhQaoKyNRw0hfG1hu+j%neOx*&Za~=u!$)VVOMZb? zlTG&>Q~F&_VKf=is`F*^W&68(;8M}p*j$knP%uezBtTiY0k29C!)cjgSUmNZe>Z~X zqZtzuGX$g^(Hys>T-d#V*C6%l0|;LI3P1hr8*UM1Cu6qNg8oe$z{CGQ-ZZ7~_|Pr#kL-q-%maU^+_l0_e*Y!fy`a5}92}NlD><48s@x z4ct--{R$#Nv_d7#>TxFZ;c&dNYUO1|H_?gm?umnQ;D9*ZCafbe%v%?zM+iD!W9(k5 zwXfubVF>D27S7jeuqi}h`-$1q6`vVb-f z-dNRU+Uj;B&iS|s1Nsi8TwD{Ha#T}Q%sVq9jY8KJ zCgNMiimxv1x>=Hvim_-f8k?h-q(!KdOc4w>OVW<8tIsDrIDP*(UN3nh|3t^)3`DTe zZnJ#rs^c&lXH_^tK}!UapMdHun8raAm?3ECwhtmo@{2dW3Y;N55W+rs&nf10z|o-T z`cSUrn#y<|+Eb&pCMVv}d@NF>U%VDu@r0bkp;OzsIko(kkIOPne`7nS3`Z33o=@zZiG2_?9Td2d!(7?bSv^t)2GI)A6fmG?*Z@ z2fw*pyoL1$A9Y%Keyf84xs56P?Usuyg|#(`ECi36BpIz>t^@{*elr$T^1s>ZL5z^X z8So(BDaCf0l28$mxq%C{&K_wlg_G@RNd&CV5q)plDso6{-`Pz+ zE-5L2SHoTI=5~i-0HS0hWU} zEmuZqJZTn?k20MSAG(;5ReE}}HF|6K5q4HSCR&xK^9K(lXVGaR5yl>HA2( zUeGdq%T)mCVuQk)Q9m@fk3X7HOxm&x>X82p=9r3@V`{6Y>3_@-g$i%(?^jzKZVy)) z=nqd}{ecQM*8f8iG%W!mVNe9+sxRBri&B-zs$7rCP!AZE_B74oxKBadb0oV#+5D^x+2;aa$QZw~tx+t9?{Q_?ZN}WoD%T1I&KkY8a*fR<4J9P}MsIwW zEt-OhE;~Qz7q43yGrG<)#?-i1#@ZshWnwbvaeKRVoekI~zQG{O3fm_=Y%yk%Nfv%b zVY1GG@aIFoX^>MpZmL|1>9!X%mtBv=X_#IG7uq}$CsZxS(5*w|FtqJ2>;Ov2)goItQQ}j41x^#2 zg0fLrNpr5j+bh3**4(^#)8)rwMnN~~YS*jzN*Jrv?tA7OEim*978IhEXw@R_Jc?bw=J&70{~74-2+SjFFBwa�Jyr&RM=AlT|FvwjP167}`SB)cAx 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%0AiK7C-rYgOGAVZmXJUS4nn;qvJ$eVaW}W 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ν)$ia^(Z-Z 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 CSp$jy diff --git a/docs/changelog.md b/docs/changelog.md deleted file mode 100644 index c3783a356..000000000 --- a/docs/changelog.md +++ /dev/null @@ -1,3 +0,0 @@ -You can find notes for all releases at the [Nexus GitHub repo releases](https://nxs.li/changelog) page. - -Every commit to master is released under the `next` npm dist tag. You can always find its current release notes on the Nexus GitHub repo releases page [under the `next` tag](https://nxs.li/changelog/canary). You can always find the raw code diff [here](https://github.com/graphql-nexus/nexus/compare/latest...next) diff --git a/docs/components/logger/about.md b/docs/components/logger/about.md deleted file mode 100644 index f8cc59ca7..000000000 --- a/docs/components/logger/about.md +++ /dev/null @@ -1,7 +0,0 @@ -# `@nexus/logger` - -Logging library that is pretty, practical, & performant - -```cli -npm add @nexus/logger -``` diff --git a/docs/components/logger/api.md b/docs/components/logger/api.md deleted file mode 100644 index 4cd9c3de5..000000000 --- a/docs/components/logger/api.md +++ /dev/null @@ -1,3 +0,0 @@ -# API - -Please refer to the [framework logger component API docs](api/modules/main/exports/logger). diff --git a/docs/components/logger/plugins-api.md b/docs/components/logger/plugins-api.md deleted file mode 100644 index 258cd5725..000000000 --- a/docs/components/logger/plugins-api.md +++ /dev/null @@ -1 +0,0 @@ -todo diff --git a/docs/components/logger/plugins.md b/docs/components/logger/plugins.md deleted file mode 100644 index 258cd5725..000000000 --- a/docs/components/logger/plugins.md +++ /dev/null @@ -1 +0,0 @@ -todo diff --git a/docs/components/schema/about.md b/docs/components/schema/about.md deleted file mode 100644 index 8f8b5693f..000000000 --- a/docs/components/schema/about.md +++ /dev/null @@ -1,49 +0,0 @@ -# `@nexus/schema` - -```cli -npm add @nexus/schema -``` - -#### Why Nexus? {docsify-ignore} - -Words from the original author, Tim Griesser; - -Nexus Schema was born out of my experience building several production GraphQL APIs, in different languages and frameworks. The first with vanilla [graphql-js](https://github.com/graphql/graphql-js), another schema-first with [graph.ql](https://github.com/matthewmueller/graph.ql) and later [graphql-tools](https://github.com/apollographql/graphql-tools). Following that with [graphene-python](https://docs.graphene-python.org/en/latest/) and most recently with a bit of [graphql-ruby](http://graphql-ruby.org/). - -After working with the toolkits in other scripting languages, it felt like there was a gap in the JavaScript approaches. Schema-first development starts out great, by simply expressing your schema in the GraphQL Schema Definition Language (SDL) and providing resolvers matching to the types as needed you are up and running fast! No need for tons of requires or "overhead" to get a GraphQL server running. - -As your schema then grows to hundreds or thousands of types, manually curating these SDL fragments becomes tedious. Documentation changes can be tough. Modifying fields on interfaces can require manual changes to many implementing types, a process that can be quite error prone. - -_If only there were a way to combine the simplicity of schema-first development, with the long-term maintainability of a definition-first approach._ - -GraphQL Nexus aims to fill that void, making the process as simple as possible while also making good use of the runtime to introduce powerful ways of composing types, introducing type or schema wide changes, and much more. - -The core idea of GraphQL Nexus draws from basing the schema off the SDL - keeping things declarative and simple to understand. It allows you to reference the type names as string literals rather than always need to import to reference types (you can do that too if you prefer). - -By combining automatic type generation with some of the more powerful features of TypeScript - type merging, conditional types, and type inference, we can know exactly which type names we are referring to and able to use throughout our code. We can know both the parameters and the return type of resolvers without providing any type annotation. It takes a little getting used to, but it ends up leading to a great feedback loop of the types annotating themselves. - -## Type Generation Details {docsify-ignore} - -This is the most important piece to understand to get the most out of Nexus. It is relevant to JavaScript as well as TypeScript users, as tools like VSCode and `// @ts-check` can utilize these types to aid in autocomplete or type-checking. A core goal of Nexus is to have the best possible type coverage with the least possible manual type annotation. - -### Overview {docsify-ignore} - -Nexus was designed with TypeScript in mind. In order to fully typecheck our GraphQL objects, we need to generate a number of types that combine the schema, any type or field configuration provided, and the GraphQL resolution algorithm to create as much type-safety as possible without any additional work importing and assigning types throughout the codebase. - -### Root Types {docsify-ignore} - -A **root type** is a type representation of the value used to resolve the fields of an object type. It is the object that will be passed as the first argument of `resolve`. It can be a plain JS object, a database model, a mongoose document, a JS class, anything that fulfills the contract defined by the GraphQL object type, based on the field definitions. - -Scalars can also have backing types, representing the value they are parsed into. - -Sometimes GraphQL types are passthrough, and don't have a dedicated type backing them. One such case would be in the `Edge` of a Relay style pagination. In this case, Nexus will generate a type-definition which makes assumptions of the necessary value to fulfill the contract. If this is incorrect, you can always provide a concrete type for the object. - -### Field Type {docsify-ignore} - -A **field type** is the valid return value used to a field on an object type. In GraphQL, promises can be returned at every level of the type resolution, so we wrap the types in a `MaybePromiseDeep` type to express this. - -### Configuring our types {docsify-ignore} - -The [Ghost Example](https://github.com/prisma-labs/nexus/blob/develop/examples/ghost/src/ghost-schema.ts) is the best to look at for an example of how we're able to capture the types from existing runtime objects or definitions and merge them with our schema. - -The `makeSchema` takes several options which helps us find the types we need to import into our generated schema, and customize where these generated types are output. diff --git a/docs/components/schema/api/_sidebar.md b/docs/components/schema/api/_sidebar.md deleted file mode 100644 index 546c063df..000000000 --- a/docs/components/schema/api/_sidebar.md +++ /dev/null @@ -1,81 +0,0 @@ -- Getting Started - -- [Welcome To Nexus](README) -- [Tutorial](tutorial/introduction) -- [Migrate from Nexus Schema](getting-started/migrate-from-nexus-schema) - -- Migration Guides - -- [Prisma Users](migration-guides/prisma-users) -- [Nexus Schema Users](getting-started/migrate-from-nexus-schema) - -* Guides - -* [Concepts](guides/concepts) -* [Schema](guides/schema) -* [Server](guides/server) -* [Logger](guides/logger) -* [Testing](guides/testing) -* [Project Layout](guides/project-layout) -* [Error Handling](guides/error-handling) -* [Plugins](guides/plugins) -* [Recipes](references/recipes) -* [Writing Plugins](guides/writing-plugins) -* [CLI](guides/cli) - -* Plugins - -* [`prisma`](plugins/prisma) -* [`jwt-auth`](https://github.com/Camji55/nexus-plugin-jwt-auth) -* [`shield`](https://github.com/lvauvillier/nexus-plugin-shield) - -- API - -- [`nexus`](api/modules/main) - - - [`schema`](api/modules/main/exports/schema) - - [`log`](api/modules/main/exports/logger) - - [`server`](api/modules/main/exports/server) - - [`settings`](api/modules/main/exports/settings) - - [`use`](api/modules/main/exports/use) - -* [`nexus/testing`](api/modules/testing) - -* [`nexus/plugin`](api/modules/plugin) - -* Meta - -* [Roadmap ⤤](https://github.com/orgs/graphql-nexus/projects/1) -* [Changelog](changelog) -* [Spec Sheet](meta/spec-sheet) -* [Architecture](architecture) - -- Components Standalone - -- [`@nexus/schema`](components/schema/about) - - - [API](components/schema/api/index.md) - - [objectType](components/schema/api/copy/api-objectType) - - [unionType](components/schema/api/copy/api-unionType) - - [scalarType](components/schema/api/copy/api-scalarType) - - [interfaceType](components/schema/api/copy/api-interfaceType) - - [inputObjectType](components/schema/api/copy/api-inputObjectType) - - [enumType](components/schema/api/copy/api-enumType) - - [args: arg / \*Arg](components/schema/api/copy/api-args) - - [makeSchema](components/schema/api/copy/api-makeSchema) - - [extendType](components/schema/api/copy/api-extendType) - - [mutationField](components/schema/api/copy/api-mutationField) - - [queryField](components/schema/api/copy/api-queryField) - - [Plugins](components/schema/api/copy/api-plugins) - - [SDL Converter ⤤](https://nexus.js.org/converter) - - [Plugins](components/schema/plugins) - - [Connection](components/schema/plugins/connection) - - [Query Complexity](components/schema/plugins/query-complexity) - - [Field Authorize](components/schema/plugins/field-authorize) - - [Nullability Guard](components/schema/plugins/nullability-guard) - - [Prisma](components/schema/plugins/prisma) - -* [`@nexus/logger`](components/logger/about) - - [API](components/logger/api) - - [Plugins](components/logger/plugins) - - [Plugins API](components/logger/plugins-api) diff --git a/docs/components/schema/api/copy/api-args.md b/docs/components/schema/api/copy/api-args.md deleted file mode 100644 index 4070a8bd6..000000000 --- a/docs/components/schema/api/copy/api-args.md +++ /dev/null @@ -1,57 +0,0 @@ -[GraphQL Docs on Arguments](https://graphql.org/learn/schema/#arguments) - -`arg`, `intArg`, `stringArg`, `floatArg`, `idArg`, `booleanArg` - -Defines an argument that can be used in any object or interface type. Args can be reused in multiple locations, and it can be convenient to create your own wrappers around arguments. - -```ts -import { intArg, core } from '@nexus/schema' - -function requiredInt(opts: core.ScalarArgConfig) { - return intArg({ ...opts, required: true }) -} -``` - -  - -Common options available for `arg` include the following: - -**Required** - -Whether the argument is required or not. - -Format: `required?: boolean;` - -Note, when `required: true`, `nullable: false` - -  - -**Nullable** - -Whether the argument is nullable or not. - -Format: `nullable?: boolean;` - -Note, when `nullable: true`, `required: false` - -  - -**List** - -Whether the argument is a list or not. - -Format: `list?: null | true | boolean[];` - -null = not a list - -true = list - -array = nested list, where true/false decides whether the list member can be nullable - -  - -**Description** - -The description to annotate the GraphQL SDL - -Format: `description?: string | null;` diff --git a/docs/components/schema/api/copy/api-enumType.md b/docs/components/schema/api/copy/api-enumType.md deleted file mode 100644 index 730ffdc48..000000000 --- a/docs/components/schema/api/copy/api-enumType.md +++ /dev/null @@ -1,26 +0,0 @@ -[GraphQL Docs for Enum Types](https://graphql.org/learn/schema/#enumeration-types) - -Defining as an array of enum values: - -```ts -const Episode = enumType({ - name: 'Episode', - members: ['NEWHOPE', 'EMPIRE', 'JEDI'], - description: 'The first Star Wars episodes released', -}) -``` - -As an object, with a simple mapping of enum values to internal values: - -```ts -const Episode = enumType({ - name: 'Episode', - members: { - NEWHOPE: 4, - EMPIRE: 5, - JEDI: 6, - }, -}) -``` - -Check the type-definitions or [the examples](https://github.com/graphql-nexus/schema/tree/develop/examples) for a full illustration of the various options of `enumType`, or feel free to open a PR on the docs to help document! diff --git a/docs/components/schema/api/copy/api-extendType.md b/docs/components/schema/api/copy/api-extendType.md deleted file mode 100644 index 7608c48c5..000000000 --- a/docs/components/schema/api/copy/api-extendType.md +++ /dev/null @@ -1,29 +0,0 @@ -Defines a way to incrementally build types, by "extending" a type from multiple locations in a project. Useful in situations where you have types split across multiple domains, each of which should add fields to a single type (like the "Query" root). - -```ts -export const AddUserById = extendType({ - type: 'Query', - definition: (t) => { - t.field('userById', { - type: 'User', - args: { id: intArg('id of the user') }, - resolve: (root, args, ctx) => ctx.user.getById(args.id), - }) - }, -}) - -// elsewhere... - -export const AddPostById = extendType({ - type: 'Query', - definition: (t) => { - t.field('postById', { - type: 'Post', - args: { id: intArg('id of the post') }, - resolve: (root, args, ctx) => ctx.post.getById(args.id), - }) - }, -}) -``` - -A similar `extendInputType` is available for extending input types. diff --git a/docs/components/schema/api/copy/api-inputObjectType.md b/docs/components/schema/api/copy/api-inputObjectType.md deleted file mode 100644 index 6096f712d..000000000 --- a/docs/components/schema/api/copy/api-inputObjectType.md +++ /dev/null @@ -1,15 +0,0 @@ -[GraphQL Docs for Input Object Types](https://graphql.org/learn/schema/#input-types) - -Defines a complex object which can be passed as an input value. - -```ts -export const InputType = inputObjectType({ - name: 'InputType', - definition(t) { - t.string('key', { required: true }) - t.int('answer') - }, -}) -``` - -Unlike object types, input types do not have arguments, so they do not have resolvers or "backing types" diff --git a/docs/components/schema/api/copy/api-interfaceType.md b/docs/components/schema/api/copy/api-interfaceType.md deleted file mode 100644 index 73ebeff27..000000000 --- a/docs/components/schema/api/copy/api-interfaceType.md +++ /dev/null @@ -1,23 +0,0 @@ -[GraphQL Docs for Interface Types](https://graphql.org/learn/schema/#input-types) - -In Nexus, you do not need to redefine the interface fields on the -implementing object types, instead you may use `.implements(interfaceName)` -and all of the interface fields will be added to the type. - -```ts -const Node = interfaceType({ - name: 'Node', - definition(t) { - t.id('id', { description: 'GUID for a resource' }) - }, -}) - -const User = objectType({ - name: 'User', - definition(t) { - t.implements('Node') - }, -}) -``` - -If you need to modify the description or resolver defined by an interface, you can call the `modify` method on `objectType` to change these after the fact. diff --git a/docs/components/schema/api/copy/api-makeSchema.md b/docs/components/schema/api/copy/api-makeSchema.md deleted file mode 100644 index 8e215f308..000000000 --- a/docs/components/schema/api/copy/api-makeSchema.md +++ /dev/null @@ -1,224 +0,0 @@ -Defines the GraphQL schema, by combining the GraphQL types defined by the GraphQL Nexus layer or any manually defined GraphQL named types (Scalars, ObjectTypes, Enums, etc). - -We require at least one type be named "Query", which will be used as the root query type. The `makeSchema` takes several options which all should be specified by the user, detailed below: - -## types - -The `types` property is required, and should contain all of the possible Nexus/GraphQL types that make up a schema (at least the root-level ones), imported into one place. The type is opaque, it can be an array or object, we recursively walk through the object looking for types, so the following will all have the same result, and non-GraphQL objects will be ignored. - -- `{ typeA, typeB, typeC, typeD }` -- `[[typeA], [{ typeB: typeB }], typeC, { typeD }]` -- `[typeA, typeB, typeC, typeD]` - -```ts -import { makeSchema } from '@nexus/schema' -import * as types from './allNexusTypes' - -export const schema = makeSchema({ - types, -}) -``` - -## plugins - -The `plugins` property is an array for adding "Plugins", or ways of extending/changing the runtime behavior of Nexus and GraphQL. Unlike the `types` property, this must be an array, and the order of the plugins matters because this influences the order of any resolver "middleware" the plugin may optionally provide. - -```ts -import { makeSchema, nullabilityGuard, fieldAuthorizePlugin } from '@nexus/schema' -import * as types from './allNexusTypes' - -export const schema = makeSchema({ - types, - plugins: [ - fieldAuthorizePlugin({ - /* ... */ - }), - nullabilityGuard({ - /* ... */ - }), - ], -}) -``` - -## shouldGenerateArtifacts, outputs, typegenAutoConfig - -The `shouldGenerateArtifacts` is a boolean value which determines whether artifact files (graphql and TypeScript) are emitted when the code for `makeSchema` - -`outputs` is an object which specifies the absolute path for where the emitted files are generated. -If you do not wish to generate one of these types - -`typegenAutoConfig` is an object which gives nexus more information about how to properly generate the -type definition file. An example of the `sources` is provided below: - -```ts -makeSchema({ - types, - shouldGenerateArtifacts: process.env.NODE_ENV === 'development', - outputs: { - // I tend to use `.gen` to denote "auto-generated" files, but this is not a requirement. - schema: path.join(__dirname, 'generated/schema.gen.graphql'), - typegen: path.join(__dirname, 'generated/nexusTypes.gen.ts'), - }, - typegenAutoConfig: { - headers: ['import { ConnectionFieldOpts } from "@packages/api-graphql/src/extensions/connectionType"'], - sources: [ - // Automatically finds any interface/type/class named similarly to the and infers it - // the "source" type of that resolver. - { - source: '@packages/types/src/db.ts', - alias: 'dbt', - typeMatch: (name) => new RegExp(`(?:interface|type|class)\\s+(${name}s?)\\W`, 'g'), - }, - // We also need to import this source in order to provide it as the `contextType` below. - { - source: '@packages/data-context/src/DataContext.ts', - alias: 'ctx', - }, - ], - // Typing from the source - contextType: 'ctx.DataContext', - backingTypeMap: { - Date: 'Date', - DateTime: 'Date', - UUID: 'string', - }, - debug: false, - }, -}) -``` - -The [Ghost Example](https://github.com/prisma-labs/nexus/blob/develop/examples/ghost/src/ghost-schema.ts) is the best place to look for an example of how we're able to capture the types from existing runtime objects or definitions and merge them with our schema. - -## shouldExitAfterGenerateArtifacts - -If you are not checking in your artifacts and wish to run them, this will allow you to exit right after the artifacts have been generated. There is no default behavior for this, but you could do something like the following, to be able to run a script which will exit if `--nexus-exit` is provided: - -```ts -makeSchema({ - // ... options like above - shouldExitAfterGenerateArtifacts: process.argv.includes('--nexus-exit'), -}) -``` - -```sh -ts-node -T ./path/to/my/schema.ts --nexus-exit -``` - -## prettierConfig - -Either an absolute path to a `.prettierrc` file, or an object with a valid "prettier" config options. - -```ts -makeSchema({ - // ... options like above - prettierConfig: path.join(__dirname, '../../../.prettierrc'), -}) -``` - -## nonNullDefaults - -Controls the nullability of the input / output types emitted by `nexus`. The current Nexus default is -`{ output: true, input: false }`, though the `graphql-js` / spec default is `{ output: false, input: false }`. - -You should make a decision on this and supply the option yourself, it may be changed / required in the future. - -Read more on this in the [getting-started](getting-started.md) guide. - -### typegenConfig, formatTypegen - -Escape hatches for more advanced cases which need further control over. You typically won't need these. - -### customPrintSchemaFn - -Optional, allows you to override the `printSchema` when outputting the generated `.graphql` file: - -```ts -makeSchema({ - // ... - customPrintSchemaFn: (schema) => { - return printSchema(schema, { commentDescriptions: true }) - }, -}) -``` - -#### Footnotes: Annotated config option for typegenAutoConfig: - -```ts -export interface TypegenAutoConfigOptions { - /** - * Any headers to prefix on the generated type file - */ - headers?: string[] - /** - * Array of files to match for a type - * - * sources: [ - * { source: 'typescript', alias: 'ts' }, - * { source: path.join(__dirname, '../backingTypes'), alias: 'b' }, - * ] - */ - sources: TypegenConfigSourceModule[] - /** - * Typing for the context, referencing a type defined in the aliased module - * provided in sources e.g. 'alias.Context' - */ - contextType?: string - /** - * Types that should not be matched for a backing type, - * - * By default this is set to ['Query', 'Mutation', 'Subscription'] - * - * skipTypes: ['Query', 'Mutation', /(.*?)Edge/, /(.*?)Connection/] - */ - skipTypes?: (string | RegExp)[] - /** - * If debug is set to true, this will log out info about all types - * found, skipped, etc. for the type generation files. - */ - debug?: boolean - /** - * If provided this will be used for the backing types rather than the auto-resolve - * mechanism above. Useful as an override for one-off cases, or for scalar - * backing types. - */ - backingTypeMap?: Record -} - -export interface TypegenConfigSourceModule { - /** - * The module for where to look for the types. - * This uses the node resolution algorithm via require.resolve, - * so if this lives in node_modules, you can just provide the module name - * otherwise you should provide the absolute path to the file. - */ - source: string - /** - * When we import the module, we use 'import * as ____' to prevent - * conflicts. This alias should be a name that doesn't conflict with any other - * types, usually a short lowercase name. - */ - alias: string - /** - * Provides a custom approach to matching for the type - * - * If not provided, the default implementation is: - * - * (type) => [ - * new RegExp(`(?:interface|type|class|enum)\\s+(${type.name})\\W`, "g") - * ] - * - */ - typeMatch?: (type: GraphQLNamedType, defaultRegex: RegExp) => RegExp | RegExp[] - /** - * A list of typesNames or regular expressions matching type names - * that should be resolved by this import. Provide an empty array if you - * wish to use the file for context and ensure no other types are matched. - */ - onlyTypes?: (string | RegExp)[] - /** - * By default the import is configured 'import * as alias from', setting glob to false - * will change this to 'import alias from' - */ - glob?: false -} -``` diff --git a/docs/components/schema/api/copy/api-mutationField.md b/docs/components/schema/api/copy/api-mutationField.md deleted file mode 100644 index 93d2ffc1a..000000000 --- a/docs/components/schema/api/copy/api-mutationField.md +++ /dev/null @@ -1,39 +0,0 @@ -Mutations are usually best split up, and are one of the most common use-cases for `extendType`. `mutationField` exists as a shorthand for this common case: - -```ts -export const createUser = mutationField('createUser', { - type: SomeType, - resolve() { - // ... - }, -}) -``` - -as shorthand for: - -```ts -export const createUser = extendType({ - type: "Mutation", - definition(t) { - t.field('createUser', { - type: SomeType - resolve() { - // ... - } - }) - } -}) -``` - -You can also use it with a function as the first argument, which will pass the `t` provided to the defintion block, especially useful when using with the [connection plugin](plugin-connection.md): - -```ts -export const usersQueryField = mutationField((t) => { - t.connectionField('updateUsersList', { - type: SomeType, - resolve() { - // ... - }, - }) -}) -``` diff --git a/docs/components/schema/api/copy/api-objectType.md b/docs/components/schema/api/copy/api-objectType.md deleted file mode 100644 index ddceeaf64..000000000 --- a/docs/components/schema/api/copy/api-objectType.md +++ /dev/null @@ -1,42 +0,0 @@ -```ts -objectType(typeName: string, fn: ObjectDefinitionBlock): NexusObjectType -``` - -The most basic components of a GraphQL schema are object types, a type you can fetch from your schema, with fields: - -```ts -const User = objectType({ - name: 'User', - definition(t) { - t.int('id', { description: 'Id of the user' }) - t.string('fullName', { description: 'Full name of the user' }) - t.field('status', { type: 'StatusEnum' }) - t.list.field('posts', { - type: Post, // or "Post" - resolve(root, args, ctx) { - return ctx.getUser(root.id).posts() - }, - }) - }, -}) - -const Post = objectType({ - name: 'Post', - definition(t) { - t.int('id') - t.string('title') - }, -}) - -const StatusEnum = enumType({ - name: 'StatusEnum', - members: { - ACTIVE: 1, - DISABLED: 2, - }, -}) -``` - -`queryType` / `mutationType` are shorthand for the root types. - -Check the type-definitions or [the examples](https://github.com/graphql-nexus/schema/tree/develop/examples) for a full illustration of the various options of `objectType`, or feel free to open a PR on the docs to help document! diff --git a/docs/components/schema/api/copy/api-plugins.md b/docs/components/schema/api/copy/api-plugins.md deleted file mode 100644 index c387f641a..000000000 --- a/docs/components/schema/api/copy/api-plugins.md +++ /dev/null @@ -1,141 +0,0 @@ -Nexus ships with a plugin API which allows you to define your own abstractions when building out a GraphQL schema. The plugin layer allow you to: - -- Define new options for types and fields in a type-safe manner -- Layer runtime execution before and after a resolver -- Modify schema configuration -- Customize the emit behavior of TypeScript type generation (coming soon) - -We also ship with several plugins out of the box, and will have more in the near future: - -- [Connection Plugin](plugin-connection.md) -- [Field Authorize Plugin](plugin-fieldAuthorize.md) -- [Nullability Guard Plugin](plugin-nullabilityGuard.md) -- [Query Complexity Plugin](plugin-queryComplexity.md) - -### Defining a sample plugin: - -```ts -import { plugin } from '@nexus/schema' - -export const myErrorGuardPlugin = plugin({ - name: 'MyErrorGuardPlugin', - description: 'Catches errors and logs them to Sentry, ', -}) -``` - -## Plugin Config: - -### name - -Every plugin is required to have a unique name identifying the plugin. This is used in error-messages -and warnings. - -### description - -A string describing the plugin. Currently not used for anything, but it could be used in the future to -automatically create documentation for the stack of plugins used in Nexus. - -### onInstall(builder) - -The "onInstall" hook is used as it sounds - it is invoked once before any of the types are processed for the schema. This hook is primarily useful in allowing a plugin to add "dynamics fields" to augment the API of the definition block. - -```ts -plugin({ - name: 'onInstallExample', - onInstall(builder) {}, -}) -``` - -The `builder` option provided has several properties, which allow you to influence the schema via the plugin. - -### onBeforeBuild(builder) - -The "onBeforeBuild" is called after all `onInstall`, but just before the schema is constructed. - -```ts -plugin({ - name: 'onBeforeBuildExample', - onBeforeBuild(builder) {}, -}) -``` - -### onAfterBuild(schema) - -The "onAfterBuild" hook is provided the schema, and is usedful to validate contract of the schema -with the expectations of the plugin. The [nullabilityGuard](plugin-nullabilityGuard.md) - -```ts -plugin({ - name: 'onAfterBuildExample', - onAfterBuild(schema) {}, -}) -``` - -### onCreateFieldResolver(config) - -Every ObjectType, whether they are defined via Nexus' `objectType` api, or elsewhere is given a resolver. -The [defaultFieldResolver](https://github.com/graphql/graphql-js/blob/82a0c336de05b4ab0d24d5557b56135c828fe888/src/execution/execute.js#L1179-L1197) is provided if none is specified by the field definition. - -When the resolver is created for a type, this can optionally return a "middleware" which wraps the resolve behavior of the field. Here's an example of writing a "LogMutationTimePlugin", which logs how long it takes a mutation to complete: - -```ts -const LogMutationTimePlugin = plugin({ - name: 'LogMutationTimePlugin', - onCreateFieldResolver(config) { - if (config.parentTypeConfig.name !== 'Mutation') { - return - } - return async (root, args, ctx, info, next) => { - const startTimeMs = new Date().valueOf() - const value = await next(root, args, ctx, info) - const endTimeMs = new Date().valueOf() - console.log(`Mutation ${info.operation.name} took ${endTimeMs - startTimeMs} ms`) - return value - } - }, -}) -``` - -### onMissingType - -The "onMissingType" hook occurs when a type is provided as a string, but was never explicitly defined. -This can be helpful in situations where you have boilerplate types which can be constructed -generically / programatically based on their name. - -Here is an example of a plugin which creates a "ResourceResponse" type whenever you see a string: - -```ts -/** - * Creates a ____ResourceResponse type - * - * type OrganizationResourceResponse { - * ok: Boolean! - * resource: Organization! - * query: Query! - * } - * - * @param resource - */ -export function resourceResponse(resource: string) { - return objectType({ - name: `${resource}ResourceResponse`, - definition(t) { - t.boolean('ok', () => true) - t.field('resource', { type: resource as any }) - t.field('query', { type: 'Query', resolve: () => ({}) }) - }, - }) -} - -const ResourceTypePlugin = plugin({ - name: 'onMissingTypeExample', - onMissingType(typeName, builder) { - if (/(.*?)ResourceResponse/.test(typeName)) { - return resourceResponse(typeName.slice(0, -16)) - } - return null - }, -}) -``` - -#### Builder Object diff --git a/docs/components/schema/api/copy/api-queryField.md b/docs/components/schema/api/copy/api-queryField.md deleted file mode 100644 index c1dd02be7..000000000 --- a/docs/components/schema/api/copy/api-queryField.md +++ /dev/null @@ -1,43 +0,0 @@ -Often times you want to split up query fields into different domains of your application, and like [`mutationField`](api-mutationField.md) are another one of the most common use-cases for `extendType`. `queryField` exists as a shorthand for this common case: - -```ts -import { stringArg } from '@nexus/schema' - -export const usersQueryField = queryField('user', { - type: SomeType, - args: { id: stringArg({ required: true }) }, - resolve() { - // ... - }, -}) -``` - -as shorthand for: - -```ts -export const createUser = extendType({ - type: "Query", - definition(t) { - t.field('user', { - type: SomeType - args: { id: stringArg({ required: true }) }, - resolve() { - // ... - } - }) - } -}) -``` - -You can also use it with a function as the first argument, which will pass the `t` provided to the defintion block, especially useful when using with the [connection plugin](plugin-connection.md): - -```ts -export const usersQueryField = queryField((t) => { - t.connectionField('users', { - type: SomeType, - resolve() { - // ... - }, - }) -}) -``` diff --git a/docs/components/schema/api/copy/api-scalarType.md b/docs/components/schema/api/copy/api-scalarType.md deleted file mode 100644 index 15547ad1e..000000000 --- a/docs/components/schema/api/copy/api-scalarType.md +++ /dev/null @@ -1,60 +0,0 @@ -[GraphQL Docs for Scalar Types](https://graphql.org/learn/schema/#scalar-types) - -Nexus allows you to provide an `asNexusMethod` property which will make the scalar available as a builtin on the definition block object. We automatically generate and merge the types so you get type-safety just like the scalar types specified in the spec: - -```ts -const DateScalar = scalarType({ - name: 'Date', - asNexusMethod: 'date', - description: 'Date custom scalar type', - parseValue(value) { - return new Date(value) - }, - serialize(value) { - return value.getTime() - }, - parseLiteral(ast) { - if (ast.kind === Kind.INT) { - return new Date(ast.value) - } - return null - }, -}) -``` - -## Example of Upload scalar - -``` -import { GraphQLUpload } from 'graphql-upload'; - -export const Upload = GraphQLUpload; -``` - -## Example of DateTime scalar - -``` -import { GraphQLDate } from "graphql-iso-date"; - -export const DateTime = GraphQLDate; -``` - -## Exposing scalar as method - -If you have an existing GraphQL scalar and you'd like to expose it as a method on the builder, call `asNexusMethod`: - -```ts -import { GraphQLDate } from 'graphql-iso-date' - -export const GQLDate = asNexusMethod(GraphQLDate, 'date') -``` - -```ts -const SomeObject = objectType({ - name: 'SomeObject', - definition(t) { - t.date('createdAt') // t.date() is now available (with types!) because of `asNexusMethod` - }, -}) -``` - -Check the type-definitions or [the examples](https://github.com/graphql-nexus/schema/tree/develop/examples) for a full illustration of the various options for `scalarType`, or feel free to open a PR on the docs to help document! diff --git a/docs/components/schema/api/copy/api-unionType.md b/docs/components/schema/api/copy/api-unionType.md deleted file mode 100644 index a6566c5bb..000000000 --- a/docs/components/schema/api/copy/api-unionType.md +++ /dev/null @@ -1,16 +0,0 @@ -[GraphQL Docs for Union Types](https://graphql.org/learn/schema/#union-types) - -Union types are very similar to interfaces, but they don't get to specify any common fields between the types. - -```ts -const MediaType = unionType({ - name: 'MediaType', - description: 'Any container type that can be rendered into the feed', - definition(t) { - t.members('Post', 'Image', 'Card') - t.resolveType((item) => item.name) - }, -}) -``` - -Check the type-definitions or [the examples](https://github.com/graphql-nexus/schema/tree/develop/examples) for a full illustration of the various options for `unionType`, or feel free to open a PR on the docs to help document! diff --git a/docs/components/schema/api/copy/best-practices.md b/docs/components/schema/api/copy/best-practices.md deleted file mode 100644 index 1752a7fae..000000000 --- a/docs/components/schema/api/copy/best-practices.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: best-practices -title: Best Practices -sidebar_label: Best Practices ---- - -A few tips when using Nexus to build out a schema: - -## Configure your development server to auto-restart - -The development experience works best when you are using a tool like [Nodemon](https://github.com/remy/nodemon) to restart your application as the schema changes. The GraphQL schema artifact will automatically regenerate when the server restarts in development mode. Check the [examples](https://github.com/graphql-nexus/schema/tree/develop/examples) to see how they are setup to auto-restart. - -## VSCode: Configuring a keyboard shortcut for "Go to Type Definition" - -Because the types are derived via conditional type expressions, command-click for the arguments in the resolve function don't quite work as you'd expect. There's another option, "Go To Type Expression" which you can find in the secondary click menu, but it's not bound to a keyboard shortcut by default. I've found it convenient to bind to `cmd+'` - -```json -{ - "key": "cmd+'", - "command": "editor.action.goToTypeDefinition" -} -``` - -## Consistent file structure for GraphQL type imports - -When you have a large schema you'll usually want to break it up into smaller -code chunks. The most common approach is to break up types into files, either one type per file or one file containing multiple types related to an individual type. Here's an example file structure to illustrate this point. - -```sh -/src - /schema - user.js - post.js - comment.js - index.js -``` - -However you end up structuring your files, they ultimately all need to be imported and passed to the `makeSchema` function, and keeping a consistent approach to file naming makes it simpler - -```ts -import * as userTypes from './schema/user' -import * as postTypes from './schema/post' -import * as commentTypes from './schema/comment' -``` - -You could also consolidate this in an `index.js` or similar export file: - -```ts -export * from './user' -export * from './post' -export * from './comment' -``` - -Using that file to build the schema: - -```ts -import * as allTypes from './schema' - -const schema = makeSchema({ - types: allTypes, - output: { ... } -}) -``` diff --git a/docs/components/schema/api/copy/builder-construction.md b/docs/components/schema/api/copy/builder-construction.md deleted file mode 100644 index 8884d241d..000000000 --- a/docs/components/schema/api/copy/builder-construction.md +++ /dev/null @@ -1,10 +0,0 @@ -### Builder Construction - -Nexus allows for extending the schema. To do this it follows a set of steps to ensure that all types are properly referenced internally: - -1. All fields are collected via the `types` property on the schema. - - This `types` property may also include "plugins", which may themselves add types in the "onInstall" or "onBeforeBuild" hooks -2. The provided types may be either sourced from nexus, via `objectType`, `scalarType`, etc. or from GraphQL via `GraphQLObjectType` and such. - - When the type is from GraphQL, a "GraphQLNamedType", we walk any fields of the type to collect any additional types which may not have been provided at the root level of the schema. - - When the type is sourced from Nexus, we similarly executed the `definition` blocks, to be able to add any fields which are added dynamically inside the blocks. -3. Once all types are known, we begin to construct the schema, executing the definition block and diff --git a/docs/components/schema/api/copy/future-features.md b/docs/components/schema/api/copy/future-features.md deleted file mode 100644 index 443a625b2..000000000 --- a/docs/components/schema/api/copy/future-features.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: future-features -title: Potential Features -sidebar_label: Potential Future Features ---- - -### Authorization / Permissions - -Because we have all of the type-information in a single location, it seems like a logical next step to allow validating more things co-located with the type/field definitions. Open to discussing ideas around this. - -### Validating nested arguments - -One missing feature in GraphQL is the ability to validate [in input-types](https://github.com/graphql/graphql-js/issues/361). Maybe this is something we could take on with Nexus? diff --git a/docs/components/schema/api/copy/getting-started.md b/docs/components/schema/api/copy/getting-started.md deleted file mode 100644 index 1521e0b12..000000000 --- a/docs/components/schema/api/copy/getting-started.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -id: getting-started -title: GraphQL Nexus -sidebar_label: Getting Started ---- - -Robust, composable type definition for GraphQL in TypeScript/JavaScript. - -

-Note: - -The documentation is very new and may contain some gaps, please help us fill them in by opening issues or better yet, pull-requests when you think something could be explained better. The [examples](https://github.com/graphql-nexus/schema/tree/develop/examples) are a great place to look to better understand how the library can be used. - -
- -GraphQL Nexus aims to combine the simplicity and ease of development of SDL development approaches like [graphql-tools](https://www.apollographql.com/docs/graphql-tools/generate-schema.html) with the long-term maintainability of programmatic construction, as seen in [graphene-python](https://docs.graphene-python.org/en/latest/), [graphql-ruby](https://github.com/rmosolgo/graphql-ruby), or [graphql-js](https://github.com/graphql/graphql-js). - -Nexus builds upon the primitives of `graphql-js`, and attempts to take the simplicity of the SDL schema-first approach and pair it with the power of having the full language runtime at your disposal. - -GraphQL Nexus was designed with TypeScript/JavaScript intellisense in mind, and combines TypeScript generics, conditional types, and type merging to provide full auto-generated type coverage out of the box. - -Check out the [example projects](https://github.com/graphql-nexus/schema/tree/develop/examples) to get some ideas of what this looks like in practice, or try it out in the [playground](../playground) to see what we mean! - -## Installation - -GraphQL Nexus can be installed with either `npm` or `yarn`. - - - - -```sh -npm add nexus -npm add graphql # required as a peer dependency -``` - - - -```sh -yarn add nexus -yarn add graphql # required as a peer dependency -``` - - - -## Building an Example Schema - -As documented in the [API reference](api-core-concepts.md) GraphQL Nexus provides a consistent, scalable approach to defining GraphQL types in code. - -```js -import { - objectType, - interfaceType, - queryType, - stringArg, - enumType, - intArg, - arg, - makeSchema, -} from '@nexus/schema' - -const Node = interfaceType({ - name: 'Node', - definition(t) { - t.id('id', { description: 'Unique identifier for the resource' }) - t.resolveType(() => null) - }, -}) - -const Account = objectType({ - name: 'Account', - definition(t) { - t.implements(Node) // or t.implements("Node") - t.string('username') - t.string('email') - }, -}) - -const StatusEnum = enumType({ - name: 'StatusEnum', - members: ['ACTIVE', 'DISABLED'], -}) - -const Query = queryType({ - definition(t) { - t.field('account', { - type: Account, // or "Account" - args: { - name: stringArg(), - status: arg({ type: 'StatusEnum' }), - }, - }) - t.list.field('accountsById', { - type: Account, // or "Account" - args: { - ids: intArg({ list: true }), - }, - }) - }, -}) - -// Recursively traverses the value passed to types looking for -// any valid Nexus or graphql-js objects to add to the schema, -// so you can be pretty flexible with how you import types here. -const schema = makeSchema({ - types: [Account, Node, Query, StatusEnum], - // or types: { Account, Node, Query } - // or types: [Account, [Node], { Query }] -}) -``` - -## Nullability & Default Values - -_tl;dr - GraphQL Nexus assumes output fields are non-null by default_ - -One benefit of GraphQL is the strict enforcement and guarantees of null values it provides in the type definitions. One opinion held by GraphQL is that fields should be considered nullable by default. - -The GraphQL documentation provides [this explanation](https://graphql.org/learn/best-practices/#nullability): - -> ... in a GraphQL type system, every field is nullable by default. This is because there are many things which can go awry in a networked service backed by databases and other services. A database could go down, an asynchronous action could fail, an exception could be thrown. Beyond simply system failures, authorization can often be granular, where individual fields within a request can have different authorization rules. - -GraphQL Nexus breaks slightly from this convention, and instead assumes by all fields are "non-null" unless otherwise specified with a `nullable` option set to `true`. It also assumes all input types (fields/args) are nullable unless `required` is set to true. - -The rationale being that for most applications, the case of returning `null` to mask errors and still properly handle this partial response is exceptional, and should be handled as such by manually defining these places where a schema could break in this regard. - -If you find yourself wanting this the other way around, there is a `nonNullDefaults` option for the `makeSchema` which will make all fields nullable unless `required: true` (an alias for `nullable: false`) is specified during field definition. - -This can also be configured on a per-type basis, using the `nonNullDefaults` option on the type definition object. This can be handy if you find yourself adding `{ nullable: true }` to many fields of an output object type, or `{required: true}` to many arguments. - -## Resolving: Inline Function - -One common idiom in GraphQL is exposing fields that mask or rename the property name on the backing object. GraphQL Nexus makes this simple by allowing a function as the second parameter to any built-in scalar resolver function. - -```ts -const User = objectType({ - name: 'User', - definition(t) { - t.id('id', (o) => o.user_id) - t.string('name', (o) => o.user_name) - t.string('description', (o) => o.user_description) - }, -}) -``` - -## Auto-Generated Artifacts - -When you make a change to your GraphQL schema it is useful to see how exactly this changes the contract of the API, or the associated typings. - -GraphQL Nexus takes care of this for you, simply provide a path to where you want these files to be output and it will auto-generate them when the server starts. By default, this only occurs when `process.env.NODE_ENV !== "production"`. - -```js -const schema = makeSchema({ - types: [ - /* All schema types provided here */ - ], - outputs: { - schema: path.join(__dirname, '../../my-schema.graphql'), - typegen: path.join(__dirname, '../../my-generated-types.d.ts'), - }, -}) -``` - -Read more about how the automatic [type generation](type-generation.md) works. - -
-Although your .graphql file is generated, we recommend you check the file into source control. This gives you visibility into how changes in type construction affect the schema consumed by the end-user. -
- -## Testing Nexus - -Nexus encourages separating your domain logic from the actual resolvers via context, so you should be able to test and reuse your application logic independent of GraphQL. See the use of the [data-sources](https://github.com/graphql-nexus/schema/tree/develop/examples/ghost/src/data-sources) in the ghost example for a start on how you might structure your data layer. - -More info about testing patterns for GraphQL will be coming soon. diff --git a/docs/components/schema/api/copy/library-authors.md b/docs/components/schema/api/copy/library-authors.md deleted file mode 100644 index e2335d6b0..000000000 --- a/docs/components/schema/api/copy/library-authors.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: library-authors -title: Library Authors -sidebar_label: Library Authors ---- - -## Wrapping the API - -If you are a library author building tools for GraphQL, it is recommended that you have `nexus` specified as a peer dependency rather than a direct dependency of your wrapping plugin, so duplicate copies of the library are not installed. The simplest way to build things for nexus is just to create higher-order functions which provide apis to abstract common functionality. - -One example of this pattern would be for creating relay-style connections: - -```ts -export const UserConnectionTypes = connectionType('User') -``` - -Where `connectionType` is really just a wrapper creating two `objectTypes`: - -```ts -import { core, objectType } from '@nexus/schema' - -export function connectionType(name: core.AllOutputTypes) { - const Connection = objectType({ - name: `${name}Connection`, - definition(t) { - t.field('edges', { type: `${name}Edge` }) - }, - }) - const Edge = objectType({ - name: `${name}Edge`, - definition(t) { - t.id('cursor', (root) => `${name}:${root.id}`) - t.field('node', { type: name }) - }, - }) - const PageInfo = objectType({ - name: `${name}PageInfo`, - definition(t) { - t.boolean('hasNextPage') - t.boolean('hasPreviousPage') - }, - }) - return { Connection, Edge, PageInfo } -} -``` - -All internal apis are also exposed under a `core` namespace for you to use. Note that these may be subject to minor change, though we'll try to be considerate about this. At least there are type-safety guarantees (assuming you're using TypeScript). diff --git a/docs/components/schema/api/copy/plugin-connection.md b/docs/components/schema/api/copy/plugin-connection.md deleted file mode 100644 index cb1e1784a..000000000 --- a/docs/components/schema/api/copy/plugin-connection.md +++ /dev/null @@ -1,251 +0,0 @@ ---- -id: plugin-connection -title: Connection Plugin -sidebar_label: Connections ---- - -The connection plugin provides a new method on the object definition builder, enabling paginated associations between types, following the [Relay Connection Specification](https://facebook.github.io/relay/graphql/connections.htm#sec-Node). It provides simple ways to customize fields available on the `Connection`, `Edges`, or `PageInfo` types. - -To install, add the `connectionPlugin` to the `makeSchema.plugins` array, along with any other plugins -you'd like to include: - -```ts -import { makeSchema, connectionPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - // ... other plugins - connectionPlugin(), - ], -}) -``` - -By default, the plugin will install a `t.connectionField` method available on the object definition builder: - -```ts -export const User = objectType({ - name: "User", - definition(t) { - t.connectionField(...); - }, -}); -``` - -You can change the name of this field by specifying the `nexusFieldName` in the plugin config. - -## Usage - -There are two main ways to use the connection field, with a `nodes` property, or a `resolve` property: - -### With `resolve` - -If you have custom logic you'd like to provide in resolving the connection, we allow you to instead specify a `resolve` field, which will make not assumptions about how the `edges`, `cursor`, or `pageInfo` are defined. - -You can use this with helpers provided via [graphql-relay-js](https://github.com/graphql/graphql-relay-js). - -```ts -import { connectionFromArray } from 'graphql-relay' - -export const usersQueryField = queryField((t) => { - t.connectionField('users', { - type: User, - async resolve(root, args, ctx, info) { - return connectionFromArray(await ctx.resolveUserNodes(), args) - }, - }) -}) -``` - -### With `nodes` - -When providing a `nodes` property, we make some assumptions about the structure of the connection. We only -require you return a list of rows to resolve based on the connection, and then we will automatically infer the `hasNextPage`, `hasPreviousPage`, and `cursor` values for you. - -```ts -t.connectionField('users', { - type: User, - nodes(root, args, ctx, info) { - // [{ id: 1, ... }, ..., { id: 10, ... }] - return ctx.users.resolveForConnection(root, args, ctx, info) - }, -}) -``` - -One limitation of the `nodes` property, is that you cannot paginate backward without a `cursor`, or without defining a `cursorFromNode` property on either the field or plugin config. This is because we can't know how long the connection list may be to begin paginating backward. - -```ts -t.connectionField('usersConnectionNodes', { - type: User, - cursorFromNode(node, args, ctx, info, { index, nodes }) { - if (args.last && !args.before) { - const totalCount = USERS_DATA.length - return `cursor:${totalCount - args.last! + index + 1}` - } - return connectionPlugin.defaultCursorFromNode(node, args, ctx, info, { - index, - nodes, - }) - }, - nodes() { - // ... - }, -}) -``` - -### Including a `nodes` field: - -If you want to include a `nodes` field, which includes the nodes of the connection flattened into an array similar to how GitHub does in their [GraphQL API](https://developer.github.com/v4/), set `includeNodesField` to `true` - -```ts -connectionPlugin({ - includeNodesField: true, -}) -``` - -```graphql -query IncludeNodesFieldExample { - users(first: 10) { - nodes { - id - } - pageInfo { - endCursor - hasNextPage - } - } -} -``` - -### Top level connection field - -The `queryField` or `mutationField` helpers may accept a function rather than a field name, which will be shorthand for the query builder: - -```ts -export const usersField = queryField((t) => { - t.connectionField('users', { - type: Users, - nodes(root, args, ctx, info) { - return ctx.users.forConnection(root, args) - }, - }) -}) -``` - -There are properties on the plugin to help configure this including, `cursorFromNode`, which allows you to customize how the cursor is created, or `pageInfoFromNodes` to customize how `hasNextPage` or `hasPreviousPage` are set. - -## Pagination Arguments - -### Modifying arguments - -You may specify `additionalArgs` on either the plugin or the field config, to add additional arguments to the connection: - -```ts -t.connectionField('userConnectionAdditionalArgs', { - type: User, - disableBackwardPagination: true, - additionalArgs: { - isEven: booleanArg({ - description: 'If true, filters the users with an odd pk', - }), - }, - resolve() { - // ... - }, -}) -``` - -If you have specified args on the field, they will overwrite any custom args defined on the plugin config, unless `inheritAdditionalArgs` is set to true. - -### Disabling forward/backward pagination - -By default we assume that the cursor can paginate in both directions. This is not always something every -API needs or supports, so to turn them off, you can set `disableForwardPagination`, or `disableBackwardPagination` to -true on either the `paginationConfig`, or on the `fieldConfig`. - -When we disable the forward or backward pagination args, by default we set the remaining `first` or `last` to required. -If you do not want this to happen, specify `strictArgs: false` in the plugin or field config. - -### Argument validation - -By default, the connection field validates that a `first` or a `last` must be provided, and not both. If you wish to provide your own validation, supply a `validateArgs` property to either the `connectionPlugin` config, or to the field configuration directly. - -```ts -connectionPlugin({ - validateArgs(args, info) { - // ... custom validate logic - }, -}) - -// or - -t.connectionField('users', { - // ... - validateArgs: (args, info) => { - // custom validate logic - }, -}) -``` - -## Extending Connection / Edge types - -There are two ways to extend the connection type, one is by providing `extendConnection` on the `connectionPlugin` configuration, the other is to add an `extendConnection` or `extendEdge` definition block on the field config. - -### Globally - -```ts -connectionPlugin({ - extendConnection: { - totalCount: { type: 'Int' }, - }, -}) - -t.connectionField('users', { - type: User, - nodes: () => { - // ... - }, - totalCount() { - return ctx.users.totalCount(args) - }, -}) -``` - -### One-off / per-field - -```ts -t.connectionField('users', { - extendConnection(t) { - t.int('totalCount', { - resolve: (source, args, ctx) => ctx.users.totalCount(args), - }) - }, -}) -``` - -The field-level customization approach will result in a custom connection type specific to that type/field, e.g. `QueryUsers_Connection`, since the modification is specific to the individual field. - -## Multiple Connection Types - -You can create multiple field connection types with varying defaults, available under different connections builder methods. A `typePrefix` property should be supplied to configure the name - -Custom Usage: - -```ts -import { makeSchema, connectionPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - connectionPlugin({ - typePrefix: 'Analytics', - nexusFieldName: 'analyticsConnection', - extendConnection: { - totalCount: { type: 'Int' }, - avgDuration: { type: 'Int' }, - }, - }), - connectionPlugin({}), - ], -}) -``` diff --git a/docs/components/schema/api/copy/plugin-fieldAuthorize.md b/docs/components/schema/api/copy/plugin-fieldAuthorize.md deleted file mode 100644 index 270def7a8..000000000 --- a/docs/components/schema/api/copy/plugin-fieldAuthorize.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -id: plugin-fieldAuthorize -title: Field Authorize Plugin -sidebar_label: Field Authorize ---- - -The authorize plugin allows us to define field-level authorization to a query: - -```ts -t.field('postById', { - type: Post, - args: { id: idArg() }, - authorize: (root, args, ctx) => ctx.auth.canViewPost(args.id), - resolve(root, args, ctx) { - return ctx.post.byId(args.id) - }, -}) -``` diff --git a/docs/components/schema/api/copy/plugin-nullabilityGuard.md b/docs/components/schema/api/copy/plugin-nullabilityGuard.md deleted file mode 100644 index ee1770946..000000000 --- a/docs/components/schema/api/copy/plugin-nullabilityGuard.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: plugin-nullabilityGuard -title: Nullability Guard Plugin -sidebar_label: Nullability Guard ---- - -This plugin helps us guard against non-null values crashing our queries in production. It does this by defining that every scalar value have a "fallback" value defined, so if we see a nullish value on an otherwise non-null field, we will fallback to this instead of crashing the query. - -
-Note: - -The `nullabilityGuardPlugin` by default only guards when `process.env.NODE_ENV === 'production'`. This is intended so you see/catch these errors in development and do not use it except as a last resort. If you want to change this, set the `shouldGuard` config option. - -
- -### Example Use: - -```ts -import { nullabilityGuardPlugin } from '@nexus/schema' - -const guardPlugin = nullabilityGuardPlugin({ - onNullGuarded(ctx, info) { - // This could report to a service like Sentry, or log internally - up to you! - console.error( - `Error: Saw a null value for non-null field ${info.parentType.name}.${info.fieldName} ${ - root ? `(${root.id || root._id})` : '' - }` - ) - }, - // A map of `typeNames` to the values we want to replace with if a "null" value - // is seen in a position it shouldn't be. These can also be provided as a config property - // for the `objectType` / `enumType` definition, as seen below. - fallbackValues: { - Int: () => 0, - String: () => '', - ID: ({ info }) => `${info.parentType.name}:N/A`, - Boolean: () => false, - Float: () => 0, - }, -}) -``` - -### Null Guard Algorithm - -- If a field is nullable: - - - If the field is non-list, do not guard - - If the field is a list, and none of the list members are nullable, do not guard - -- If the field is non-nullable and the value is null: - - - If the field is a list: - - If the value is nullish, return an empty list `[]` - - If the list is non-empty, iterate and complete with a valid non-null fallback - - If the value is a Union/Interface - - - Return with an object with the `__typename` of the first type which implements this contract - - - If the field is an object: - - If the value is nullish - - If there is a fallback defined on the object for that type, return with that - - Else return with an empty object - - Return the value and push forward to the next resolvers diff --git a/docs/components/schema/api/copy/plugin-queryComplexity.md b/docs/components/schema/api/copy/plugin-queryComplexity.md deleted file mode 100644 index b334a0269..000000000 --- a/docs/components/schema/api/copy/plugin-queryComplexity.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -id: plugin-queryComplexity -title: Query Complexity Plugin -sidebar_label: Query Complexity ---- - -A single GraphQL query can potentially generate a huge workload for a server, like thousands of database operations which can be used to cause DDoS attacks. In order to limit and keep track of what each GraphQL operation can do, the query complexity plugin allows defining field-level complexity values that works with the [graphql-query-complexity](https://github.com/slicknode/graphql-query-complexity) library. - -To install, add the `queryComplexityPlugin` to the `makeSchema.plugins` array, along with any other plugins you'd like to include: - -```ts -import { makeSchema, queryComplexityPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - // ... other plugins - queryComplexityPlugin(), - ], -}) -``` - -The plugin will install a `complexity` property on the output field config: - -```ts -export const User = objectType({ - name: 'User', - definition(t) { - t.id('id', { - complexity: 2, - }) - }, -}) -``` - -And of course, integrate `graphql-query-complexity` with your GraphQL server. You can setup with `express-graphql` as in [the library's example](https://github.com/slicknode/graphql-query-complexity#usage-with-express-graphql). - -### Complexity Value - -There are two ways to define the complexity: - -- A number -- A complexity estimator - -The easiest way to specify the complexity is to just provide a number, as in the example code above. The `complexity` property can be omitted if its value is `1`, provided that you have a simple estimator of 1 when configuring `graphql-query-complexity` like below: - -```ts -const complexity = getComplexity({ - // ... other configurations - estimators: [ - // All undefined complexity values will fallback to 1 - simpleEstimator({ defaultComplexity: 1 }), - ], -}) -``` - -Another way is with the complexity estimator, which is a function that returns a number, but also provides arguments to compute the final value. The query complexity plugin augments `graphql-query-complexity`'s default complexity estimator by providing its corresponding nexus types to ensure type-safety. No additional arguments are introduced so the function declaration is still syntactically equal. - -Augmented complexity estimator function signature: - -```ts -type QueryComplexityEstimatorArgs = { - // The root type the field belongs too - type: RootValue - - // The GraphQLField that is being evaluated - field: GraphQLField, GetGen<'context'>, ArgsValue> - - // The input arguments of the field - args: ArgsValue - - // The complexity of all child selections for that field - childComplexity: number -} - -type QueryComplexityEstimator = (options: QueryComplexityEstimatorArgs) => number | void -``` - -And you can use it like so: - -```ts -export const users = queryField('users', { - type: 'User', - list: true, - args: { - count: intArg({ nullable: false }), - }, - // This will calculate the complexity based on the count and child complexity. - // This is useful to prevent clients from querying mass amount of data. - complexity: ({ args, childComplexity }) => args.count * childComplexity, - resolve: () => [{ id: '1' }], -}) -``` - -For more info about how query complexity is computed, please visit [graphql-query-complexity](https://github.com/slicknode/graphql-query-complexity). diff --git a/docs/components/schema/api/copy/type-generation.md b/docs/components/schema/api/copy/type-generation.md deleted file mode 100644 index 3a60473a8..000000000 --- a/docs/components/schema/api/copy/type-generation.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: type-generation -title: Type Generation Details -sidebar_label: Type Generation Details ---- - -This is the most important piece to understand to get the most out of Nexus. It is relevant to JavaScript as well as TypeScript users, as tools like VSCode and `// @ts-check` can utilize these types to aid in autocomplete or type-checking. A core goal of Nexus is to have the best possible type coverage with the least possible manual type annotation. - -## Overview - -Nexus was designed with TypeScript in mind. In order to fully typecheck our GraphQL objects, we need to generate a number of types that combine the schema, any type or field configuration provided, and the GraphQL resolution algorithm to create as much type-safety as possible without any additional work importing and assigning types throughout the codebase. - -## Root Types - -A **root type** is a type representation of the value used to resolve the fields of an object type. It is the object that will be passed as the first argument of `resolve`. It can be a plain JS object, a database model, a mongoose document, a JS class, anything that fulfills the contract defined by the GraphQL object type, based on the field definitions. - -Scalars can also have backing types, representing the value they are parsed into. - -Sometimes GraphQL types are passthrough, and don't have a dedicated type backing them. One such case would be in the `Edge` of a Relay style pagination. In this case, Nexus will generate a type-definition which makes assumptions of the necessary value to fulfill the contract. If this is incorrect, you can always provide a concrete type for the object. - -## Field Type - -A **field type** is the valid return value used to a field on an object type. In GraphQL, promises can be returned at every level of the type resolution, so we wrap the types in a `MaybePromiseDeep` type to express this. - -## Configuring our types - -The [Ghost Example](https://github.com/prisma-labs/nexus/blob/develop/examples/ghost/src/ghost-schema.ts) is the best to look at for an example of how we're able to capture the types from existing runtime objects or definitions and merge them with our schema. - -The [makeSchema](api-makeSchema.md) takes several options which helps us find the types we need to import into our generated schema, and customize where these generated types are output. Read more about the API [here](api-makeSchema.md). diff --git a/docs/components/schema/api/copy/why-graphql-nexus.md b/docs/components/schema/api/copy/why-graphql-nexus.md deleted file mode 100755 index deb76e72a..000000000 --- a/docs/components/schema/api/copy/why-graphql-nexus.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -id: why-graphql-nexus -title: Why Nexus? -sidebar_label: Why Nexus? ---- - -Nexus was born out of my experience building several production GraphQL APIs, in different languages and frameworks. The first with vanilla [graphql-js](https://github.com/graphql/graphql-js), another schema-first with [graph.ql](https://github.com/matthewmueller/graph.ql) and later [graphql-tools](https://github.com/apollographql/graphql-tools). Following that with [graphene-python](https://docs.graphene-python.org/en/latest/) and most recently with a bit of [graphql-ruby](http://graphql-ruby.org/). - -After working with the toolkits in other scripting languages, it felt like there was a gap in the JavaScript approaches. Schema-first development starts out great, by simply expressing your schema in the GraphQL Schema Definition Language (SDL) and providing resolvers matching to the types as needed you are up and running fast! No need for tons of requires or "overhead" to get a GraphQL server running. - -As your schema then grows to hundreds or thousands of types, manually curating these SDL fragments becomes tedious. Documentation changes can be tough. Modifying fields on interfaces can require manual changes to many implementing types, a process that can be quite error prone. - -_If only there were a way to combine the simplicity of schema-first development, with the long-term maintainability of a definition-first approach._ - -GraphQL Nexus aims to fill that void, making the process as simple as possible while also making good use of the runtime to introduce powerful ways of composing types, introducing type or schema wide changes, and much more. - -The core idea of GraphQL Nexus draws from basing the schema off the SDL - keeping things declarative and simple to understand. It allows you to reference the type names as string literals rather than always need to import to reference types (you can do that too if you prefer). - -By combining automatic type generation with some of the more powerful features of TypeScript - type merging, conditional types, and type inference, we can know exactly which type names we are referring to and able to use throughout our code. We can know both the parameters and the return type of resolvers without providing any type annotation. It takes a little getting used to, but it ends up leading to a great feedback loop of the types annotating themselves. diff --git a/docs/components/schema/api/index.md b/docs/components/schema/api/index.md deleted file mode 100644 index 86a4c5def..000000000 --- a/docs/components/schema/api/index.md +++ /dev/null @@ -1,12 +0,0 @@ -The API has been carefully designed with the following goals in mind: - -1. Type-Safety [by default](type-generation.md) -1. Readability -1. Developer ergonomics -1. Playing nicely with Prettier formatting - -The API has evolved over the last few months of early development and internal use, and outside of implementing [additional features](future-features.md) is unlikely to undergo major structural changes. - -That is, before you open a GitHub issue or pull-request with a suggested change to the API, ensure that it meets all four of those criteria listed above and be able to explain why a change is necessary. - -Each public API is documented. Find them in the sidebar. diff --git a/docs/components/schema/plugins-api.md b/docs/components/schema/plugins-api.md deleted file mode 100644 index d7e5e5b05..000000000 --- a/docs/components/schema/plugins-api.md +++ /dev/null @@ -1,132 +0,0 @@ -Nexus Schema ships with a plugin API which allows you to define your own abstractions when building out a GraphQL schema. The plugin layer allow you to: - -- Define new options for types and fields in a type-safe manner -- Layer runtime execution before and after a resolver -- Modify schema configuration -- Customize the emit behavior of TypeScript type generation (coming soon) - -### Example - -```ts -import { plugin } from '@nexus/schema' - -export const myErrorGuardPlugin = plugin({ - name: 'MyErrorGuardPlugin', - description: 'Catches errors and logs them to Sentry, ', -}) -``` - -## Config - -### name - -Every plugin is required to have a unique name identifying the plugin. This is used in error-messages -and warnings. - -### description - -A string describing the plugin. Currently not used for anything, but it could be used in the future to -automatically create documentation for the stack of plugins used in Nexus. - -### onInstall(builder) - -The "onInstall" hook is used as it sounds - it is invoked once before any of the types are processed for the schema. This hook is primarily useful in allowing a plugin to add "dynamics fields" to augment the API of the definition block. - -```ts -plugin({ - name: 'onInstallExample', - onInstall(builder) {}, -}) -``` - -The `builder` option provided has several properties, which allow you to influence the schema via the plugin. - -### onBeforeBuild(builder) - -The "onBeforeBuild" is called after all `onInstall`, but just before the schema is constructed. - -```ts -plugin({ - name: 'onBeforeBuildExample', - onBeforeBuild(builder) {}, -}) -``` - -### onAfterBuild(schema) - -The "onAfterBuild" hook is provided the schema, and is usedful to validate contract of the schema -with the expectations of the plugin. The [nullabilityGuard](plugin-nullabilityGuard.md) - -```ts -plugin({ - name: 'onAfterBuildExample', - onAfterBuild(schema) {}, -}) -``` - -### onCreateFieldResolver(config) - -Every ObjectType, whether they are defined via Nexus' `objectType` api, or elsewhere is given a resolver. -The [defaultFieldResolver](https://github.com/graphql/graphql-js/blob/82a0c336de05b4ab0d24d5557b56135c828fe888/src/execution/execute.js#L1179-L1197) is provided if none is specified by the field definition. - -When the resolver is created for a type, this can optionally return a "middleware" which wraps the resolve behavior of the field. Here's an example of writing a "LogMutationTimePlugin", which logs how long it takes a mutation to complete: - -```ts -const LogMutationTimePlugin = plugin({ - name: 'LogMutationTimePlugin', - onCreateFieldResolver(config) { - if (config.parentTypeConfig.name !== 'Mutation') { - return - } - return async (root, args, ctx, info, next) => { - const startTimeMs = new Date().valueOf() - const value = await next(root, args, ctx, info) - const endTimeMs = new Date().valueOf() - console.log(`Mutation ${info.operation.name} took ${endTimeMs - startTimeMs} ms`) - return value - } - }, -}) -``` - -### onMissingType - -The "onMissingType" hook occurs when a type is provided as a string, but was never explicitly defined. -This can be helpful in situations where you have boilerplate types which can be constructed -generically / programatically based on their name. - -Here is an example of a plugin which creates a "ResourceResponse" type whenever you see a string: - -```ts -/** - * Creates a ____ResourceResponse type - * - * type OrganizationResourceResponse { - * ok: Boolean! - * resource: Organization! - * query: Query! - * } - * - * @param resource - */ -export function resourceResponse(resource: string) { - return objectType({ - name: `${resource}ResourceResponse`, - definition(t) { - t.boolean('ok', () => true) - t.field('resource', { type: resource as any }) - t.field('query', { type: 'Query', resolve: () => ({}) }) - }, - }) -} - -const ResourceTypePlugin = plugin({ - name: 'onMissingTypeExample', - onMissingType(typeName, builder) { - if (/(.*?)ResourceResponse/.test(typeName)) { - return resourceResponse(typeName.slice(0, -16)) - } - return null - }, -}) -``` diff --git a/docs/components/schema/plugins.md b/docs/components/schema/plugins.md deleted file mode 100644 index 258cd5725..000000000 --- a/docs/components/schema/plugins.md +++ /dev/null @@ -1 +0,0 @@ -todo diff --git a/docs/components/schema/plugins/connection.md b/docs/components/schema/plugins/connection.md deleted file mode 100644 index 9e590d25d..000000000 --- a/docs/components/schema/plugins/connection.md +++ /dev/null @@ -1,245 +0,0 @@ -The connection plugin provides a new method on the object definition builder, enabling paginated associations between types, following the [Relay Connection Specification](https://facebook.github.io/relay/graphql/connections.htm#sec-Node). It provides simple ways to customize fields available on the `Connection`, `Edges`, or `PageInfo` types. {docsify-ignore} - -To install, add the `connectionPlugin` to the `makeSchema.plugins` array, along with any other plugins -you'd like to include: - -```ts -import { makeSchema, connectionPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - // ... other plugins - connectionPlugin(), - ], -}) -``` - -By default, the plugin will install a `t.connectionField` method available on the object definition builder: - -```ts -export const User = objectType({ - name: "User", - definition(t) { - t.connectionField(...); - }, -}); -``` - -You can change the name of this field by specifying the `nexusFieldName` in the plugin config. - -#### Usage {docsify-ignore} - -There are two main ways to use the connection field, with a `nodes` property, or a `resolve` property: - -##### With `resolve` {docsify-ignore} - -If you have custom logic you'd like to provide in resolving the connection, we allow you to instead specify a `resolve` field, which will make not assumptions about how the `edges`, `cursor`, or `pageInfo` are defined. - -You can use this with helpers provided via [graphql-relay-js](https://github.com/graphql/graphql-relay-js). - -```ts -import { connectionFromArray } from 'graphql-relay' - -export const usersQueryField = queryField((t) => { - t.connectionField('users', { - type: User, - async resolve(root, args, ctx, info) { - return connectionFromArray(await ctx.resolveUserNodes(), args) - }, - }) -}) -``` - -##### With `nodes` {docsify-ignore} - -When providing a `nodes` property, we make some assumptions about the structure of the connection. We only -require you return a list of rows to resolve based on the connection, and then we will automatically infer the `hasNextPage`, `hasPreviousPage`, and `cursor` values for you. - -```ts -t.connectionField('users', { - type: User, - nodes(root, args, ctx, info) { - // [{ id: 1, ... }, ..., { id: 10, ... }] - return ctx.users.resolveForConnection(root, args, ctx, info) - }, -}) -``` - -One limitation of the `nodes` property, is that you cannot paginate backward without a `cursor`, or without defining a `cursorFromNode` property on either the field or plugin config. This is because we can't know how long the connection list may be to begin paginating backward. - -```ts -t.connectionField('usersConnectionNodes', { - type: User, - cursorFromNode(node, args, ctx, info, { index, nodes }) { - if (args.last && !args.before) { - const totalCount = USERS_DATA.length - return `cursor:${totalCount - args.last! + index + 1}` - } - return connectionPlugin.defaultCursorFromNode(node, args, ctx, info, { - index, - nodes, - }) - }, - nodes() { - // ... - }, -}) -``` - -##### Including a `nodes` field: {docsify-ignore} - -If you want to include a `nodes` field, which includes the nodes of the connection flattened into an array similar to how GitHub does in their [GraphQL API](https://developer.github.com/v4/), set `includeNodesField` to `true` - -```ts -connectionPlugin({ - includeNodesField: true, -}) -``` - -```graphql -query IncludeNodesFieldExample { - users(first: 10) { - nodes { - id - } - pageInfo { - endCursor - hasNextPage - } - } -} -``` - -##### Top level connection field {docsify-ignore} - -The `queryField` or `mutationField` helpers may accept a function rather than a field name, which will be shorthand for the query builder: - -```ts -export const usersField = queryField((t) => { - t.connectionField('users', { - type: Users, - nodes(root, args, ctx, info) { - return ctx.users.forConnection(root, args) - }, - }) -}) -``` - -There are properties on the plugin to help configure this including, `cursorFromNode`, which allows you to customize how the cursor is created, or `pageInfoFromNodes` to customize how `hasNextPage` or `hasPreviousPage` are set. - -#### Pagination Arguments {docsify-ignore} - -##### Modifying arguments {docsify-ignore} - -You may specify `additionalArgs` on either the plugin or the field config, to add additional arguments to the connection: - -```ts -t.connectionField('userConnectionAdditionalArgs', { - type: User, - disableBackwardPagination: true, - additionalArgs: { - isEven: booleanArg({ - description: 'If true, filters the users with an odd pk', - }), - }, - resolve() { - // ... - }, -}) -``` - -If you have specified args on the field, they will overwrite any custom args defined on the plugin config, unless `inheritAdditionalArgs` is set to true. - -##### Disabling forward/backward pagination {docsify-ignore} - -By default we assume that the cursor can paginate in both directions. This is not always something every -API needs or supports, so to turn them off, you can set `disableForwardPagination`, or `disableBackwardPagination` to -true on either the `paginationConfig`, or on the `fieldConfig`. - -When we disable the forward or backward pagination args, by default we set the remaining `first` or `last` to required. -If you do not want this to happen, specify `strictArgs: false` in the plugin or field config. - -##### Argument validation {docsify-ignore} - -By default, the connection field validates that a `first` or a `last` must be provided, and not both. If you wish to provide your own validation, supply a `validateArgs` property to either the `connectionPlugin` config, or to the field configuration directly. - -```ts -connectionPlugin({ - validateArgs(args, info) { - // ... custom validate logic - }, -}) - -// or - -t.connectionField('users', { - // ... - validateArgs: (args, info) => { - // custom validate logic - }, -}) -``` - -#### Extending Connection / Edge types {docsify-ignore} - -There are two ways to extend the connection type, one is by providing `extendConnection` on the `connectionPlugin` configuration, the other is to add an `extendConnection` or `extendEdge` definition block on the field config. - -##### Globally {docsify-ignore} - -```ts -connectionPlugin({ - extendConnection: { - totalCount: { type: 'Int' }, - }, -}) - -t.connectionField('users', { - type: User, - nodes: () => { - // ... - }, - totalCount() { - return ctx.users.totalCount(args) - }, -}) -``` - -##### One-off / per-field {docsify-ignore} - -```ts -t.connectionField('users', { - extendConnection(t) { - t.int('totalCount', { - resolve: (source, args, ctx) => ctx.users.totalCount(args), - }) - }, -}) -``` - -The field-level customization approach will result in a custom connection type specific to that type/field, e.g. `QueryUsers_Connection`, since the modification is specific to the individual field. - -#### Multiple Connection Types {docsify-ignore} - -You can create multiple field connection types with varying defaults, available under different connections builder methods. A `typePrefix` property should be supplied to configure the name - -Custom Usage: - -```ts -import { makeSchema, connectionPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - connectionPlugin({ - typePrefix: 'Analytics', - nexusFieldName: 'analyticsConnection', - extendConnection: { - totalCount: { type: 'Int' }, - avgDuration: { type: 'Int' }, - }, - }), - connectionPlugin({}), - ], -}) -``` diff --git a/docs/components/schema/plugins/field-authorize.md b/docs/components/schema/plugins/field-authorize.md deleted file mode 100644 index 927839c09..000000000 --- a/docs/components/schema/plugins/field-authorize.md +++ /dev/null @@ -1,12 +0,0 @@ -The authorize plugin allows us to define field-level authorization to a query. - -```ts -t.field('postById', { - type: Post, - args: { id: idArg() }, - authorize: (root, args, ctx) => ctx.auth.canViewPost(args.id), - resolve(root, args, ctx) { - return ctx.post.byId(args.id) - }, -}) -``` diff --git a/docs/components/schema/plugins/nullability-guard.md b/docs/components/schema/plugins/nullability-guard.md deleted file mode 100644 index 7ea6f6445..000000000 --- a/docs/components/schema/plugins/nullability-guard.md +++ /dev/null @@ -1,56 +0,0 @@ -This plugin helps us guard against non-null values crashing our queries in production. It does this by defining that every scalar value have a "fallback" value defined, so if we see a nullish value on an otherwise non-null field, we will fallback to this instead of crashing the query. - -
- -
- -> The `nullabilityGuardPlugin` by default only guards when `process.env.NODE_ENV === 'production'`. This is intended so you see/catch these errors in development and do not use it except as a last resort. If you want to change this, set the `shouldGuard` config option. - -#### Example {docsify-ignore} - -```ts -import { nullabilityGuardPlugin } from '@nexus/schema' - -const guardPlugin = nullabilityGuardPlugin({ - onNullGuarded(ctx, info) { - // This could report to a service like Sentry, or log internally - up to you! - console.error( - `Error: Saw a null value for non-null field ${info.parentType.name}.${info.fieldName} ${ - root ? `(${root.id || root._id})` : '' - }` - ) - }, - // A map of `typeNames` to the values we want to replace with if a "null" value - // is seen in a position it shouldn't be. These can also be provided as a config property - // for the `objectType` / `enumType` definition, as seen below. - fallbackValues: { - Int: () => 0, - String: () => '', - ID: ({ info }) => `${info.parentType.name}:N/A`, - Boolean: () => false, - Float: () => 0, - }, -}) -``` - -### Null Guard Algorithm {docsify-ignore} - -- If a field is nullable: - - - If the field is non-list, do not guard - - If the field is a list, and none of the list members are nullable, do not guard - -- If the field is non-nullable and the value is null: - - - If the field is a list: - - If the value is nullish, return an empty list `[]` - - If the list is non-empty, iterate and complete with a valid non-null fallback - - If the value is a Union/Interface - - - Return with an object with the `__typename` of the first type which implements this contract - - - If the field is an object: - - If the value is nullish - - If there is a fallback defined on the object for that type, return with that - - Else return with an empty object - - Return the value and push forward to the next resolvers diff --git a/docs/components/schema/plugins/prisma.md b/docs/components/schema/plugins/prisma.md deleted file mode 100644 index 31319ce46..000000000 --- a/docs/components/schema/plugins/prisma.md +++ /dev/null @@ -1,139 +0,0 @@ -Refer to the [framework docs](/plugins/prisma#runtime-integration) for API reference and concepts. What follows here are aspects that are particular to the schema plugin only. - -## Installation {docsify-ignore} - -```cli -npm add nexus-plugin-prisma -``` - -## Usage {docsify-ignore} - -1. Import `nexusSchemaPrisma` from `nexus-plugin-prisma` -1. Create and configure it if needed (usually not) -1. Pass into `Nexus.makeSchema` `plugins` array - -**Example** - -```ts -import { nexusSchemaPrisma } from 'nexus-plugin-prisma/schema' -import { makeSchema } from '@nexus/schema' -import * as types from './types' - -const schema = makeSchema({ - types, - plugins: [nexusSchemaPrisma()], -}) -``` - -You can find runnable examples in the [repo examples folder](https://github.com/graphql-nexus/nexus-schema-plugin-prisma/tree/master/examples). - -> Note: If you're looking for CRUD capabilities, you must enable the `experimentalCRUD` option. - -## Configuration {docsify-ignore} - -Note that, In most cases, you should not need to configure anything. - -```ts -type Options = { - /** - * Enable experimental CRUD capabilities. - * Add a `t.crud` method in your definition block to generate CRUD resolvers in your `Query` and `Mutation` GraphQL Object Type. - * - * @default false - */ - experimentalCRUD?: boolean - /** - * nexus-plugin-prisma will call this to get a reference to an instance of the Prisma Client. - * The function is passed the context object. Typically a Prisma Client instance will - * be available on the context to support your custom resolvers. Therefore the - * default getter returns `ctx.prisma`. - */ - prismaClient?: PrismaClientFetcher - /** - * Same purpose as for that used in `NexusSchema.makeSchema`. Follows the same rules - * and permits the same environment variables. - */ - shouldGenerateArtifacts?: boolean - inputs?: { - /** - * What is the path to the Prisma Client package? By default looks in - * `node_modules/@prisma/client`. This is needed in order to read your Prisma - * schema AST and Prisma Client CRUD info from the generated Prisma Client package. - */ - prismaClient?: string - } - /** - * Select the pagination strategy. - * - * 'prisma' strategy results in GraphQL pagination arguments mirroring those of Prisma: skip, cursor, take - * - * 'relay' strategy results in GraphQL pagination arguments matching those of the [GraphQL Relay specification](https://relay.dev/graphql/connections. htm): before, after, first, last. - * - * @default 'relay' - */ - paginationStrategy?: - | 'relay' - | 'prisma' - outputs?: { - /** - * Where should typegen be put on disk? By default emits into `node_modules/@types`. - */ - typegen?: string - } - computedInputs?: GlobalComputedInputs - /** - * Map of GraphQL scalar types to be used by the library for the Prisma scalars - * - * When not provided, the scalar types will be passthrough. - * - * @default {} - */ - scalars?: Partial< - Record< - string, - GraphQLScalarType - > - > -} -``` - -## Project Setup {docsify-ignore} - -These are tips to help you with a successful project workflow - -1. Keep app schema somewhere apart from server so that you can do `ts-node --transpile-only path/to/schema/module` to generate typegen. This will come in handy in certain deployment contexts. - -1. Consider using something like the following set of npm scripts. The - `postinstall` step is helpful for guarding against pruning since the - generated `@types` packages will be seen as extraneous. We have an idea to - solve this with [package - facades](https://github.com/prisma-labs/nexus/issues/253). For yarn users - though this would still be helpful since yarn rebuilds all packages whenever - the dependency tree changes in any way - ([issue](https://github.com/yarnpkg/yarn/issues/4703)). The - `NODE_ENV=development` is needed to ensure typegen is run even in a context where `NODE_ENV` is set to `production` (like a heroku deploy pipeline, see next point). Also, consider using [cross-env](https://github.com/kentcdodds/cross-env) for better compatibility with different environments, e.g. on Windows. - - ```json - { - "scripts": { - "generate:prisma": "prisma generate", - "generate:nexus": "cross-env NODE_ENV=development ts-node --transpile-only path/to/schema/module", - "generate": "npm -s run generate:prisma && npm -s run generate:nexus", - "postinstall": "npm -s run generate" - } - } - ``` - -1. In your deployment pipeline you may wish to run a build step. Heroku buildpacks for example call `npm run build` if that script is defined in your `package.json`. If this is your case and you are a TypeScript user consider a build setup as follows. Prior to `tsc` we run artifact generation so that TypeScript will have types for the all the resolver signatures etc. of your app. - - ```json - { - "scripts": { - "build": "npm -s run generate && tsc" - } - } - ``` - -## Legacy Note {docsify-ignore} - -If you are still using `nexus-prisma@0.3` / Prisma 1 you can find the old docs [here](https://github.com/graphql-nexus/schema/blob/8cf2d6b3e22a9dec1f7c23f384bf33b7be5a25cc/docs/database-access-with-prisma.md). Please note that `nexus-prisma@0.3` is only compatible with `nexus` up to `0.12.0-beta.14` ([issue](https://github.com/graphql-nexus/nexus-prisma/issues/520)). We do not currently have plans to update `nexus-prisma@0.3` to become compatible with versions of `nexus` newer than that. diff --git a/docs/components/schema/plugins/query-complexity.md b/docs/components/schema/plugins/query-complexity.md deleted file mode 100644 index 1e4dc75ba..000000000 --- a/docs/components/schema/plugins/query-complexity.md +++ /dev/null @@ -1,89 +0,0 @@ -A single GraphQL query can potentially generate a huge workload for a server, like thousands of database operations which can be used to cause DDoS attacks. In order to limit and keep track of what each GraphQL operation can do, the query complexity plugin allows defining field-level complexity values that works with the [graphql-query-complexity](https://github.com/slicknode/graphql-query-complexity) library. - -To install, add the `queryComplexityPlugin` to the `makeSchema.plugins` array, along with any other plugins you'd like to include: - -```ts -import { makeSchema, queryComplexityPlugin } from '@nexus/schema' - -const schema = makeSchema({ - // ... types, etc, - plugins: [ - // ... other plugins - queryComplexityPlugin(), - ], -}) -``` - -The plugin will install a `complexity` property on the output field config: - -```ts -export const User = objectType({ - name: 'User', - definition(t) { - t.id('id', { - complexity: 2, - }) - }, -}) -``` - -And of course, integrate `graphql-query-complexity` with your GraphQL server. You can setup with `express-graphql` as in [the library's example](https://github.com/slicknode/graphql-query-complexity#usage-with-express-graphql). - -#### Complexity Value {docsify-ignore} - -There are two ways to define the complexity: - -- A number -- A complexity estimator - -The easiest way to specify the complexity is to just provide a number, as in the example code above. The `complexity` property can be omitted if its value is `1`, provided that you have a simple estimator of 1 when configuring `graphql-query-complexity` like below: - -```ts -const complexity = getComplexity({ - // ... other configurations - estimators: [ - // All undefined complexity values will fallback to 1 - simpleEstimator({ defaultComplexity: 1 }), - ], -}) -``` - -Another way is with the complexity estimator, which is a function that returns a number, but also provides arguments to compute the final value. The query complexity plugin augments `graphql-query-complexity`'s default complexity estimator by providing its corresponding nexus types to ensure type-safety. No additional arguments are introduced so the function declaration is still syntactically equal. - -Augmented complexity estimator function signature: - -```ts -type QueryComplexityEstimatorArgs = { - // The root type the field belongs too - type: RootValue - - // The GraphQLField that is being evaluated - field: GraphQLField, GetGen<'context'>, ArgsValue> - - // The input arguments of the field - args: ArgsValue - - // The complexity of all child selections for that field - childComplexity: number -} - -type QueryComplexityEstimator = (options: QueryComplexityEstimatorArgs) => number | void -``` - -And you can use it like so: - -```ts -export const users = queryField('users', { - type: 'User', - list: true, - args: { - count: intArg({ nullable: false }), - }, - // This will calculate the complexity based on the count and child complexity. - // This is useful to prevent clients from querying mass amount of data. - complexity: ({ args, childComplexity }) => args.count * childComplexity, - resolve: () => [{ id: '1' }], -}) -``` - -For more info about how query complexity is computed, please visit [graphql-query-complexity](https://github.com/slicknode/graphql-query-complexity). diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 58b37b0fb36f7d3d04ba2475394e16d7b0fd4094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI2cZ?Ku6vyX8IF)jMs6fzNY-muy9#jHGiLu3~AOtmnC8)8WiC{tQ5CoOj6|qI4 zsGtOUL89J)9Sx`vD;!t=r5zx!!g1s0yEi}hG0e`+%x=U#_Hmzkzw+Mum7V#OLO0M9;-(wJX`pqO^qLTnC=6WFr-CPI9*H3c|b#gb#OUI}(zbEU6~6?vQShKTX! zU{|rtEmGa$(`Xrzcc8tM77@wtadPROu-QLGT-&q-89jSp z&*@C+TiQ-B(#K=F9CGzta-3HhGL2OS`8-t7SdIq zaYmJkG5iNi4DDrmSk9M|*4}99KO$Y|S;Y#UeP--4k=Bylwn0eRKlfUv{cAvT%3cKZ zzXtS-#$DrZ$tj984(#{gJ@QfJ$Upb5;AhW0*{mGS?;D_fW47qOI}-6@FrTsBiCZA- z+#6-?3GttaKKIpN#_$K}6GB>#I`<(VviFW+JxjaN(7j;#Fa0LyPU08My`E)b8}!`! zef;?@6g&p!`zs2_?}zUkF#XcG=Ei_{h0J|Z;#~sYgW8!3ouOEA9)Wb0Fk@IuT4!V< z{<&XEh3>HuX+wl%=M(T zkLdiOHO-ub^?vK_o<#JHO#{cGFO(v?74ch>wBRBz^8zLnkPPqzQ5@Xw6al32+{?gkp;J za-Ff`KI>8Ypty>!c1lv3fzk|=W}q|!MVJ9MD{RyS>gr0j+GU5V>g85dHfpDrcFdH! zRg=u-jaEJO*?P2+&LXtx>r-ws>4ploq5|z!G^CVw%NtUz^tk$7Sv}j+HJQpSDqozb z%t+VOxpkG&L*0yYrp&G96zJBYn|PYt#I2`lkm~uV^XZ{pebx>?>4ql!pxyiVk(MOa zI-IAWH*Ebot=42pQksGP-wfy;rL%p1I0f239MQewWEcSY4k*rdV|!u$FsuTd@i)M` zp!;?d>4MSgp!<~k*T5v`08vEWHR!v0-uCTygM7a8w8p9Xj^9`L2Y?kNuPnnN$e&d! z``t)bfTO5fnZy5Q%J&U(_UioiEYla2pO(kJH}#r#<74Zklt=lF;;S6~izz=C!lW~m zzkuDYNq<6ll;>FYv?T#CCQ=sV-g9Swuln!;=+2){)J7lBy?q|60Qr9g`RHP5cUlBp#Cq<_93+9`$#Z-m_b^1;W(mqO7~i| zuQfsU^&rvMp90za4&A`WWh7?9*&w^PqP0iwk79oW9l$Rd`*M&CCx-3ru)C3O3x&uK zoc{sE9|QKYs4?XlJ5@VKijuhfX@Sp6p!PM+Q^1IS>~`ObjkNlCG0cb2kjsv$K+&^Q z3+lrMun%Z%p9Yov4)*6xb~`C2_dLi}&#A_sK9oUJxeh~p-@6$;g!f<#DCWJ8FV<1m z)Oz-Mre1?lZ~#ORy_0HJ?b)b57eYSK983q>SLsjTaL6Z`^SR*nSN<)~`x+*CRrSla?5~3qkE`4bVFlCS9mhKjp8_@g2~7*26f6B03w+fi0jodiG|( zfe=LoV6+I#7_`6W9o`$FN+%2l!L86A+Cfw)!>}t{4L8FXp!KaJr5V_%Gtl@w!;Zg4 zyQAGQ-@j4hYarvccQXw=-TINe+=i1X#WNJ8+$x+#@vq9g3!Z|BP=!;?jx98n=zy*b zCJkG^r^vUWV7n7!ciKDxI)mP4zvz9|c_G(&tpBsqKJ*jl9AJxLPk=i38jc0O*!P@= ze3gfiUj}A>?|<<=QPw;zZdy0!T4X}t5;Uz9s;s^9CThcqA|~dXW(s^1{zb4 zoJwIW^tCF7k^TzWgVuDdkGY-#ou9OC$X@MgUDljwPc { -+ return { ... } -+ }) - -- // Example -- import { GraphQLServer } from 'graphql-yoga' - -- new GraphQLServer({ -- context(req) => { -- return { ... } -- } -- }) -``` - -#### Server - -The server migration is particularly dependent on your setup. Nexus bundles `express` and `express-graphql`. - -If you are not doing any or much custom server logic you can get away with not dealing with the server at all. Just delete all code, Nexus will handle it for you. - -```diff ---- app.ts -- import express from 'express' -- import { GraphQLServer } from 'graphql-yoga' - -- const server = new GraphQLServer({ schema: ... }) -- server.start() -``` - -If you do have server logic that needs porting, and it is express based, use `server.express`: - -```diff ---- app.ts -+ import { server } from 'nexus' - -+ server.express.use(...) -``` - -We currently do not support any other server than `express`. - -#### Developing & Building - -You should only be working with the `nexus` CLI. Below shows the example scripts you might have had previously, versus what you'll now have (suggested). - -```diff ----+++package.json - "scripts": { -- "start": "node dist/server", -- "clean": "rm -rf dist", -- "build": "npm -s run clean && npm -s run generate && tsc", -- "generate": "npm -s run generate:prisma && npm -s run generate:nexus", -- "generate:prisma": "prisma generate", -- "generate:nexus": "ts-node --transpile-only src/schema", -- "postinstall": "npm -s run generate", -- "dev": "ts-node-dev --no-notify --respawn --transpileOnly src/server", -+ "dev": "nexus dev", -+ "build": "nexus build", -+ "start": "node .nexus/build" - }, -``` - -#### Backing Types - -With Nexus Schema you manage backing types for your GraphQL objects centrally via `makeSchema`. Paths you give are to modules that export types. Type names that _match your GraphQL object type names_ are made their respective backing types. - -With Nexus Framework backing types are handled as follows: - -1. You export TypeScript types in any module -2. You configure your object type configs to use any of these exported TypeScript types. - -For more detail about backing types and how they work in Nexus Framework, see the [backing types section in the schema guide](/guides/schema#backing-types-in-nexus) - -**Example** - -_before_ - -```ts -// some-module.ts -export type A = { - /* ... */ -} -``` - -```ts -// schema.ts -export const A = objectType({ - name: 'A', - // ... -}) -``` - -```ts -// main.ts -// ... -const schema = makeSchema({ - typegenAutoConfig: [ - { - source: path.join(__dirname, 'some-module.ts'), - alias: 'SomeModule', - }, - ], - // ... -}) -// ... -``` - -_after_ - -```ts -import { schema } from 'nexus' - -export type A = { - /* ... */ -} - -schema.objectType({ - rootTyping: 'A', - // ... -}) -``` - -#### Nullability - -By default Nexus Schema has [outputs as guaranteed](https://nexus.js.org/docs/getting-started#nullability-default-values). Nexus Framework has outputs as nullable. - -- If you rely heavily on the Nexus Schema defaults then please wait for [#483](https://github.com/graphql-nexus/nexus/issues/483) so that you can turn them back on that way in the framework. -- If you use the following settings in your app currently then you can migrate seamlessly to Nexus framework, since this config is now the default: - - ```ts - makeSchema({ - nonNullDefaults: { - input: false, - output: false, - }, - }) - ``` - -#### Logging - -Nexus ships with its own logger. - -```diff -import { log } from 'nexus' - -- console.log('hello world! %j', { population: 6_000_000 }) -+ log.info('hello world!', { population: 6_000_000 }) -``` - -#### Prisma - -If you were a `nexus-prisma` user, you will now become a [`nexus-plugin-prisma`](https://github.com/graphql-nexus/plugin-prisma) user. Install the plugin, and enable it in your project. - -```diff ----+++package.json - dependencies: { -- "nexus-prisma": "...", -- "@prisma/client": "...", -- "@prisma/cli": "..." -+ "nexus-plugin-prisma": "...", -``` - -```diff ----+++app.ts -- import { nexusPrismaPlugin } from 'nexus-prisma' - -- makeSchema({ -- plugins: [nexusPrismaPlugin()], - -+ import { use } from 'nexus' -+ import { prisma } from 'nexus-plugin-prisma' - -+ use(prisma()) -``` - -For now you should still use the Prisma CLI as only `$ prisma generate` is taken care of for you. diff --git a/docs/getting-started/tutorial.md b/docs/getting-started/tutorial.md deleted file mode 100644 index 39fe89fae..000000000 --- a/docs/getting-started/tutorial.md +++ /dev/null @@ -1,227 +0,0 @@ -> For this tutorial we will use PostgreSQL as our database. Install PostgreSQL if needed and then get its connection URL. Check out [our postgresql setup guide](references/recipes?id=localql) if unsure. - -## Scaffold Project - -Kick off a new project. Say yes (`y`) to the prisma option. Choose `PostgreSQL` for the db option. - -```cli -npx nexus -``` - -## Change the Data Layer - -Our Hello World schema doesn't account for information about moons, lets change that. - -Start by updating our data layer to model information about moons. We don't want to go crazy scientific here but a bit of modelling will serve us well. A world may have more than one moon, and a moon may have properties in its own right. So lets give moons a first class model representation. Then, we can connect them to their respective worlds: - -```diff -+++ prisma/schema.prisma - model World { - id Int @id - name String @unique - population Float -+ moons Moon[] - } - -+ model Moon { -+ worldId Int @id @default(autoincrement()) -+ name String -+ world World @relation(fields: [worldId], references: [id]) -+ } -``` - -Nexus reacts to changes in your Prisma schema. By saving the above, you will see a prompt in dev mode about applying your database changes. - -``` - 0 ● nexus:plugin:nexus-plugin-prisma We detected a change in your Prisma Schema file. - 0 ● nexus:plugin:nexus-plugin-prisma If you're using Prisma Migrate, follow the step below: - 0 ● nexus:plugin:nexus-plugin-prisma 1. Run yarn -s prisma migrate save --experimental to create a migration file. - 0 ● nexus:plugin:nexus-plugin-prisma 2. Run yarn -s prisma migrate up --experimental to apply your migration. -? Press Y to restart once your migration is applied › (Y) -``` - -Once done, you can move on to updating your API layer. - -## Change the API Layer - -We have data about `Earth` from before, but now we need to update it with information about its moon. Instead of working with Prisma Client inside one-off scripts, lets enhance our API and make the update as if a client app were. - -We're going to need to expose the `moons` world field to clients - -```diff -+++ api/graphql.ts - schema.objectType({ - name: "World", - definition(t) { - t.model.worldId() - t.model.name() - t.model.population() -+ t.model.moons() - } - }) -``` - -Upon doing this however, we will see a warning in our dev mode logs: - -``` - Warning: Your GraphQL `World` object definition is projecting a field `moons` with `Moon` as output type, but `Moon` is not defined in your GraphQL Schema - Warning: in /Users/x/foobar/api/graphql.ts:10:13 - - 6 definition(t) { - 7 t.model.id(); - 8 t.model.name(); - 9 t.model.population(); - → 10 t.model.moons(); -``` - -The feedback is pretty clear already but to restate: The problem is that we're projecting a Prisma model field (`moons`) that is a connection to another Prisma model (`Moon`) that has not been projected on our API layer. So let's do that now: - -```diff -+++ api/graphql.ts -+schema.objectType({ -+ name:'Moon', -+ definition(t){ -+ t.model.id() -+ t.model.name() -+ t.model.world() -+ } -+}) -``` - -Do not copy-paste. Instead type this out yourself and take note how autocompletion within the `definition` block on `t.model` effectively guides you to success. - -Once you have projected `Moon` from your data layer to your API layer, you will see that the dev mode warning and TypeScript error are now resolved. 🙌 - -## Add Some CRUD - -If you go to your GraphQL Playground now you will see that your GraphQL schema now contains your Moon data shape too. But of course we still need to update `Earth` with data about _its_ moon. To achieve that we're going to expose CRUD actions that clients can use to update `Earth`. - -```diff -+++ api/graphql.ts -+schema.mutationType({ -+ definition(t){ -+ t.crud.updateOneWorld() -+ } -+}) -``` - -Again do not copy-paste. Type this out and see how it feels. Notice how auto-completion guides you from start to finish. - -If we go back to our schema in GraphQL Playground now, we'll see a significant number of additions to the schema, a result of the CRUD features we've just enabled. - -Now, let's give `Earth` its moon! - -```graphql -mutation addMoonToEarth { - updateOneWorld(where: { name: "Earth" }, data: { moons: { create: { name: "moon" } } }) { - name - moons { - name - } - } -} -``` - -You should see a result like: - -```json -{ - "data": { - "updateOneWorld": { - "name": "Earth", - "moons": [ - { - "name": "moon" - } - ] - } - } -} -``` - -## Deploy - -We will Deploy to Heroku. - -Before deploying let's change the playground server setting such that Playground will be enabled in production. - -

- -> We're doing this so we can easily try out our deployed app. Neither the GraphQL Playground UI nor the GraphQL API itself are secured. This is not intended to demonstrate a production-ready setup. - -```diff -+++ api/app.ts -+ import { settings, use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' - -use(prisma()) - -+settings.change({ -+ server: { -+ playground: true -+ } -+}) -``` - -Then, create an account at [Heroku](https://www.heroku.com/) (if you don't already have one) and [setup the CLI](https://devcenter.heroku.com/articles/heroku-cli). - -1. Create a new Heroku app - - ```cli - heroku create - ``` - -1. Add a postgres database to it - - ```cli - heroku addons:create heroku-postgresql - ``` - -1. Find the postgres database connection URL - - ```cli - heroku pg:credentials:url - ``` - - Copy it into `prisma/.env` to give Prisma access. - -1. Migrate the heroku postgres database - - ```cli - yarn prisma migrate up --experimental - ``` - - Or if using `npm`: - - ```cli - npx prisma migrate up --experimental - ``` - -1. Commit your changes to Git - - ```cli - git add . - git commit -m "updates for deployment to Heroku" - ``` - -1. Deploy your Nexus app - - ```cli - git push heroku master - ``` - -1. Open your hosted playground - - ```cli - heroku open - ``` - -1. Try running the mutation from above, but now against your heroku database. - -## Next Steps - -A good next step might be to read through some of the guides. - -Some good ones for new comers include the [`Concepts`](/guides/concepts) guide that gives an overview about how to think about Nexus, and the [`Schema`](/guides/schema) guide that goes through the ins and outs of building a GraphQL schema in Nexus. - -Happy coding! 🙌 diff --git a/docs/guides/authentication.md b/docs/guides/authentication.md deleted file mode 100644 index 802ac1f6a..000000000 --- a/docs/guides/authentication.md +++ /dev/null @@ -1 +0,0 @@ -## TODO diff --git a/docs/guides/authorization.md b/docs/guides/authorization.md deleted file mode 100644 index 802ac1f6a..000000000 --- a/docs/guides/authorization.md +++ /dev/null @@ -1 +0,0 @@ -## TODO diff --git a/docs/guides/cli.md b/docs/guides/cli.md deleted file mode 100644 index 08c527a86..000000000 --- a/docs/guides/cli.md +++ /dev/null @@ -1,51 +0,0 @@ -### Global vs Local - -If you prefer, you can install Nexus globally and then use the global CLI to work with local Nexus projects. This is safe because the global CLI will hands off execution to the locally installed version of Nexus. For example: - -

- -```cli -npm add --global nexus -``` - -```cli -yarn global add nexus -``` - -
- -```cli -cd my-project -``` - -```cli -nexus dev -``` - -This is just a convenience. It is equivalent to: - -
- -
- -```json -"scripts": { - "nexus:dev": "nexus dev" -} -``` - -```cli -npm run nexus:dev -``` - -
-
- -```cli -yarn nexus dev -``` - -
-
- -If you have not installed your project dependencies then the handoff will fail and tell you to do so. In other words a globally installed Nexus will never allow its version to be what is actually running your project. This protects you from unwittingly running a project with a different version of Nexus than you have installed in that project. diff --git a/docs/guides/concepts.md b/docs/guides/concepts.md deleted file mode 100644 index 9f4ae6355..000000000 --- a/docs/guides/concepts.md +++ /dev/null @@ -1,15 +0,0 @@ -## Work, Run, Test - -Nexus is a powerful tool built of multiple components that broadly fall into three categories: runtime, worktime, testtime. - -_worktime_ - -The worktime component is a command line interface (CLI). It abstracts away numerous details like how to setup TypeScript. You develop your app with zero configuration using `nexus dev`, and then when you are ready, build it for production using `nexus build`. Once built, you run it in production like any other vanilla Node app. - -_runtime_ - -There are a few runtime components. The one you'll deal with the most is the schema. It gives you powerful abstractions for implementing the GraphQL part of your API. Other runtime components include a JSON logger and HTTP server. It is possible to have a useful Nexus app that only ever touches the schema component, though most non-trivial apps will leverage all components. - -_testtime_ - -Nexus pushes the boundaries of static typing as far as it can, but recognizes an unsatisfactory limit will be reached. Thus it embraces testing and ships with testtime components that are designed to pick up where static types drop off. While testtime components are the least developed so far, we think they will be a huge part of the value proposition, bringing levels of safety typically associated with other [languages](https://www.idris-lang.org/) [and](https://www.haskell.org/) [tools](https://www.servant.dev/). diff --git a/docs/guides/configuration.md b/docs/guides/configuration.md deleted file mode 100644 index 802ac1f6a..000000000 --- a/docs/guides/configuration.md +++ /dev/null @@ -1 +0,0 @@ -## TODO diff --git a/docs/guides/databases.md b/docs/guides/databases.md deleted file mode 100644 index 802ac1f6a..000000000 --- a/docs/guides/databases.md +++ /dev/null @@ -1 +0,0 @@ -## TODO diff --git a/docs/guides/deployment.md b/docs/guides/deployment.md deleted file mode 100644 index 802ac1f6a..000000000 --- a/docs/guides/deployment.md +++ /dev/null @@ -1 +0,0 @@ -## TODO diff --git a/docs/guides/error-handling.md b/docs/guides/error-handling.md deleted file mode 100644 index 31c3ed0d7..000000000 --- a/docs/guides/error-handling.md +++ /dev/null @@ -1,3 +0,0 @@ -## Global - -Nexus provides last-resort error handling for your app. It handles both of Node's [`uncaughtException`](https://nodejs.org/api/process.html#process_event_uncaughtexception) and [`unhandledRejection`](https://nodejs.org/api/process.html#process_event_unhandledrejection) process events. The error will be logged and then your app process will be terminated with exit code 1. diff --git a/docs/guides/logger.md b/docs/guides/logger.md deleted file mode 100644 index ee4bab962..000000000 --- a/docs/guides/logger.md +++ /dev/null @@ -1,32 +0,0 @@ -[API Reference](/api/modules/main/exports/logger) ⌁ [issues](https://nxs.li/issues/component/logger) / [features](https://nxs.li/issues/components/logger/features) | [bugs](https://nxs.li/issues/component/logger/bugs) - -Use the logger to output structured information about runtime activity. - -Logging is one of the primary means for knowing what is going on at runtime, what data is flowing through, and how so. It is a classic workhorse of debugging and development time feedback. There are a wealth of specialized tools but a great logging strategy can take you far. Nexus gives you a logging system built for a modern cloud native environment. - -Your app should only output logs via Nexus Logger. This ensures that you maintain log level control and are always working with JSON. We work hard to make the logger so good that you'll to use it. - -All logs are sent to stdout (not stderr). Logs are formatted as JSON but there is a pretty mode designed for development. - -## Child Loggers - -```ts -log.addToContext({ user: 'Toto' }) - -const bar = log.child('bar').addToContext({ bar: 'bar' }) -const foo = log.child('foo').addToContext({ foo: 'foo' }) - -log.info('hello') -bar.info('bar') -foo.info('foo') - -// { "context": { "user": "Toto" }, path: ["app"], "event": "hello", ... } -// { "context": { "user": "Toto", "bar": "bar" }, path: ["app", "bar"], "event": "bar", ... } -// { "context": { "user": "Toto", "foo": "foo" }, path: ["app", "foo"], "event": "foo", ... } -``` - -You can create child loggers recursively starting from the root logger. A child logger extends their parent's component path and inherits their parent's context. Children can add context that is visible to themselves and their descendents. - -Child loggers are useful when you want to pass a logger to something that should be tracked as its own subsystem and/or may add context that you want isolated from the rest of the system. For example a classic use-case is the logger-instance-per-request pattern where a request-scoped logger is used for all logs in a request-response code path. This makes it much easier in production to group logs in your logging platform by request-response lifecycles. - -All runtime logs in your app (including from plugins come from either the `logger` itself or descendents thereof. This means if you wish absolutely every log being emitted by your app to contain some additional context you can do so simply by adding context to the root logger. diff --git a/docs/guides/plugins.md b/docs/guides/plugins.md deleted file mode 100644 index a40c90a03..000000000 --- a/docs/guides/plugins.md +++ /dev/null @@ -1,3 +0,0 @@ -[API Reference](/api/modules/main/exports/use) ⌁ [issues](https://nxs.li/issues/component/plugins) / [features](https://nxs.li/issues/components/plugins/features) | [bugs](https://nxs.li/issues/component/plugins/bugs) - -todo diff --git a/docs/guides/project-layout.md b/docs/guides/project-layout.md deleted file mode 100644 index 91c8c9f0e..000000000 --- a/docs/guides/project-layout.md +++ /dev/null @@ -1,107 +0,0 @@ -## Working With tsconfig.json - -- Nexus honours settings within `tsconfig.json`. -- This ensures that Nexus and your IDE perform identical static analysis. -- If no `tsconfig.json` is present in the project root then Nexus will scaffold one for you. This will make ([VSCode treat it as the project root too](https://vscode.readthedocs.io/en/latest/languages/typescript/#typescript-files-and-projects)). -- Nexus interacts with `tsconfig.json` in the following ways. - -##### Source Root - -- Source Root is the base from which your source code layout starts. So, all of your app code must live within the source root. Your JavaScript build output layout will mirror it. -- Source Root is defined by setting `compilerOptions.rootDir` and adding its value also to the `includes` array. For detail into why it works like this see [microsoft/TypeScript#9858](https://github.com/microsoft/TypeScript/issues/9858#issuecomment-533287263) and this [StackOverflow answer](https://stackoverflow.com/questions/57333825/can-you-pull-in-excludes-includes-options-in-typescript-compiler-api). -- If you do not specify it then Nexus will scaffold its value for you. It will default to being the same directory as where `tsconfig.json` resides. In other words, project root. This default mirrors `tsc` default behaviour. The `includes` array will be scaffolded as well. -- Nexus requires that the `includes` array does not contain modules outside the source root. This mirrors `tsc`. - -##### Out Root - -- Out Root is the place where the transpiled TypeScript (to JavaScript) modules will be emitted to. The folder structure mimics that of the source root. -- Out Root is defined by setting `compilerOptions.outDir`. -- If you do not specify it then Nexus will default to `.nexus/build`. Unlike with `rootDir` Nexus will not scaffold the default into your `tsconfig.json` because its presence has no impact upon VSCode. -- You can override its value interactively with `nexus build --out`. - -##### Check-Only Builds - -if `compilerOptions.noEmit` is set to `true` then Nexus will not output the build. This makes `nexus build` effectively a checker. This option usually [represents user error](https://github.com/graphql-nexus/nexus/issues/702) so by default Nexus will warn when this option is used. In the future ([#800](https://github.com/graphql-nexus/nexus/issues/800)) there will be ways to disable this the warning if it is really your intent. - -##### TypeScript Language Service Plugin - -Nexus ships with a TypeScript Language Service Plugin. It currently helps with improved autocomplete experience. In the future it will do more. Nexus will check that you are using it correctly in dev mode. You can see an example of its effect below. - -Autocomplete without Nexus TS LSP: - -![](https://user-images.githubusercontent.com/284476/82776800-1bbe0e00-9e1a-11ea-83a1-eb175b11a2ca.png) - -Autocomplete with Nexus TS LSP: - -![](https://user-images.githubusercontent.com/284476/82776802-1cef3b00-9e1a-11ea-88c3-065869407380.png) - -##### Conventions - -Nexus has some conventions about `tsconfig.json` settings designed to support your zero-config experience. - -###### Local Package Typings - -Sometimes you need to augment or provide outright types for some third party library. You can do this one of two ways. - -If you only have to write some minor typings for one or few packages then you can create a `/types.d.ts` file. - -If you have to write a lot of typings for multiple packages then you can create typing files with this pattern: - -``` -/types/ <-- A "types" folder instead of "types.d.ts" file - / <-- Name not technically significant, just for human readability, do what you want - index.d.ts <-- Typings -``` - -Nexus automatically configures `tsconfig.json` to correctly pick up both approaces. - -###### noEmit - -Nexus enforces that `compilerOptions.noEmit` is `true`. It handles this setting internally. If for some reason you want to run `tsc` you won't need to remember to pass the `--noEmit` flag. - -###### typeRoots - -Nexus enforces that your `compilerOptions.typeRoots` includes: - -- `"node_modules/@types"` –– TypeScript's default value for `typeRoots`. Used by [Definitely Typed](https://github.com/DefinitelyTyped/DefinitelyTyped) packages. Importantly where Nexus outputs its typegen to, so you _must_ have this value. -- `"types"` –– A convention provided by Nexus about where to store your local package typings. - -## Conventions - -Nexus imposes a few requirements about how you structure your codebase. - -### Project Root - -The project root is the directory from which all all Nexus CLI commands base their CWD upon. It is also the directory that configuration paths in Nexus (e.g. `--entrypoint` flag) are often relative to as well (in other cases it can be source root). - -To find the project root Nexus starts with the current working directory (CWD). This usually means the current directory you're in when invoking the Nexus CLI. From this location Nexus will do the following: - -1. If a directory in the current hierarchy, including CWD, contains a [valid](https://docs.npmjs.com/creating-a-package-json-file#required-name-and-version-fields) `package.json` then it will be considered the project root. In case multiple such files are present in the hierarchy, only the first one is considered (in other words the one closest to CWD). - -2. If no `package.json` files exist then the CWD itself is taken to be the project root. - -### Nexus module(s) - -##### Pattern - -A file importing `nexus`. eg: `import { schema } from 'nexus'` - -##### About - -Nexus looks for modules that import `nexus` and uses codegen to statically import them before the server starts. - -Beware if you have module-level side-effects coming from something else than Nexus, as these side-effects will always be run when your app starts. - -> \*Note: `require` is not supported. - -### Entrypoint - -##### Pattern - -A module, anywhere in your source directory, named `app.ts`. - -A custom entrypoint can also be configured using the `--entrypoint` or `-e` CLI option on `nexus build` and `nexus dev`. - -##### About - -This convention is optional if Nexus modules are present, required otherwise. diff --git a/docs/guides/schema.md b/docs/guides/schema.md deleted file mode 100644 index 5d1930c2d..000000000 --- a/docs/guides/schema.md +++ /dev/null @@ -1,835 +0,0 @@ -# Schema - -[API Reference](/api/modules/main/exports/schema) ⌁ [issues](https://nxs.li/issues/component/schema) / [features](https://nxs.li/issues/components/schema/features) | [bugs](https://nxs.li/issues/component/schema/bugs) - -This is the Nexus schema component guide. Here you will find concepts explained and a survey of how to use the API. If you are not familiar with Nexus this is a good document to read. If you are familiar, then the [Schema API Docs](/api/modules/main/exports/schema) may be of more use to you. - -## Introduction - -###### Importing - -You will use the schema component of Nexus to build your GraphQL schema. You can import it as a named export from the main module of the `nexus` package. If you prefer you can also import the default `app` export and then access the `schema` property. - - -```ts -import app from 'nexus' // default style -import { schema } from 'nexus' // named-export style - -app.schema === schema // true -``` - -

- -> Leverage [VSCode auto-import](https://code.visualstudio.com/docs/languages/typescript#_auto-imports). Anywhere in a TypeScript module in your project type either `app` to summon auto-import for the default style or `schema` for named-export style. - -###### Singleton & Mutation - -The schema component is part of the app singleton and usage of its methods affects the overall app state. While this is not a functionally pure approach it does allow you to use its methods throughout your project without having to think about exporting/importing values. One of Nexus' design goals is to approach the ease and readability of [GraphQL SDL](https://www.prisma.io/blog/graphql-sdl-schema-definition-language-6755bcb9ce51) where we can. This is one example of doing that. - -As an example, the following snippet shows the addition of an object type to the GraphQL schema. Notice how the return value is not used in any way. The method is actually mutating the app state. - -```ts -import { schema } from 'nexus' - -schema.objectType({ - name: 'Foo', - definition(t) { - t.string('bar', () => 'qux') - }, -}) -``` - -## GraphQL Type Builders - -We will now begin exploring the GraphQL schema building parts of the schema component. Having prior knowledge of GraphQL language itself will greatly help. If you are new to GraphQL you may want to read some of the resources listed below. - -- [graphql.org](https://graphql.org) -- [howtographql.com](https://www.howtographql.com) -- [Production Ready GraphQL](https://book.productionreadygraphql.com/) - -### Object Type - -[graphql.org Object Types](https://graphql.org/learn/schema/#object-types-and-fields) - -###### Basic Anatomy - - -```ts - schema.objectType({ -// The singleton instance of ---------^ | -// the Nexus schema component | -// | -// A type Builder method --------------------^ - name: 'Foo', -// The name of this type ----------------------^ - definition(t) { -// The type definition block -----------^ | -// Where fields are defined | -// | -// Object of Object Type Field --------------------^ -// Builder methods - t.field('bar', { -// A field builder method ------------------^ | -// The name of this field -------------------------^ - type: 'Bar', -// The type of this field -------------------------^ - resolve(parent, args, ctx, info) { -// The method called to return a -----------^ | | | | -// value for this field when queried | | | | -// | | | | -// The backing data model for Foo ------------------^ | | | -// | | | -// The client arguments to this field ----------------------^ | | -// | | -// Contextual data for this request ------------------------------^ | -// Shared across all resolvers | -// | -// Technical detail about this request --------------------------------^ -// E.g. client's query AST - -// Your logic to return a value ------------> ... -// for this field - }, - }) - - t.string('qux') -// A scalar-type convenience builder -------^ | -// | -// No resolver means Nexus returns the -------------^ -// `qux` property from the backing data model - - }, - }) -``` - -###### Scalar Fields - -
- -```ts -schema.objectType({ - name: 'Alpha', - definition(t) { - t.id('a') - t.string('b') - t.int('c') - t.float('d') - t.boolean('e') - }, -}) -``` - -```graphql -type Alpha { - a: ID! - b: String! - c: Int! - d: Float! - e: Boolean! -} -``` - -
- -###### Relational Fields - -
- -```ts -schema.objectType({ - name: 'Alpha', - definition(t) { - t.field('beta', { - type: 'Beta', - resolve() { - return { foo: 'bar' } - }, - }) - }, -}) -schema.objectType({ - name: 'Beta', - definition(t) { - t.string('foo') - }, -}) -``` - -```graphql -type Alpha { - beta: Beta! -} - -type Beta { - foo: String! -} -``` - -
- -###### Lists & Nullability - -
- -```ts -schema.objectType({ - name: 'Alpha', - definition(t) { - t.id('a', { nullable: true }) - t.list.id('b') - t.list.id('c', { nullable: true }) - t.list.id('c', { list: [false] }) - t.list.id('c', { list: [false], nullable: true }) - }, -}) -``` - -```graphql -type Alpha { - a: ID - b: [ID!]! - c: [ID!] - c: [ID]! - c: [ID] -} -``` - -
- -### Entrypoint Types - -### Enum Type - -Enum types are a scalar with a finite set of allowed values. They can be used as argument types and as field types. - -[graphql.org Enumeration Types docs](https://graphql.org/learn/schema/#enumeration-types) - -
- -```ts -schema.enum({ - name: 'Alpha', - members: ['Zeta', 'Yolo'], -}) -``` - -```graphql -enum Alpha { - Zeta - Yolo -} -``` - -
- -###### Example: As argument type & field type - -
- -```ts -schema.queryType({ - definition(t) { - t.field('anyAlpha', { - type: 'Alpha', - resolve(t) { - return Math.random() > 0.1 : 'Zeta' : 'Yolo' - } - }) - t.list.field('alphas', { - type: 'Alpha', - args: { - except: schema.arg({ - list: true, - type: "Alpha", - required: true, - }) - }, - resolve(_root, args) { - return ['Zeta', 'Yolo'].filter(alpha => { - return !args.except.includes(alpha) - }) - } - }) - } -}) -``` - -```graphql -type Query { - anyAlpha: Alpha! - alphas(except: [Alpha!]!): [Alpha!]! -} -``` - -
-
- -```graphql -query { - anyAlpha - alphas(except: ["Zeta"]) -} -``` - -```json -{ - "data": { - "anyAlpha": "Zeta", - "alphas": ["Yolo"] - } -} -``` - -
- -### Union Type - -### Interface Type - -### Field Arguments - -### Input Object Type - -### Lists - -### Descriptions - -### Deprecations - -## Data Modelling - -As the API author, there are three design tasks you will invariable perform over and over again: - -1. Create data types that model logical entities and concepts in your business domain. -2. Define connections between these data types that model how logical entities and concepts relate in your business domain. -3. Define entrypoints which allow traversal into this graph of data. - -This is an iterative process that can generally be seen as an finite loop wherein your team gradually refines and expands (or contracts!) the data graph as you respond to changing client app needs, business needs, and so on. Data modelling is hard work. For one thing it is a subtle art, occasionally underappreciated. There are typically multiple ways to model any one thing and competing tradeoffs that leave no obvious winner abound. If the process of data modelling itself or data modelling in GraphQL is new to you, you may find this book by [Marc-Andre Giroux](https://twitter.com/__xuorig__) helpful: [Production Ready GraphQL](https://book.productionreadygraphql.com/). - -## Nullability in Principal - -When creating an API, especially before going to production or lifting features out of beta, thinking about if arguments and input object fields (_inputs_) should be required and if object type fields (_outputs_) should be nullable is an important design consideration. How easy your API is to consume trades for how easy it is to change and some reliability characteristics. - -If inputs are optional or outputs are guaranteed then client developers will have a simpler API to deal with since making requests demands no up front configuration and handling responses presents no null cases. On the other hand, for the API developer, changing the API becomes harder since turning inputs from optional to required or making outputs go from guaranteed to nullable are breaking changes from the client's point of view. - -Also, as more outputs are guaranteed, the greater the potential of the "null blast radius" can be. This is the effect where, within a schema runtime, a `null` or error received from some data source where the schema states there shall be no `null` requires propagating the `null` up the data tree until a nullable type is found (or, at root, finally error). - -If you'd like to see these design considerations discussed further here are a few articles/resources you may find helpful: - -- 2019 [Nullability in GraphQL](https://medium.com/expedia-group-tech/nullability-in-graphql-b8d06fbd8a3c) by Grant Norwood -- 2018 [Using nullability in GraphQL](https://blog.apollographql.com/using-nullability-in-graphql-2254f84c4ed7) by Sashko Stubailo -- 2017 [When To Use GraphQL Non-Null Fields](https://medium.com/@calebmer/when-to-use-graphql-non-null-fields-4059337f6fc8) by Caleb Meredith -- [Nullability Best Practices](https://graphql.org/learn/best-practices/#nullability) on grpahql.org - -## Nullability in Nexus - -Nexus defaults to both inputs and outputs being nullable. This means by default your API is conservative in what it sends but flexible in what it accepts. With this approach, by default: - -- You're free to defer some hard thinking about output nullability, knowing you can always change your mind later without breaking clients. -- Client developers work more to processing API responses, having to handle null conditions. -- You're forced to frontload some hard thinking about inputs, since realizing something should have been required later will require breaking clients. -- Client developers work less to satisfy minimum query requirements. -- The "null blast radius" (refer to [Nullability in Principal](#nullability-in-principal)) is reduced to zero. - -There is no right or wrong answer to nullability. These are just defaults, not judgments. Understand the tradeoffs, and react to your use-case, above all. - -You can override the global defaults at the per-type level or per-field level. If you find yourself writing local overrides in a majority of cases then it might mean the global defaults are a bad fit for your API. In that case you can change the global defaults. - -When you make an input nullable then Nexus will alter its TypeScript type inside your resolver to have `null | undefined`. `null` is for the case that the client passed in an explicit `null` while `undefined` is for the case where the client simply did not specify the input at all. - -If an arg has been given a default value, then it will be used when the client passes nothing, but since clients can still pass explicit `null`, resolvers must still handle nullability. If this surprises you then you may be interested in [#485](https://github.com/graphql-nexus/nexus/issues/485). - -###### Example: Default Nullability Settings - -
- -```ts -schema.queryType({ - definition(t) { - t.string('echo', { - args: { - message: 'String', - }, - resolve(_root, args) { - return args.message ?? 'nil' - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String): String -} -``` - -
- -###### Example: Nullability Flipped at Global Level - -
- -```ts -settings.change({ - schema: { - nullable: { - outputs: false, - inputs: false, - }, - }, -}) - -schema.queryType({ - definition(t) { - t.string('echo', { - args: { - message: 'String', - }, - resolve(_root, args) { - return args.message - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String): String! -} -``` - -
- -###### Example: Nullability Flipped at Type Level - -
- -```ts -schema.queryType({ - nonNullDefaults: { - input: true, - output: true, - }, - definition(t) { - t.string('echo', { - args: { - message: 'String', - }, - resolve(_root, args) { - return args.message - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String): String! -} -``` - -
- -###### Example: Nullability Flipped at Input & Field Level - -
- -```ts -schema.queryType({ - definition(t) { - t.string('echo', { - args: { - message: schema.arg({ - type: 'String', - nullable: false, - }), - }, - nullable: false, - resolve(_root, args) { - return args.message - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String): String! -} -``` - -
- -###### Example: Mixing Levels - -It is possible to use type and input/field layers together. This provides flexibility to optimize for local sections of your API that have different characteristics. For example here, a type deviates from the global default for all but but one field and its input. - -
- -```ts -schema.queryType({ - // flip the global defaults - nonNullDefaults: { - input: true, - output: true, - }, - definition(t) { - // ... Everything in this type uses the type-level - // nullability config ... Except the following, - // which effectively reverts back to what the global - // defaults are: - t.string('echo', { - nullable: false, - args: { - message: schema.arg({ - type: 'String', - nullable: false, - }), - }, - resolve(_root, args) { - return args.message - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String!): String! -} -``` - -
- -###### Example: Args That Have Default Values - -When an arg has a default you might think that then it should be nullable to the client but non-nullable within your resolver logic. However it turns out that if the client passes an _explicit_ `null` then that is considered an actual value, and hence is not subject to being assigned the default value. Thus, and then, the resolver still can observe null from the client. If you are curious about seeing this change and/or become configurable then please refer to [#485](https://github.com/graphql-nexus/nexus/issues/485). - -
- -```ts -schema.queryType({ - definition(t) { - t.string('echo', { - args: { - message: schema.arg({ - type: 'String', - default: 'nil via default', - }), - }, - nullable: false, - resolve(_root, args) { - const fallback = 'nil via client null' - return args.message ?? fallback - }, - }) - }, -}) -``` - -```graphql -type Query { - echo(message: String = "nothing via default"): String! -}} -``` - -
-
- -```graphql -query { - echo1: echo - echo2: echo(message: null) -} -``` - -```json -{ - "data": { - "echo1": "nil via default", - "echo2": "nil via client null" - } -} -``` - -
- -## Backing Types in Principal - -As you begin to implement a schema for the first time you will notice something that may not have been obvious at first. The data that the client sees in the data graph is _not_ the same data flowing through the internal resolvers used to fulfill that graph. The client sees the API types but the API author deals with something else, _backing types_. - -Here is an example of resolution for a query as it would be seen roughly from a GraphQL type _only_ point of view. - -![](../assets/diagram-backing-types-1.png) - -When a field's type is an object, then the field's resolver returns a backing type. Concretely this might for example be a plain JavaScript object containing node/row/document data from a database call. This backing type data is in turn passed down to all the object type's own field resolvers. - -Here is the above diagram updated to include backing types now. - -![](../assets/diagram-backing-types-2.png) - -Here is a step-by-step breakdown of what is going on (follow the diagram annotation numbers): - -1. Client sends a query -2. The field resolver for `Query.user` runs. Remember `Query` fields (along with `Subscription`, `Mutation`) are _entrypoints_. -3. Within this resolver, the database client fetches a user from the database. The resolver returns this data. This data will now become **backing type** data... -4. Resolution continues since the type of `Query.user` field is an object, not a scalar. As such its own fields need resolving. The fields that get resolved are limited to those selected by the client, in this case: `fullName`, `age`, `comments`. Those three field resolvers run. Their `parent` argument is the user model data fetched in step 3. _This is the backing type data for the GraphQL `User` object_. - - ```ts - t.field('...', { - resolve(parent, args, ctx, info) { - // ^------------------------------- Here - }, - } - ``` - -5. The `comments` field is is an object type so just like with `Query.users` before, its own fields must be resolved. The `comments` resolver fetches comments data from the database. Like in step 3 this data becomes _backing type_ data. - -6. Much like the GraphQL `Comment` object field were resolved, so is `Comment`. Resolution runs once for every comment retrieved from the database in the previous step. The `text` field is scalar so resolution of that path can terminate there. But the `likers` field is typed to an object and so once again goes through the object-field resolution pattern. - -7. A request to the database for users who liked this comment is made. - -8. A repeat of step 4. But this time from a different edge in the graph. Before it was the entrypoint field `Query.user`. Now we're resolving from relation with `Comment`. Note how the backing type requirements of `User`, regardless of which part of the graph is pointing at it, remain the same. One other difference from step 4 is that, like in step 6, we are dealing with a list of data. That is, this resolution is run every user returned in step 7. - -Hopefully you can see how the GraphQL types seen by the client are distinct from the backing types flowing through the resolvers. Below, you can find a code sample of how the implementation of this schema might look like. - -
-See code implementation - -```ts -schema.query({ - definition(t) { - t.user({ - args: { - id: schema.arg({ type: 'ID', required: true }), - }, - resolve(_, { id }, { db }) { - return db.fetchUser({ where: { id } }) - }, - }) - }, -}) - -schema.object({ - name: 'User', - rootTyping: 'Prisma.User', - definition(t) { - t.string('fullName', { - resolve(user) { - return [user.firstName, user.middleName, user.lastName].join(', ') - }, - }) - t.int('age', { - resolve(user) { - return yearsSinceUnixTimestamp(user.birthDate) - }, - }) - t.list.field('comments', { - type: 'Comment', - resolve(user, _args, { db }) { - return db.comment.fetchMany({ where: { author: user.id } }) - }, - }) - }, -}) - -schema.object({ - name: 'Comment', - rootTyping: 'Prisma.Comment', - definition(t) { - t.string('title', { - resolve(comment) { - return comment.title - }, - }) - t.field('body', { - resolve(comment) { - return comment.body - }, - }) - t.field('post', { - type: 'Post', - resolve(comment, _args, { db }) { - return db.post.fetchOne({ where: { id: comment.postId } }) - }, - }) - t.field('author', { - type: 'User', - resolve(comment, _args, { db }) { - return db.user.fetchOne({ where: { id: comment.authorId } }) - }, - }) - }, -}) - -schema.object({ - name: 'Post', - rootTyping: 'Prisma.Post', - definition(t) { - t.string('title', { - resolve(post) { - return post.title - }, - }) - t.field('body', { - resolve(post) { - return post.body - }, - }) - t.list.field('comments', { - type: 'Comment', - resolve(post, _args, { db }) { - return db.comment.fetchMany({ where: { id: post.commentId } }) - }, - }) - }, -}) -``` - -
- -## Backing Types in Nexus - -###### Inferred Types - -When you first begin creating your schema, you may have objects without backing types setup. In these cases Nexus infers that the backing type is an exact match of the GraphQL type. Take this schema for example: - - -```ts -// Nexus infers the backing type of: -// -// { fullName: string, age: number } ---> | -// | -schema.object({ // | - name: 'User', // | - definition(t) { // | - t.string('fullName', { // | - resolve(user) { // | -// ^-------------------------- | - return user.fullName // | - }, // | - }) // | - t.int('age', { // | - resolve(user) { // | -// ^-------------------------- | - return user.age // | - }, // | - }) // | - }, // | -}) // | - // | -schema.queryType({ // | - definition(t) { // | - t.list.field('users', { // | - type: 'User', // | - resolve() { // | - return [/**/] // | -// ^----------------------- | - }, - }) - }, -}) -``` - -This may suffice well enough for some time, but most apps will eventually see their GraphQL and backing types diverge. Once this happens, you can tell Nexus about it using the `rootTyping` object type config property. - -###### rootTyping Property - -```ts -export interface MyDBUser { - // | ^-------------------- Create your backing type - // ^-------------------------------- Export your backing type (required) - firstName: string - lastName: string - birthDate: number -} - -schema.object({ - name: 'User', - rootTyping: 'MyDBUser', - // ^---------------------- Tell Nexus what the backing type is. - // Now, Nexus types... - definition(t) { - t.string('fullName', { - resolve(user) { - // ^----------------------- as: MyDBUser - return [user.firstName, user.lastName].join(', ') - }, - }) - t.int('age', { - resolve(user) { - // ^------------------------ as: MyDBUser - return yearsSinceUnixTimestamp(user.birthDate) - }, - }) - }, -}) - -schema.queryType({ - definition(t) { - t.list.field('users', { - type: 'User', - resolve(_root, args, ctx) { - // ^------- return as: MyDBUser[] - return ctx.db.user.getMany() - }, - }) - }, -}) -``` - -Nexus does not care about where `MyDBUser` is defined. So long as it is defined and exported from a module within your app, it will be available for use in any `rootTyping` property. - -The `rootTyping` property is statically typed as a union of all the valid possibile types your app makes available. Thus, your IDE will/should give you autocompletion here. - -###### Third-Party Types - -If you would like to use types from a third party package, you can just re-export them in your own app. Here's the above example re-visited using some third party typings: - -```ts -export type * as Spotify from 'spotify-api' -// ^------ Export your third-party type(s) -// Can be anywhere within your app - -schema.object({ - name: 'User', - rootTyping: 'Spotify.Foo', - // ^---------------------- Tell Nexus what the backing type is. - // Now, Nexus types... - definition(t) { - t.string('fullName', { - resolve(user) { - // ^----------------------- as: Spotify.Foo - return user.fullName - }, - }) - t.int('age', { - resolve(user) { - // ^------------------------ as: Spotify.Foo - return user.age - }, - }) - }, -}) - -schema.queryType({ - definition(t) { - t.list.field('users', { - type: 'User', - resolve(_root, args, ctx) { - // ^------- return as: Spotify.Foo[] - return ctx.db.user.getMany() - }, - }) - }, -}) -``` - -

- -> The backing type configuration is co-located with the GraphQL object because Nexus takes the view that a GraphQL object owns its backing type requirements and all nodes in the graph pointing to it must then satisfy those requirements in their own resolvers. We saw a bit of this in the Backing Types Concepts section before, where `User` object was related to by multiple nodes in the graph, and those various nodes passed the same kinds of backing types during resolution. diff --git a/docs/guides/server.md b/docs/guides/server.md deleted file mode 100644 index 25407c249..000000000 --- a/docs/guides/server.md +++ /dev/null @@ -1,27 +0,0 @@ -[API Reference](/api/modules/main/exports/server) ⌁ [issues](https://nxs.li/issues/component/server) / [features](https://nxs.li/issues/components/server/features) | [bugs](https://nxs.li/issues/component/server/bugs) - -## Serverless - -- Nexus has experimental support for serverless deployments. -- Support for serverless is being tracked in [#782](https://github.com/graphql-nexus/nexus/issues/782). -- Serverless features are not yet documented in the API docs. -- The server component of Nexus exposes HTTP request handlers. - - ```ts - import { server } from 'nexus' - - server.handlers.graphql // call with (req, res) - server.handlers.playground // call with (req, res) - ``` - -- Use these to handle to requests in your serverless environment. - - ```ts - import { server } from 'nexus' - - export default (req, res) => { - server.handlers.graphql(req, res) - } - ``` - -- See the [Next.JS example](https://github.com/graphql-nexus/examples/tree/master/with-nextjs) for a functioning serverless reference. diff --git a/docs/guides/testing.md b/docs/guides/testing.md deleted file mode 100644 index 8be5e6c4f..000000000 --- a/docs/guides/testing.md +++ /dev/null @@ -1,229 +0,0 @@ -Testing is a first-class concern of Nexus. So far we ship a few primitives to help you run integration tests, but you can expect integrated higher level testing features in the future. - -> Note: This guide is written using [`jest`](https://jestjs.io/) because it is what we use internally and thus can speak to best. But you should be able to use your test framework of choice. - -## Meet the Module - -Nexus comes with a special testing module that you can import from `nexus/testing`. Its primary utility is the `createTestContext` function. It is designed for running _integration_ tests. When run it will in turn boot your app (in the same process) and expose an interface for your tests to interact with it. - - - -> For the curious... -> Since `jest` runs test suites in parallel it means multiple instances of your `app` will be run in parallel too. The testing module takes care of abstracting the mechanics of making this work from you. For example it assigns random ports to each app to run its server and makes sure each test suite's app client is configured to be talking with its respective app instance. You should _never_ have to think about these kinds of details though, and if it turns out you do please open a GitHub issue so we can try to seal the leak you've found in Nexus' abstraction! - -##### A Little Helper {docsify-ignore} - -Before jumping into test suites we will wrap the `createTestContext` with a pattern that more tightly integrates it into `jest`. Nexus will probably ship something like as follows or better in the future, but for now you can copy this into your projects: - -```ts -// tests/__helpers.ts -import { createTestContext as originalCreateTestContext, TestContext } from 'nexus/testing' - -export function createTestContext(): TestContext { - let ctx = {} as TestContext - - beforeAll(async () => { - Object.assign(ctx, await originalCreateTestContext()) - await ctx.app.start() - }) - - afterAll(async () => { - await ctx.app.stop() - }) - - return ctx -} -``` - -We'll use this in other test suites roughly like so: - -```ts -// tests/foo.spec.ts -import { createTestContext } from './__helpers' - -const ctx = createTestContext() - -it('foo', () => { - // use `ctx` in here -}) -``` - -Removing boilerplate away from your test code is a win and staying DRY about it across multiple test suites helps. But do note that `ctx` is not usable outside of jest blocks (`it` `before` `after` `...`). If you try to you'll find it to be `undefined`. - -```ts -import { createTestContext } from './__helpers' - -const { app } = createTestContext() // Error! -``` - -## Test Context interface - -The Test context interface is extensible by plugins. By default it includes basic control over the app and a GraphQL client instance ready to send queries and mutations to it. - -## Without a database - -**Example** - -```ts -import { createTestContext } from './__helpers' - -const ctx = createTestContext() - -it('makes sure a user was registered', async () => { - // ctx.client.send sends requests to your locally running nexus server - const result = await ctx.client.send(` - mutation { - signupUser(data: { email: "person@email.com", password: "123456" }) - } { - id - email - password - } - `) - - const createdUsers = await ctx.client.send(`{ users { id } }`) - expect(createdUsers).toMatchSnapshot() -}) -``` - -## With a Database - -Integration testing with a database can add a lot of complexity to your test suite. But Nexus is in a good position to help since it knows about both test and database domains of your app. - -Integration between Nexus' test and database systems is young and still missing many features. Below we will cover some utilities and patterns that you can copy into your project meanwhile. - -> Note: This assumes you have [setup a PostgreSQL database running locally](references/recipes?id=localql). You could use any database supported by Prisma though. - -1. Install new development dependencies for upcoming test utilities. - - ```cli - npm add --save-dev nanoid pg jest-environment-node - ``` - -1. Create a specialized "jest environment" that will manage a real database for your tests to run against. - - ```ts - // nexus-test-environment.js - const { Client } = require('pg') - const NodeEnvironment = require('jest-environment-node') - const { nanoid } = require('nanoid') - const util = require('util') - const exec = util.promisify(require('child_process').exec) - - const prismaBinary = './node_modules/.bin/prisma' - - /** - * Custom test environment for nexus and Postgres - */ - class PrismaTestEnvironment extends NodeEnvironment { - constructor(config) { - super(config) - - // Generate a unique schema identifier for this test context - this.schema = `test_${nanoid()}` - - // Generate the pg connection string for the test schema - this.connectionString = `postgres://postgres:postgres@localhost:5432/testing?schema=${this.schema}` - } - - async setup() { - // Set the required environment variable to contain the connection string - // to our database test schema - process.env.POSTGRES_URL = this.connectionString - this.global.process.env.POSTGRES_URL = this.connectionString - - // Run the migrations to ensure our schema has the required structure - await exec(`${prismaBinary} migrate up --experimental`) - - return super.setup() - } - - async teardown() { - // Drop the schema after the tests have completed - const client = new Client({ - connectionString: this.connectionString, - }) - await client.connect() - await client.query(`DROP SCHEMA IF EXISTS "${this.schema}" CASCADE`) - await client.end() - } - } - - module.exports = PrismaTestEnvironment - ``` - -1. Update your jest config to use your new test environment. - - ```diff - +++ jest.config.ts - const { join } = require('path') - - module.exports = { - preset: 'ts-jest', - rootDir: 'tests', - + testEnvironment: join(__dirname, 'nexus-test-environment.js'), - } - ``` - -1. Edit your `schema.prisma` file to use an environment variable. - - ```diff - +++ schema.prisma - datasource db { - provider = "postgresql" - - url = "postresql://..." - + url = env("POSTGRES_URL") - } - ``` - -1. Create a `.env` file at the root of your project directory and add the following. - - ``` - POSTGRES_URL="" - ``` - -1. `nexus-plugin-prisma` augment `TestContext['app']` with a `db` property. This can be used for example to seed your database with data at the beginning of a test suite: - - ```ts - beforeAll(async () => { - await ctx.app.db.users.createOne({ ... }) - }) - ``` - -1. For now, just update the `createTestContext` wrapper to integrate your app's db client: - - ```diff - +++ nexus-test-environment.js - afterAll(async () => { - await ctx.app.server.stop() - + await ctx.app.db.client.disconnect() - }) - ``` - -1. That's it. Despite adding a database to your integration tests, they are essentially no more complex than without a databse, which is great. Of course they will run a bit slower now. - - We will cover seeding your test database with data in in the future iteration of this guide. - - ```ts - // tests/user.test.ts - - import { createTestContext } from './__helpers' - - const ctx = createTestContext() - - it('makes sure a user was registered', async () => { - // ctx.app.client.send sends requests to your locally running nexus server - const result = await ctx.client.send(` - mutation { - signupUser(data: { email: "person@email.com", password: "123456" }) - } { - id - email - password - } - `) - - const createdUsers = await ctx.client.send(`{ users { id } }`) - expect(createdUsers).toMatchSnapshot() - }) - ``` diff --git a/docs/guides/writing-plugins.md b/docs/guides/writing-plugins.md deleted file mode 100644 index 1b5419c73..000000000 --- a/docs/guides/writing-plugins.md +++ /dev/null @@ -1,225 +0,0 @@ -[issues](https://github.com/graphql-nexus/nexus/labels/scope%2Fplugins) – [features](https://github.com/graphql-nexus/nexus/issues?q=is%3Aopen+label%3Ascope%2Fplugins+label%3Atype%2Ffeat) ⬝ [bugs](https://github.com/graphql-nexus/nexus/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Ascope%2Fplugins+label%3Atype%2Fbug+) - -## Here Be Dragons - -- Writing plugins is an expressive and exciting part of Nexus -- But please note that it is one of the least stable components -- Not just in terms of lack of polish or unstable APIs but entire concepts and architecture -- The bar to a finished stable plugin system is high not just because plugin systems are in general challenging, but also because the thing which it permits extending is itself not stable either: the framework components exposed at the application layer -- If you are embarking on creating a plugin, please be aware you are in uncharted territory with no guarantees about API stability or even entire concepts/ways of extending Nexus -- If you are ok with that, we welcome you aboard this journey and hope you share your feedback with the team on GitHub and creations with the community on slack! - -## How it Looks - -- Nexus CLI has a command to create new Nexus-plugin projects - ```cli - nexus create plugin - ``` -- To write a plugin you create any of `testtime` `runtime` and `worktime` modules and import the respective plugin types to type your function. In each module export your plugin as `plugin`. - - ```ts - // runtime.ts - import { RuntimePlugin } from 'nexus/plugin' - - export const plugin: RuntimePlugin = () => (project) => { - /* ... */ - } - ``` - - ```ts - // testtime.ts - import { TesttimePlugin } from 'nexus/plugin' - - export const plugin: TesttimePlugin = () => (project) => { - /* ... */ - } - ``` - - ```ts - // worktime.ts - import { WorktimePlugin } from 'nexus/plugin' - - export const plugin: WorktimePlugin = () => (project) => { - /* ... */ - } - ``` - -- The `project` parameter gives you access to utils and core components - - ```ts - export const plugin: TesttimePlugin = () => (project) => { - project.utils.log.trace('hello') - } - ``` - -- With runtime plugins you can pass configuration to Nexus and contribute toward the graphql resolver context: - - ```ts - export const plugin: RuntimePlugin = () => project => { - return { - context: { - create: req => { - return { - token: req.headers.authorization.match(/^Bearer (.+)$/)?[1] ?? null - } - }, - typeGen: { - fields: { - token: 'null | string' - } - } - }, - schema: { - // ... - } - } - } - } - ``` - -- With worktime plugins you can hook onto various events grouped by subsystem: - - ```ts - export const plugin: WorktimePlugin = () => project => { - // Not all hooks shown here - project.hooks.build.onStart = async () => { ... } - project.hooks.create.onAfterBaseSetup = async () => { ... } - project.hooks.generate.onStart = async () => { ... } - project.hooks.dev.onStart = async () => { ... } - project.hooks.dev.onFileWatcherEvent = async () => { ... } - project.hooks.dev.addToSettings = { ... } - project.hooks.db.init.onStart = async () => { ... } - project.hooks.db.migrate.apply = async () => { ... } - project.hooks.db.plan.onStart = async () => { ... } - project.hooks.db.rollback.onStart = async () => { ... } - project.hooks.db.ui.onStart = async () => { ... } - } - ``` - -- Some worktime hooks give you contextual information to reflect upon: - - ```ts - export const plugin: WorktimePlugin = () => project => { - project.hooks.db.plan.onStart = async ctx => { - project.log.info(ctx.migrationName) - } - }) - ``` - -- Finally, for your plugin to be consumed by Nexus, you need to export an entrypoint which references your runtime or worktime or testtime plugin. - - **This entrypoint is what needs to be imported by users.** - - We recommend you named export the entrypoint after the suffix `nexus-plugin-(*)` of your npm package name. - - For instance, if your plugin is named `nexus-plugin-fancy-plugin`, your entrypoint should be named export `fancyPlugin` - - ```ts - import { PluginEntrypoint } from 'nexus/plugin' - - export const fancyPlugin: PluginEntrypoint = () => ({ - packageJsonPath: require.resolve('../package.json'), - runtime: { - module: require.resolve('./runtime'), - export: 'plugin', - }, - worktime: { - module: require.resolve('./worktime'), - export: 'plugin', - }, - testtime: { - module: require.resolve('./testtime'), - export: 'plugin', - }, - }) - ``` - -## Adding settings to your plugin - -- Create a `settings.ts` file and export a type `Settings` containing your settings - - ```ts - // settings.ts - export type Settings = { - myCustomOption?: boolean - } - ``` - -- Import the `Settings` type in your entrypoint, and pass it as generic to `PluginEntrypoint`. - - > Note: You must return the settings untouched in your entrypoint. - > The framework is then responsible for passing the settings to your runtime/worktime/testtime plugins . - - ```ts - //entrypoint.ts - import { PluginEntrypoint } from 'nexus/plugin' - import { Settings } from './settings' - - export const fancyPlugin: PluginEntrypoint = settings => ({ - settings, - ... - }) - ``` - -- Repeat the operation for your runtime/worktime/testtime plugins. - - ```ts - // runtime.ts - import { RuntimePlugin } from 'nexus/plugin' - import { Settings } from './settings' - - export const plugin: RuntimePlugin = (settings) => (project) => { - // ... - } - ``` - -- By default, settings will always be optional. - - **We strongly recommend you keep it that way and find defaults for each of your settings.** This is in order to keep the framework zero-config as much as possible. If you really need required settings though, you can enable them in the following way: - - ```ts - // entrypoint.ts - import { PluginEntrypoint } from 'nexus/plugin' - import { Settings } from './settings' - - export const fancyPlugin: PluginEntrypoint = (settings) => ({ - settings, - // ... - }) - - // runtime.ts - import { RuntimePlugin } from 'nexus/plugin' - import { Settings } from './settings' - - export const plugin: RuntimePlugin = (settings) => (project) => { - // ... - } - ``` - -## Wholistic - -- The breadth of Nexus' plugin system is uncommon -- Most tools are either runtime (Express) or workflow (ESLint) oriented and thus naturally scope their plugins to their focus -- the advantage of Nexus' approach where plugins can hook into both workflow and runtime is that they allow plugin authors to deliver rich wholistic experiences for their users -- For example a plugin author might reinforce their plugin's runtime feature with additions to doctor which lint for idiomatic usage -- No longer does a plugin need rely on a lengthy readme that probably isn't complete and probably isn't read by most users to guide users through correct configuration, etc. usage of their plugin -- Nexus is fanatic about giving as much latitude as possible to plugin authors to craft plugins that forward the principal of the pit of success to Nexus app developers - -## Runtime vs Worktime - -- runtime is for hooking into when your app is actually running -- so logic here can directly impact your production systems' reliability and performance characteristics -- worktime is for hooking into things like dev testing and building -- logic here is relatively free from concern over runtime impact, e.g. some slow running build-time extensions cannot impact latency experienced by end-users of the app in production. - -## Publishing for Consumption - -- You must name your plugin package `nexus-plugin-` -- Nexus plugin cli will rely on this convention to search install etc. plugins ([todo](https://github.com/graphql-nexus/nexus/issues/155)) -- Nexus relies on this pattern to auto-use plugins in a user's project - -## A Code Reference - -- The most sophisticated real-world Nexus plugin is `nexus-plugin-prisma`. -- It currently drives many of the requirements of the plugin system where we want nexus-prisma users to feel prisma is as seamless a component as any core one. -- If you like learning by reading code, check it out here: [graphql-nexus/plugin-prisma](https://github.com/graphql-nexus/plugin-prisma). diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 1fe5bab65..000000000 --- a/docs/index.html +++ /dev/null @@ -1,622 +0,0 @@ - - - - - Nexus - - - - - - - - -
- - - - - - - - - - - diff --git a/docs/meta/spec-sheet.md b/docs/meta/spec-sheet.md deleted file mode 100644 index 493d415d0..000000000 --- a/docs/meta/spec-sheet.md +++ /dev/null @@ -1,95 +0,0 @@ -### Lay of the Land - -- [nxs.li/docs](https://nxs.li/docs) -- [nxs.li/tweets](https://nxs.li/tweets) -- [nxs.li/issues](https://nxs.li/issues) -- [nxs.li/discussions](https://nxs.li/discussions) -- [nxs.li/changelog](https://nxs.li/changelog) ([canary](https://nxs.li/changelog/canary)) -- [nxs.li/contributing](https://nxs.li/contributing) - -### Repos & Packages - -
- -![Repos & Packages](https://dsc.cloud/661643/repos-and-packages.png) - -
- -### Features - -- Pervasive zero-config philosophy. -- You are free to use the API where and how you see fit. Few conventions on how to structure your app. -- GraphQL schema construction - - Define your schema in code, abstract repeated patterns. - - Integrated helpers for building Relay compliant pagination - - Define graphql types without export/import and configuration boilerplate. -- Type safety made simple - - Automatically fully typed GraphQL resolvers accounting for what you see in the `parent`, `args`, `ctx` arguments and what you're allowed to return. - - Automatically extracted types from return values in your `addToContext` invocations are merged into the Nexus resolver context type. - - Export any type in any module to make it available as a backing type for any object in your GraphQL schema. -- Integrated logger component built atop Pino - - Pretty mode for development - - JSON mode for production - - Automatic request-scoped child logger available on context object -- Integrated Testing - - Utils to boot a test app, integrated GraphQL client ready to make requests against it -- Sane defaults - - Top-level sync and async error handling, process exit -- Scaffolding - - Generate new app projects - - Generate new plugin projects -- Plugins - - build hooks - - dev hooks - - resolver middleware - - add type defs - - add field def builders - - add type def builders -- Generate GraphQL SDL from your schema, make pull-request reviews more collaborative. -- Integrated TypeScript - - No install needed - - Builtin dynamic tsconfig guide rails - - Nexus CLI honours your tsconfig -- Simple dependency management - - One dep - - Add prisma, only one dep more - - Nexus handles sound integration between all components - - Nexus handles minimal deployment size via integrated tree-shake step in build -- Decomposable, from framework to libs - - @nexus/schema - - @nexus/logger -- Enhanced IDE Experience via TypeScript Language Service Plugin - - Refined nexus lib autocomplete - -### Future Features - -- Integrated query complexity analysis -- Integrated Bundler - - Automatically tree shake your app into the minimum artifact size - - Automatically generate v8 snapshots for ultimate cold start times -- Integrated Server - - Platform adaptors providing fully typed request and response objects - - Seamless transition between serverful and serverless - - Pluggable -- Integrated Ops - - Deployment adaptors (Now, AWS Lambda, Google Functions) - - Adaptors for logging and APM (Elastic, Datadog, New Relic, ...) - - Alpine Docker images - - Pluggable -- ... - -### Limitations - -We plan to lift these limitations one day. - -- Lacks good Windows support [issues](https://github.com/graphql-nexus/nexus/labels/platform%2Fwindows) -- Does not work with JavaScript [#85](https://github.com/graphql-nexus/nexus/issues/85) -- Does not cover the entire GraphQL Spec - - Subscriptions [#447](https://github.com/graphql-nexus/nexus/issues/447) - - Interface Extensions [#713](https://github.com/graphql-nexus/nexus/issues/713) - -### Non-Goals - -We do not plan to lift these limitations. - -- Works with Node v9 and below diff --git a/docs/migration-guides/prisma-users.md b/docs/migration-guides/prisma-users.md deleted file mode 100644 index c9b1b7311..000000000 --- a/docs/migration-guides/prisma-users.md +++ /dev/null @@ -1,56 +0,0 @@ -# Hello Prisma user! - -Nexus is a feature rich GraphQL Framework. One of its hallmark features is how it helps you achieve a very high degree of type-safety as you implement your API. If you are a long-time Prisma user you can see it as a spiritual successor to the rich GraphQL experiences that Prisma 1 and even Graphcool offered. Nexus is still young, but growing fast. - -If you haven't already, you should read the [Welcome to Nexus](/README) introduction. - -## Vanilla Integration {docsify-ignore} - -As a Prisma user you can easily integrate Prisma into Nexus yourself, take a look: - -```ts -import { PrismaClient } from '@prisma/client' -import { schema } from 'nexus' - -const db = new PrismaClient() - -schema.addToContext(req => ({ db })) // exopse Prisma Client in all resolvers - -schema.queryType({ - definition(t) { - t.field('...', { - type: '...' - resolve(_, __, ctx) { - ctx.db // <- Prisma Client - } - }) - } -}) -``` - -Run `nexus dev` in one shell, and your usual `prisma` workflow in another. ✅ - -## Plugin! {docsify-ignore} - -This is fine, but there's something better. The Nexus Prisma _plugin_ (`nexus-plugin-prisma`). It levels up your experience, including: - -- Bundling the Prisma deps -- Running your Prisma generators -- Integrating your Prisma Client automatically, including into Nexus' test system -- Declarative APIs for projecting types from your Prisma schema onto your GraphQL Schema -- Declarative APIs for creating mutations and queries (including automatically implemented resolvers!) - -If you haven't already, you should read the [Welcome to Nexus Prisma](/plugins/prisma) introduction. - -## Learning Path {docsify-ignore} - -1. Read [Welcome to Nexus](/README) -2. Do [The Nexus Tutorial](/tutorial/introduction) -3. If using the Prisma plugin (you should!) read [Welcome to Nexus Prisma](/plugins/prisma) - -TL;DR - -``` -npm add nexus nexus-plugin-prisma -npm run nexus -``` diff --git a/docs/plugins/prisma.md b/docs/plugins/prisma.md deleted file mode 100644 index 98dbd8695..000000000 --- a/docs/plugins/prisma.md +++ /dev/null @@ -1,3203 +0,0 @@ -# Prisma - -[`issues`](https://github.com/graphql-nexus/nexus/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aplugin%2Fprisma) – [features](https://github.com/graphql-nexus/nexus/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aplugin%2Fprisma+label%3Atype%2Ffeat) ⬝ [bugs](https://github.com/graphql-nexus/nexus/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aplugin%2Fprisma+label%3Atype%2Fbug) - -Prisma is a next-generation developer-centric toolkit focused on making the data layer easy. This plugin gives you: - -1. **Workflow Integration** - Nexus `build` and `dev` workflows are enhanced to run your Prisma generators. - -1. **Runtime Integration** - Nexus schema component [GraphQL type builders](/guides/schema#graphql-type-builders) are augmented with `.model` and `.crud` methods. These make it easy for you to project your Prisma models and expose operations against them in your GraphQL API. Resolvers are dynamically created for you removing the need for traditional ORMs/query builders like TypeORM, Sequelize, or Knex. Out-of-box features include pagination, filtering, and ordering. And when you do need to drop down to custom resolvers a [`Prisma Client`](https://github.com/prisma/prisma-client-js) instance on `context` is ready to go. - -1. **Testtime Integration** - Nexus testing component is augmented with an instance of the [`Prisma Client`](https://github.com/prisma/prisma-client-js), to help you easily seed your database for your tests. - - - - - -## Installation - -**1. Install the plugin** - -```cli -npm add nexus-plugin-prisma -``` - -
- -> All Prisma deps are bundled, so do _not_ install e.g. `@prisma/cli` or `@prisma/client`. If you are wondering _why_ you can read through [Nexus' philosophy on dependency management](/architecture?id=dependency-philosophy). You can still find the the prisma CLI by running `npm run prisma` or `yarn prisma`. In an emergency you can still control the version of prisma deps with Yarn [`"resolutions"`](https://classic.yarnpkg.com/en/docs/selective-version-resolutions). - -**2. Enable the plugin** - -```ts -import { use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' - -use(prisma()) -``` - -## Getting started - -There are two ways you can start with the Prisma plugin. Either from scratch, or using an existing database. - -### From scratch - -**1. Create a `schema.prisma` file** - -```prisma -//schema.prisma - -generator prisma_client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - name String -} -``` - -**2. Add a datasource to your schema** - -We recommend you use Postgres but MySQL and SQLite are also supported. - -To add your datasource, simply copy/paste one of the block below at the top of your `schema.prisma` file - -> Note: You can also pass the database credentials via a `.env` file. [Read more about it here](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file#using-environment-variables) - -**Using Postgres** - -```prisma -//schema.prisma - -datasource db { - provider = "postgres" - url = "postgresql://USER:PASSWORD@localhost:5432/DATABASE" -} -``` - -**Using MySQL** - -```prisma -//schema.prisma - -datasource db { - provider = "mysql" - url = "mysql://USER:PASSWORD@localhost:3306/DATABASE" -} -``` - -**Using SQLite** - -```prisma -//schema.prisma - -datasource db { - provider = "sqlite" - url = "file:./dev.db" -} -``` - -**3. Create a migration file** - -```sh -npm run prisma migrate save --experimental -``` - -**4. Migrate your database** - -```sh -npm run prisma migrate up --experimental -``` - -**5. You're all set** - -You're ready to start working! - -### From an existing database - -When starting from an existing database, you should use [Prisma's introspection](https://www.prisma.io/docs/reference/tools-and-interfaces/introspection) feature. - -**1. Create a `schema.prisma` file** - -Create a `schema.prisma` file and add your database credentials in it so that Prisma can introspect your database schema. - -> Note: You can also pass the database credentials via a `.env` file. [Read more about it here](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-schema/prisma-schema-file#using-environment-variables) - -**Using Postgres** - -```prisma -//schema.prisma - -datasource db { - provider = "postgres" - url = "postgresql://USER:PASSWORD@localhost:5432/DATABASE" -} -``` - -**Using MySQL** - -```prisma -//schema.prisma - -datasource db { - provider = "mysql" - url = "mysql://USER:PASSWORD@localhost:3306/DATABASE" -} -``` - -**Using SQLite** - -```prisma -//schema.prisma - -datasource db { - provider = "sqlite" - url = "file:./dev.db" -} -``` - -**2. Introspect your database** - -``` -npm run prisma introspect -``` - -**3. Generate the Prisma Client** - -Add the following block at the top of your `schema.prisma` file: - -``` -generator prisma_client { - provider = "prisma-client-js" -} -``` - -The plugin will take care of generating the Prisma Client for you after that. - -**4. You're all set** - -You're ready to start working! - -## Example - -Given a [Prisma schema](https://github.com/prisma/prisma2/blob/master/docs/prisma-schema-file.md) (left), you will be able to project these Prisma models onto your API and expose operations against them (middle) resulting in the GraphQL Schema (right). - -> Note: `t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -
- -```prisma -generator prisma_client { - provider = "prisma-client-js" -} - -model User { - id String @id @default(cuid()) - email String @unique - birthDate DateTime -} - -model Post { - id String @id @default(cuid()) - author User[] -} - -``` - -```ts -import { schema } from 'nexus' - -schema.queryType({ - definition(t) { - t.crud.user() - t.crud.users({ - ordering: true, - }) - t.crud.post() - t.crud.posts({ - filtering: true, - }) - }, -}) - -schema.mutationType({ - definition(t) { - t.crud.createOneUser() - t.crud.createOnePost() - t.crud.deleteOneUser() - t.crud.deleteOnePost() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.email() - t.model.birthDate() - t.model.posts() - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.author() - }, -}) -``` - -```graphql -scalar DateTime - -input DateTimeFilter { - equals: DateTime - gt: DateTime - gte: DateTime - in: [DateTime!] - lt: DateTime - lte: DateTime - not: DateTime - notIn: [DateTime!] -} - -type Mutation { - createOnePost( - data: PostCreateInput! - ): Post! - createOneUser( - data: UserCreateInput! - ): User! - deleteOnePost( - where: PostWhereUniqueInput! - ): Post - deleteOneUser( - where: UserWhereUniqueInput! - ): User -} - -enum OrderByArg { - asc - desc -} - -type Post { - author( - after: String - before: String - first: Int - last: Int - ): [User!]! - id: ID! -} - -input PostCreateInput { - author: UserCreateManyWithoutAuthorInput - id: ID -} - -input PostCreateManyWithoutPostsInput { - connect: [PostWhereUniqueInput!] - create: [PostCreateWithoutAuthorInput!] -} - -input PostCreateWithoutAuthorInput { - id: ID -} - -input PostFilter { - every: PostWhereInput - none: PostWhereInput - some: PostWhereInput -} - -input PostWhereInput { - AND: [PostWhereInput!] - author: UserFilter - id: StringFilter - NOT: [PostWhereInput!] - OR: [PostWhereInput!] -} - -input PostWhereUniqueInput { - id: ID -} - -type Query { - post( - where: PostWhereUniqueInput! - ): Post - posts( - after: String - before: String - first: Int - last: Int - where: PostWhereInput - ): [Post!]! - user( - where: UserWhereUniqueInput! - ): User - users( - after: String - before: String - first: Int - last: Int - orderBy: UserOrderByInput - ): [User!]! -} - -input StringFilter { - contains: String - endsWith: String - equals: String - gt: String - gte: String - in: [String!] - lt: String - lte: String - not: String - notIn: [String!] - startsWith: String -} - -type User { - birthDate: DateTime! - email: String! - id: ID! - posts( - after: String - before: String - first: Int - last: Int - ): [Post!]! -} - -input UserCreateInput { - birthDate: DateTime! - email: String! - id: ID - posts: PostCreateManyWithoutPostsInput -} - -input UserCreateManyWithoutAuthorInput { - connect: [UserWhereUniqueInput!] - create: [UserCreateWithoutPostsInput!] -} - -input UserCreateWithoutPostsInput { - birthDate: DateTime! - email: String! - id: ID -} - -input UserFilter { - every: UserWhereInput - none: UserWhereInput - some: UserWhereInput -} - -input UserOrderByInput { - birthDate: OrderByArg - email: OrderByArg - id: OrderByArg -} - -input UserWhereInput { - AND: [UserWhereInput!] - birthDate: DateTimeFilter - email: StringFilter - id: StringFilter - NOT: [UserWhereInput!] - OR: [UserWhereInput!] - posts: PostFilter -} - -input UserWhereUniqueInput { - email: String - id: ID -} -``` - -
- -## Plugin settings - -You can _optionally_ pass some settings to the plugin. - -### Type definition - -```ts -export type PrismaClientOptions = { - /** - * Options to pass to the Prisma Client instantiated by the plugin. - * If you want to instantiate your own Prisma Client, use `instance` instead. - */ - options: ClientOptions -} - -export type PrismaClientInstance = { - /** - * Instance of your own Prisma Client. You can import it from 'nexus-plugin-prisma/client'. - * If you just want to pass some settings to the Prisma Client, use `options` instead. - */ - instance: PrismaClient -} - -export type Settings = { - /** - * Use this to pass some settings to the Prisma Client instantiated by the plugin or to pass your own Prisma Client - */ - client?: - | PrismaClientOptions - | PrismaClientInstance - /** - * Enable or disable migrations run by the plugin when editing your schema.prisma file - * - * @default true - */ - migrations?: boolean - /** - * Features that require opting into. These are all disabled by default. - */ - features?: { - /** - * Enable **experimental** CRUD capabilities. - * Add a `t.crud` method in your definition block to generate CRUD resolvers in your `Query` and `Mutation` GraphQL Object Type. - * - * @default false - */ - crud?: boolean - } -} -``` - -### Examples - -#### Configuring the Prisma Client - -```ts -import { use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' - -use( - prisma({ - client: { - options: { log: ['query'] }, - }, - }) -) -``` - -#### Using a custom instance of the Prisma Client - -```ts -import { use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' -import { PrismaClient } from 'nexus-plugin-prisma/client' - -use( - prisma({ - client: { - instance: new PrismaClient(), - }, - }) -) -``` - -## Recipes - -### Projecting Prisma Model Fields {docsify-ignore} - -Exposing one of your Prisma models in your GraphQL API - -```ts -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.title() - t.model.content() - }, -}) -``` - -### Simple Computed GraphQL Fields {docsify-ignore} - -You can add computed fields to a GraphQL object using the standard GraphQL Nexus API. - -```ts -schema.objectType({ - name: "Post", - definition(t) { - t.model.id() - t.model.title() - t.model.content() - t.string("uppercaseTitle", { - resolve({ title }, args, ctx) { - return title.toUpperCase(), - } - }) - }, -}) -``` - -### Complex Computed GraphQL Fields {docsify-ignore} - -If you need more complicated logic for your computed field (e.g. have access to some information from the database), you can use the `prisma` instance that's attached to the context and implement your resolver based on that. - -```ts -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.content() - t.string('anotherComputedField', { - async resolve(_parent, _args, ctx) { - const databaseInfo = await ctx.prisma.someModel.someOperation(...) - const result = doSomething(databaseInfo) - return result - } - }) - } -}) -``` - -### Project a Prisma Field to a Differently Named GraphQL Field {docsify-ignore} - -```ts -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.content({ - alias: 'body', - }) - }, -}) -``` - -### Publish Full-Featured Reads on a Prisma Model {docsify-ignore} - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -```ts -schema.queryType({ - definition(t) { - t.crud.post() - t.crud.posts({ - ordering: true, - filtering: true, - }) - }, -}) -``` - -### Publish Writes on a Prisma Model {docsify-ignore} - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -```ts -schema.mutationType({ - definition(t) { - t.crud.createPost() - t.crud.updatePost() - t.crud.updateManyPost() - t.crud.upsertPost() - t.crud.deletePost() - t.crud.deleteManyPost() - }, -}) -``` - -### Publish Customized Reads on a Prisma Model {docsify-ignore} - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -```ts -schema.queryType({ - definition(t) { - t.crud.posts({ - filtering: { - id: true, - title: true, - }, - ordering: { title: true }, - }) - }, -}) -``` - -### Publish Autogenerated Mutations with Computed Input Values {docsify-ignore} - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -```ts -schema.mutationType({ - definition(t) { - /* - Assuming our prisma model for User has a createdByBrowser field, - this removes it from the input type but ensures the value is - inferred from context and passed to Prisma Client. - */ - t.crud.createOneUser({ - computedInputs: { - createdByBrowser: ({ - args, - ctx, - info, - }) => ctx.session.browser, - }, - }) - }, -}) -``` - -### Globally Remove a Field from Input Types and Infer its Value {docsify-ignore} - -todo (this is not possible in the framework yet) - -```ts -nexusPrismaPlugin({ - ...other config... - /* - Remove fields named "user" from all input types. When resolving - a request whose data contains any of these types, the value is inferred - from context and passed to Prisma Client, even if it's nested. This is great for - creating data associated with one user's account. - */ - computedInputs: { - user: ({ args, ctx, info }) => ({ - connect: { - id: ctx.userId, - }, - }), - }, -}) -``` - -```ts -schema.mutationType({ - definition(t) { - t.crud.createOnePost() - }, -}) -``` - -Without computedInputs: - -```graphql -mutation createOnePost { - createOnePost( - data: { - title: "Automatically generate clean APIs!" - image: { - url: "https://example.com/images/prancing-unicorns" - user: { - connect: { id: 1 } - } - } - user: { connect: { id: 1 } } - } - ) -} -``` - -With computedInputs: - -```graphql -mutation createOnePost { - createOnePost( - data: { - title: "Automatically generate clean APIs!" - image: { - url: "https://example.com/images/prancing-unicorns" - } - } - ) -} -``` - -### Publish Model Writes Along Side Prisma Client-Resolved Fields {docsify-ignore} - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -```ts -schema.mutationType({ - definition(t) { - t.crud.createUser() - t.crud.updateUser() - t.crud.deleteUser() - t.crud.deletePost() - - t.field('createDraft', { - type: 'Post', - args: { - title: stringArg(), - content: stringArg({ - nullable: true, - }), - }, - resolve: ( - parent, - { title, content }, - ctx - ) => { - return ctx.prisma.posts.createPost( - { title, content } - ) - }, - }) - - t.field('publish', { - type: 'Post', - nullable: true, - args: { - id: idArg(), - }, - resolve( - parent, - { id }, - ctx - ) { - return ctx.prisma.posts.updatePost( - { - where: { id }, - data: { - published: true, - }, - } - ) - }, - }) - }, -}) -``` - -## Worktime Integration - -### `nexus dev` - -When running `nexus dev`, `nexus-plugin-prisma` will make sure your [`Prisma Client`](https://github.com/prisma/prisma-client-js) is up-to-date with your Prisma Schema by running your Prisma generators for you. - -Updates to your `schema.prisma` file will also be detected and will give you hints about the next steps to properly migrate your database. - -### `nexus build` - -When running `nexus build`, `nexus-plugin-prisma` will make sure your [`Prisma Client`](https://github.com/prisma/prisma-client-js) is up-to-date with your Prisma Schema, thus making sure your application is safely accessing your database. - -## Testtime Integration - -`nexus-plugin-prisma` augments the testing component of Nexus with an instance of the [`Prisma Client`](https://github.com/prisma/prisma-client-js), to help you easily seed your database for your tests. - -To learn more about its usage, [head to the Testing section](/guides/testing?id=with-a-database). - -## Runtime Integration - -### Access to the Prisma Client - -At runtime, `nexus-plugin-prisma` will add a `db` property containing an instance of the [`Prisma Client`](https://github.com/prisma/prisma-client-js) to your GraphQL resolvers context. - -##### Example - -```ts -import { schema } from 'nexus' - -schema.objectType({ - name: 'Query', - definition(t) { - t.list.field('users', { - type: 'User', - resolve(parent, args, ctx) { - return ctx.db.user.findMany() // <== `ctx.db` is your Prisma Client instance - }, - }) - }, -}) -``` - -### `t.model` - -Only available within [`schema.objectType`](/api/modules/main/exports/schema?id=objecttype) definitions. - -`t.model` contains configurable _field projectors_ that you use for projecting fields of your [Prisma models](https://github.com/prisma/prisma2/blob/master/docs/data-modeling.md#models) onto your [GraphQL Objects](https://graphql.github.io/graphql-spec/June2018/#sec-Objects). The precise behaviour of field projectors vary by the Prisma type being projected. Refer to the respective sub-sections for details. - -#### Model-Object Mapping - -`t.model` will either have field projectors for the Prisma model whose name matches that of the GraphQL `Object`, or if the GraphQL `Object` is of a name that does not match any of your Prisma models then `t.model` becomes a function allowing you to specify the mapping, after which the field projectors become available. - -##### Example - -
- -```prisma -model User { - id String @id @default(cuid()) -} -``` - -```ts -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - }, -}) - -schema.objectType({ - name: 'Person', - definition(t) { - t.model('User').id() - }, -}) -``` - -```graphql -type User { - id: ID! -} - -type Person { - id: ID! -} -``` - -
- -#### Enum - -_Auto-Projection_ - -When a Prisma enum field is projected, the corresponding enum type will be automatically projected too (added to the GraphQL schema). - -_Member Customization_ - -You can customize the projected enum members by defining the enum yourself in Nexus. `nexus-plugin-prisma` will treat the name collision as an intent to override and so disable auto-projection. - -_Option Notes_ - -Currently Prisma enums cannot be [aliased](#alias) ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/474)). They also cannot be [type mapped](#type) since enum types cannot be mapped yet ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/473)). - -##### Options - -n/a - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MEF: E # ! <-- if not ? or @default -} - -# if not defined by user -enum E { - EV -} -``` - -##### Example - -
- -```prisma -model User { - role Role - mood Mood -} - -enum Mood { - HAPPY - SAD - CONFUSED -} - -enum Role { - MEMBER - EDITOR - ADMIN -} -``` - -```ts -enumType({ - name: 'Role', - members: ['MEMBER', 'EDITOR'], -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.role() - t.model.mood() - }, -}) -``` - -```graphql -enum Mood { - HAPPY - SAD - CONFUSED -} - -enum Role { - MEMBER - EDITOR -} - -type User { - role: Role - mood: Mood -} -``` - -
- -#### Scalar - -_Scalar Mapping_ - -[Prisma scalars](https://github.com/prisma/prisma2/blob/master/docs/data-modeling.md#scalar-types) are mapped to [GraphQL scalars](https://graphql.org/learn/schema/#scalar-types) as follows: - -``` -Prisma GraphQL ------- ------- -Boolean <> Boolean -String <> String -Int <> Int -Float <> Float -cuid() <> ID -DateTime <> DateTime (custom scalar) -uuid() <> UUID (custom scalar) -``` - -_Auto-Projection_ - -When a Prisma scalar is encountered that does not map to the standard GraphQL scalar types, it will be automatically projected (custom scalar added to the GraphQL schema). Examples include `DateTime` and `UUID`. - -_Option Notes_ - -It is not possible to use [`type`](#type) because there is currently no way for a Prisma scalar to map to a differently named GraphQL scalar. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MSF: S # ! <-- if not ? or @default -} - -# if not matching a standard GQL scalar -scalar S -``` - -##### Options - -[`alias`](#alias) [`resolve`](#resolve) - -##### Example - -
- -```graphql -type Post { - id: Int! - email: String! - scheduledPublish: DateTime - rating: Float! - active: Boolean! -} - -scalar DateTime -``` - -```ts -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.email() - t.model.scheduledPublish() - t.model.rating() - t.model.active() - }, -}) -``` - -```prisma - -model User { - id String @id @default(cuid()) - email String - scheduledPublish DateTime? - rating Float - active Boolean -} -``` - -
- -#### Relation - -Projecting relational fields only affects the current GraphQL object being defined. That is, the model that the field relates to is not auto-projected. This is a design choice intended to keep the `nexus-plugin-prisma` system predictable for you. If you forget to project a relation you will receive feedback at build/boot time letting you know. - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MRF: RM # ! <-- if not ? -} -``` - -##### Example - -
- -```prisma -model User { - latestPost Post? -} - -model Post { - title String - body String -} -``` - -```ts -schema.objectType({ - name: 'User', - definition(t) { - t.model.latestPost() - }, -}) -``` - -```graphql -type User { - latestPost: Post -} -``` - -
- -#### List Enum - -Like [enums](#enum). It is not possible to order ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/466)) paginate ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/468)) or filter ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/467)) enum lists. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MLEF: [E!]! -} - -# if not defined by user -enum E { - EV -} -``` - -#### List Scalar - -Like [scalars](#scalar). It is not possible to order ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/470)) paginate ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/471)) or filter ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/469)) scalar lists. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MLSF: [S!]! -} -``` - -#### List Relation - -Like [relations](#relation) but also supports batch related options. - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) [`filtering`](#filtering) [`pagination`](#pagination) [`ordering`](#ordering) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type M { - MLRF: [RM!]! -} -``` - -### `t.crud` - -`t.crud` is an experimental feature. You must explicitly enable it [via the plugin options](#type-definition). - -Only available within GraphQL `Query` and `Mutation` definitions. - -`t.crud` contains configurable _operation publishers_ that you use for exposing create, read, update, and delete mutations against your projected Prisma models. - -There are 8 kinds of operations (reflecting a subset of [Prisma Client](https://github.com/prisma/prisma-client-js)'s capabilities). An _operation publisher_ is the combination of some operation kind and a particular Prisma model. Thus the number of operation publishers on `t.crud` is `Prisma model count × operation kind count`. So for example if you defined 20 Prisma models then you would see 160 operation publishers on `t.crud`. - -##### Example - -
- -```prisma -model User { - ... -} -``` - -```ts -schema.queryType({ - definition(t) { - t.crud.user() - t.crud.users() - }, -}) - -schema.mutationType({ - definition(t) { - t.crud.createOneUser() - t.crud.updateOneUser() - t.crud.upsertOneUser() - t.crud.deleteOneUser() - - t.crud.updateManyUser() - t.crud.deleteManyUser() - }, -}) -``` - -
- -#### Create - -``` -t.crud.createOne -``` - -Allow clients to create one record at at time of the respective Prisma model. - -Relation fields may be connected with an existing record or a sub-create may be inlined (generally referred to as _nested mutations_). If the relation is a `List` then multiple connections or sub-creates are permitted. - -Inlined creates are very similar to top-level ones but have the important difference that the sub-create has excluded the field where supplying its relation to the type of parent `Object` being created would _normally be_. This is because a sub-create forces its record to relate to the parent one. - -**Underlying Prisma Client Function** - -[`create`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#create) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - createOne_M(data: M_CreateInput): M! -} - -input M_CreateInput { - MSF: S # ! <-- if not ? or @default - MRF: RM_CreateManyWithout_M # ! <-- if not ? or @default -} - -input RM_CreateManyWithout_M { - connect: [RM_WhereUniqueInput!] - create: [RM_CreateWithout_M_Input!] -} - -input RM_WhereUniqueInput { - MRF@unique: S -} - -input RM_CreateWithout_M_Input = RM_CreateInput - RMRF: M -``` - -##### Example - -
- -```prisma -model User { - id Int @id @unique - email String @unique - posts Post[] -} - -model Post { - id Int @id - title String @unique - body String - author User -} -``` - -```ts -schema.mutationType({ - definition(t) { - t.crud.createOneUser() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.email() - t.model.posts() - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.title() - t.model.body() - t.model.author() - }, -}) -``` - -```graphql -type Mutation { - createOneUser( - data: UserCreateInput! - ): User! -} - -type Post { - author: User! - id: Int! - title: String! - body: String! -} - -input PostCreateManyWithoutPostsInput { - connect: [PostWhereUniqueInput!] - create: [PostCreateWithoutAuthorInput!] -} - -input PostCreateWithoutAuthorInput { - title: String! - body: String! -} - -input PostWhereUniqueInput { - id: Int - title: String -} - -type User { - email: String! - id: Int! - posts: [Post!]! -} - -input UserCreateInput { - email: String! - posts: PostCreateManyWithoutPostsInput -} -``` - -```graphql -mutation simple { - createOneUser( - data: { - email: "newton@prisma.io" - } - ) { - id - } -} - -mutation connectRelation { - createOneUser( - data: { - email: "newton@prisma.io" - posts: { connect: [1643] } - } - ) { - id - } -} - -mutation createRelation { - createOneUser( - data: { - email: "newton@prisma.io" - posts: { - create: [ - { - title: "..." - body: "..." - } - ] - } - } - ) { - id - posts { - title - } - } -} -``` - -
- -#### Read - -``` -t.crud. -``` - -Allow clients to find one particular record of the respective Prisma model. They may search by any Prisma model field that has been marked with `@unique` attribute. - -The ability for list fields to be [filtered](#filtering), [ordered](#ordering), or [paginated](#pagination) depends upon if those features have been enabled for those GraphQL objects via [`t.model.`](#list-relation). - -**Underlying Prisma Client Function** - -[`findOne`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#findone) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - M(where: M_WhereUniqueInput): M! -} - -input M_WhereUniqueInput { - MF: S # if @unique -} -``` - -##### Example - -
- -```prisma -model User { - id Int @id @unique - email String @unique -} -``` - -```ts -schema.queryType({ - definition(t) { - t.user() - }, -}) -``` - -```graphql -type Query { - user( - where: UserWhereUniqueInput! - ): User -} - -type User { - id: Int! - email: String! -} - -input UserWhereUniqueInput { - id: Int - email: String -} -``` - -```graphql -query simple { - user( - where: { - email: "newton@prisma.io" - } - ) { - id - } -} -``` - -
- -#### Update - -``` -t.crud.updateOne -``` - -Allow clients to update one particular record at a time of the respective Prisma model. - -**Underlying Prisma Client Function** - -[`update`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#update) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - updateOne_M(data: M_UpdateInput!, where: M_WhereUniqueInput!): M -} - -input M_WhereUniqueInput { - MF: S # if @unique -} - -input M_UpdateInput { - MSF: S - MRF: RM_UpdateManyWithout_M_Input -} - -input RM_UpdateManyWithout_M_Input { - connect: [RM_WhereUniqueInput!] - create: [RM_CreateWithout_M_Input!] - delete: [RM_WhereUniqueInput!] - deleteMany: [RM_ScalarWhereInput!] # see batch filtering reference - disconnect: [RM_WhereUniqueInput!] - set: [RM_WhereUniqueInput!] - update: [RM_UpdateWithWhereUniqueWithout_M_Input!] - updateMany: [RM_UpdateManyWithWhereNestedInput!] - upsert: [RM_UpsertWithWhereUniqueWithout_M_Input!] -} - -input RM_WhereUniqueInput {} # recurse pattern like M_WhereUniqueInput - -input RM_CreateWithout_M_Input {} # RM_CreateInput - RMRF: M - -input RM_UpdateWithWhereUniqueWithout_M_Input { - data: RM_UpdateWithout_M_DataInput! - where: RM_WhereUniqueInput! -} -input RM_UpdateWithout_M_DataInput { - RMSF: S -} - -input RM_UpdateManyWithWhereNestedInput { - data: RM_UpdateManyDataInput! - where: RM_ScalarWhereInput! # see batch filtering reference -} - -input RM_UpsertWithWhereUniqueWithout_M_Input { - create: RM_CreateWithout_M_Input! - update: RM_UpdateWithout_M_DataInput! - where: RM_WhereUniqueInput! -} -``` - -For `S_ScalarWhereInput` see [batch filtering](#batch-filtering) contributions. - -##### Example - -
- -```prisma -model User { - id Int @id @unique - email String @unique - posts Post[] -} - -model Post { - id Int @id - title String @unique - body String - author User -} -``` - -```ts -schema.mutationType({ - definition(t) { - t.crud.updateOneUser() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.email() - t.model.posts() - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.title() - t.model.author() - }, -}) -``` - -```graphql -input IntFilter { - equals: Int - gt: Int - gte: Int - in: [Int!] - lt: Int - lte: Int - not: Int - notIn: [Int!] -} - -type Mutation { - updateOneUser( - data: UserUpdateInput! - where: UserWhereUniqueInput! - ): User -} - -type Post { - author: User! - id: Int! - title: String! -} - -input PostCreateWithoutAuthorInput { - body: String! - title: String! -} - -input PostScalarWhereInput { - AND: [PostScalarWhereInput!] - body: StringFilter - id: IntFilter - NOT: [PostScalarWhereInput!] - OR: [PostScalarWhereInput!] - title: StringFilter -} - -input PostUpdateManyDataInput { - body: String - id: Int - title: String -} - -input PostUpdateManyWithoutAuthorInput { - connect: [PostWhereUniqueInput!] - create: [PostCreateWithoutAuthorInput!] - delete: [PostWhereUniqueInput!] - deleteMany: [PostScalarWhereInput!] - disconnect: [PostWhereUniqueInput!] - set: [PostWhereUniqueInput!] - update: [PostUpdateWithWhereUniqueWithoutAuthorInput!] - updateMany: [PostUpdateManyWithWhereNestedInput!] - upsert: [PostUpsertWithWhereUniqueWithoutAuthorInput!] -} - -input PostUpdateManyWithWhereNestedInput { - data: PostUpdateManyDataInput! - where: PostScalarWhereInput! -} - -input PostUpdateWithoutAuthorDataInput { - body: String - id: Int - title: String -} - -input PostUpdateWithWhereUniqueWithoutAuthorInput { - data: PostUpdateWithoutAuthorDataInput! - where: PostWhereUniqueInput! -} - -input PostUpsertWithWhereUniqueWithoutAuthorInput { - create: PostCreateWithoutAuthorInput! - update: PostUpdateWithoutAuthorDataInput! - where: PostWhereUniqueInput! -} - -input PostWhereUniqueInput { - id: Int - title: String -} - -type Query { - ok: Boolean! -} - -input StringFilter { - contains: String - endsWith: String - equals: String - gt: String - gte: String - in: [String!] - lt: String - lte: String - not: String - notIn: [String!] - startsWith: String -} - -type User { - email: String! - id: Int! - posts: [Post!]! -} - -input UserUpdateInput { - email: String - id: Int - posts: PostUpdateManyWithoutAuthorInput -} - -input UserWhereUniqueInput { - email: String - id: Int -} -``` - -```graphql -mutation simple { - updateOneUser( - where: { id: 1643 } - data: { - email: "locke@prisma.io" - } - ) { - id - email - } -} -``` - -
- -#### Upsert - -``` -t.crud.upsertOne -``` - -Allow clients to update or create (aka. insert) one particular record at a time of the respective Prisma model. This operation is a combination of [create](#create) and [update](#update). The generated GraphQL mutation matches `data` and `where` args to those of update, and `create` to that of `data` arg in create. Unlike update, upsert guarantees a return value. - -**Underlying Prisma Client Function** - -[`upsert`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#upsert) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - upsertOne_M( - create: M_CreateInput! # like createOne(data ...) - data: M_UpdateInput! # like updateOne(data ...) - where: M_WhereUniqueInput! # like updateOne(where ...) - ): M! -} -``` - -For `M_UpdateInput` and `M_WhereUniqueInput` see [update](#update) contributions. -For `M_CreateInput` see [create](#create) contributions. - -##### Example - -Refer to [update](#update) and [create](#create). - -#### Delete - -``` -t.crud.deleteOne -``` - -Allow clients to delete one particular record at a time of the respective Prisma model. - -**Underlying Prisma Client Function** - -[`delete`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#delete) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - deleteOne_M(where: M_WhereUniqueInput): M -} - -input M_WhereUniqueInput { - MF@unique: S -} -``` - -##### Example - -
- -```prisma -model User { - id Int @id @unique - email String @unique - posts Post[] -} - -model Post { - id Int @id - title String @unique - body String - author User -} -``` - -```ts -schema.mutationType({ - definition(t) { - t.crud.deleteOneUser() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.email() - t.model.posts() - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.title() - t.model.author() - }, -}) -``` - -```graphql -type Mutation { - deleteOneUser( - where: UserWhereUniqueInput! - ): User -} - -type Post { - author: User! - id: Int! - title: String! -} - -type User { - email: String! - id: Int! - posts: [Post!]! -} - -input UserWhereUniqueInput { - email: String - id: Int -} -``` - -```graphql -mutation simple { - deleteOneUser( - where: { id: 1643 } - ) { - id - email - posts { - id - title - } - } -} -``` - -
- -#### Batch Read - -``` -t.crud. -``` - -Allow clients to fetch multiple records at once of the respective Prisma model. - -**Underlying Prisma Client Function** - -[`findMany`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#findMany) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) [`filtering`](#filtering) [`pagination`](#pagination) [`ordering`](#ordering) [`computedInputs`](#computedInputs-local)([local](#computedInputs-local) and [global](#computedInputs-global)) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -type Query { - M_s: [M!]! -} -``` - -##### Example - -
- -```prisma -model User { - id Int @id @unique - email String @unique - posts Post[] -} - -model Post { - id Int @id - title String @unique - body String - author User -} -``` - -```ts -schema.queryType({ - definition(t) { - t.users() - }, -}) -``` - -```graphql -type Query { - users: [User!]! -} - -type Post { - author: User! - id: Int! - title: String! -} - -type User { - email: String! - id: ID! - posts: [Post!]! -} -``` - -
- -#### Batch Update - -``` -t.crud.updateMany -``` - -Allow clients to update multiple records of the respective Prisma model at once. Unlike [`update`](#update) nested relation-updating is not supported here. Clients get back a `BatchPayload` object letting them know the number of affected records, but not access to the fields of affected records. - -**Underlying Prisma Client Function** - -[`updateMany`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#updateMany) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - updateMany_M(where: M_WhereInput, data: M_UpdateManyMutationInput): BatchPayload! -} - -input M_UpdateManyMutationInput { - MSF: S - MEF: E - # not possible to batch update relations -} - -type BatchPayload { - count: Int! -} -``` - -For `M_WhereInput` see [batch filtering contributions](#batch-filtering). - -##### Example - -```graphql -mutation updateManyUser(where: {...}, data: { status: ACTIVE }) { - count -} -``` - -See [filtering option](#filtering) example. Differences are: operation semantics (update things); return type; `data` arg. - -#### Batch Delete - -``` -t.crud.deleteMany -``` - -Allow clients to delete multiple records of the respective Prisma model at once. Clients get back a `BatchPayload` object letting them know the number of affected records, but not access to the fields of affected records. - -**Underlying Prisma Client Function** - -[`deleteMany`](https://github.com/prisma/prisma2/blob/master/docs/prisma-client-js/api.md#deleteMany) - -##### Options - -[`type`](#type) [`alias`](#alias) [`resolve`](#resolve) - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -mutation { - deleteMany_M(where: M_WhereInput): BatchPayload! -} - -type BatchPayload { - count: Int! -} -``` - -For `M_WhereInput` see [filtering contribution](#batch-filtering). - -##### Example - -```graphql -mutation { - deleteManyUser(where: {...}) { - count - } -} -``` - -See [filtering option](#filtering) example. Differences are: operation semantics (delete things); return type. - -### Options - -#### `alias` - -``` -undefined | String -``` - -**Applies To** - -`t.crud.<*>` `t.model.<* - enum, list enum>` - -**About** - -- `undefined` (default) By default Prisma model fields project onto GraphQL object fields of the same name. -- `string` Change which GraphQL object field the Prisma model field projects onto. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -n/a - -##### Example - -
- -```prisma -model Post { - body String -} -``` - -```ts -schema.objectType({ - name: 'Post', - definition(t) { - t.model.body({ - alias: 'content', - }) - }, -}) -``` - -```graphql -type Post { - content: String! -} -``` - -
- -#### `type` - -``` -undefined | String -``` - -**Applies To** - -`t.crud.<*>` [`t.model.`](#relation-field) [`t.model.`](#list-field) - -**About** - -- `undefined` (default) Point Prisma field to a GraphQL object whose name matches that of the Prisma field model type. - -- `string` Point Prisma field to the given GraphQL object. This option can become necessary when you've have done [model-object mapping](#model-object-mapping) and other Prisma models in your schema have relations to the name-mapped Prisma model. We are interested in developing further the model-object mapping API to automate this better ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/461)). - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -n/a - -##### Example - -
- -```prisma -model User { - id String @id @default(cuid()) - posts Post[] -} - -model Post { - id String @id @default(cuid()) -} -``` - -```ts -schema.objectType({ - name: 'Article', - definition(t) { - t.model('Post').id() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.posts({ - alias: 'articles', - type: 'Article', - }) - }, -}) -``` - -```graphql -type Article { - title: String! -} - -type User { - articles: [Article] -} -``` - -
- -#### `resolve` - -```ts -undefined | (root: Root, args: Args, ctx: Context, info: GraphQLResolverInfo, originalResolve: (root: Root, args: Args, ctx: Context, info: GraphQLResolverInfo): T) => T -``` - -**Applies To** - -`t.crud.<*>` `t.model.<*>` - -**About** - -Enable the usage of a custom resolver on any resolver generated by the plugin via `t.crud` or `t.model`. -You can either entirely replace the generated resolver, or wrap it via the use of the `originalResolve` parameter. - -##### Example - -Adding custom business logic before and after a generated resolver - -```ts -queryType({ - definition(t) { - t.crud.posts({ - async resolve( - root, - args, - ctx, - info, - originalResolve - ) { - console.log( - 'logic before the resolver' - ) - const res = await originalResolve( - root, - args, - ctx, - info - ) - console.log( - 'logic after the resolver' - ) - return res - }, - }) - }, -}) -``` - -#### `ordering` - -``` -undefined | true | false | ModelWhitelist -``` - -**Applies To** - -[`t.crud.`](#batch-read) [`t.model.`](#list-relation) - -**About** - -Allow clients to order the records in a list field. Records can be ordered by their projected scalar fields in ascending or descending order. Ordering by fields on relations is not currently possible ([issue](https://github.com/prisma/prisma-client-js/issues/249)). - -- `undefined` (default) Like `false` -- `false` Disable ordering -- `true` Enable ordering by all scalar fields -- `ModelWhitelist` (`Record`) Enable ordering by just Model scalar fields appearing in the given whitelist. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -```graphql -# t.crud. -M(orderBy: M_OrderByInput) - -# t.model. -type M { - MF(orderBy: M_OrderByInput) -} - -input M_OrderByInput { - MSF: OrderByArg - # It is not possible to order by relations -} - -enum OrderByArg { - asc - desc -} -``` - -##### Example - -
- -```prisma -model User { - id Int @id - name String - posts Post[] -} - -model Post { - id Int @id - title String - body String -} -``` - -```ts -schema.objectType({ - name: 'Post', - definition(t) { - t.model.id() - t.model.title() - t.model.body() - }, -}) - -schema.objectType({ - name: 'User', - definition(t) { - t.model.id() - t.model.name() - t.model.posts({ - ordering: { title: true }, - }) - }, -}) - -schema.queryType({ - definition(t) { - t.crud.user() - t.crud.users({ - ordering: true, - }) - }, -}) -``` - -```graphql -type Query { - user( - where: UserWhereUniqueInput! - ): User - users( - orderBy: UserOrderByInput - ): [User!]! -} - -type Post { - body: String! - id: Int! - title: String! -} - -type User { - id: Int! - name: String! - posts( - orderBy: UserPostsOrderByInput - ): [Post!]! -} - -input UserOrderByInput { - id: OrderByArg - name: OrderByArg -} - -input UserPostsOrderByInput { - title: OrderByArg -} - -input UserWhereUniqueInput { - id: Int -} - -enum OrderByArg { - asc - desc -} -``` - -```graphql -query entrypointOrdering { - users(orderBy: { name: asc }) { - id - name - } -} - -query relationOrdering { - user(where: { id: 1643 }) { - posts( - orderBy: { title: dsc } - ) { - title - body - } - } -} -``` - -
- -#### `pagination` - -``` -undefined | true | false -``` - -**Applies To** - -[`t.crud.`](#batch-read) [`t.model.`](#list-relation) - -**About** - -- `undefined` (default) Like `true` -- `true` Enable pagination -- `false` Disable pagination - -##### GraphQL Schema Contributions - -```graphql -# t.crud. -Ms( - # The starting object for the list (typically ID or other unique value). - after: M_WhereUniqueInput - - # The last object for the list (typically ID or other unique value) - before: M_WhereUniqueInput - - # How many elements, forwards from `after` otherwise head - first: Int - - # How many elements, backwards from `before` otherwise tail - last: Int - - # The offset - # If `first` used, then forwards from `after` (otherwise head) - # If `last` used, then backwards from `before` (otherwise tail) -) - -# t.model. -type M { - MRF(after: M_WhereUniqueInput, before: M_WhereUniqueInput, first: Int, last: Int) -} - -input M_WhereUniqueInput { - MSF@unique: S -} -``` - -##### Example - -
- -```prisma -model User { - id Int @id - posts Post[] - // ... -} - -model Post { - id Int @id - // ... -} -``` - -```graphql -... -``` - -```ts -schema.objectType({ - name: 'User', - definition(t) { - t.model.posts({ - pagination: true, - }) - }, -}) - -schema.queryType({ - definition(t) { - t.crud.users({ - pagination: true, - }) - }, -}) -``` - -```graphql -query batchReadAfter { - users( - after: { id: 1234 } - first: 50 - ) { - id - name - } -} - -# or - -query batchReadSkip { - users(skip: 50, first: 50) { - id - name - } -} - -# or - -query batchReadRelation { - user(where: { id: 1643 }) { - posts(last: 10) { - title - body - } - } -} -``` - -
- -#### `filtering` - -``` -undefined | true | false | ModelWhitelist -``` - -**Applies To** - -[`t.crud.`](#batch-read) [`t.model.`](#list-relation) - -**About** - -- `undefined` (default) Like `false` -- `true` Enable filtering for all scalar fields -- `false` Disable filtering -- `ModelWhitelist` (`Record`) Enable ordering by just Model scalar fields appearing in the given whitelist. - -##### GraphQL Schema Contributions [`?`](#graphql-schema-contributions 'How to read this') - -See [batch filtering contributions](#batch-filtering) - -##### Example - -
- -```prisma -model User { - id String @id @unique @default(cuid()) - posts Post[] - age Int - status UserStatus -} - -model Post { - id String @id @unique @default(cuid()) - author User - comments Comment[] - rating Float -} - -model Comment { - id String @id @unique @default(cuid()) - author User - post Post - content String -} - -enum UserStatus { - BANNED - ACTIVE -} -``` - -```ts -schema.objectType({ - name: 'User', - definition(t) { - t.model.age() - }, -}) - -schema.objectType({ - name: 'Post', - definition(t) { - t.model.author() - t.model.rating() - t.model.comments() - }, -}) - -schema.objectType({ - name: 'Comment', - definition(t) { - t.model.author() - t.model.post() - }, -}) - -schema.queryType({ - definition(t) { - t.crud.users({ - filtering: true, - }) - t.crud.user() - }, -}) -``` - -```graphql -type Comment { - author: User! - post: Post! -} - -input CommentFilter { - every: CommentWhereInput - none: CommentWhereInput - some: CommentWhereInput -} - -input CommentWhereInput { - AND: [CommentWhereInput!] - author: UserWhereInput - content: StringFilter - id: StringFilter - NOT: [CommentWhereInput!] - OR: [CommentWhereInput!] - post: PostWhereInput -} - -input FloatFilter { - equals: Float - gt: Float - gte: Float - in: [Float!] - lt: Float - lte: Float - not: Float - notIn: [Float!] -} - -input IntFilter { - equals: Int - gt: Int - gte: Int - in: [Int!] - lt: Int - lte: Int - not: Int - notIn: [Int!] -} - -type Post { - author: User! - comments( - after: String - before: String - first: Int - last: Int - ): [Comment!]! - rating: Float! -} - -input PostFilter { - every: PostWhereInput - none: PostWhereInput - some: PostWhereInput -} - -input PostWhereInput { - AND: [PostWhereInput!] - author: UserWhereInput - comments: CommentFilter - id: StringFilter - NOT: [PostWhereInput!] - OR: [PostWhereInput!] - rating: FloatFilter -} - -type Query { - user( - where: UserWhereUniqueInput! - ): User - users( - after: String - before: String - first: Int - last: Int - where: UserWhereInput - ): [User!]! -} - -input StringFilter { - contains: String - endsWith: String - equals: String - gt: String - gte: String - in: [String!] - lt: String - lte: String - not: String - notIn: [String!] - startsWith: String -} - -type User { - age: Int! -} - -enum UserStatus { - ACTIVE - BANNED -} - -input UserWhereInput { - age: IntFilter - AND: [UserWhereInput!] - comments: CommentFilter - id: StringFilter - NOT: [UserWhereInput!] - OR: [UserWhereInput!] - posts: PostFilter - status: UserStatus -} - -input UserWhereUniqueInput { - id: ID -} -``` - -```graphql -query batchReadFilter { - users(where: { - OR: [ - { age: { gt: 30 } }, - posts: { - every: { - rating: { - lte: "0.5" - } - }, - none: { - comments: { - none: { - author: { - status: BANNED - } - } - } - } - } - ] - }) { - id - name - } -} - -query batchReadRelationFilter { - users { - posts(where: { rating: { gte: 0.9 }}) { - comments { - content - } - } - } -} -``` - -
- -#### `computedInputs` (local) - -``` -Record unknown> -``` - -Note: This is an abbreviated version of the ComputedInputs type. The most important thing to understand each of the object's values will be a function that takes an object with "args", "ctx", and "info" keys that represent the runtime values of the corresponding parameters that are passed to your resolver. For the full type, see [ComputedInputs Type Details](#computedinputs-type-details). - -**Applies To** - -[`t.crud.`](#t.crud) - -**About** - -Allow clients to omit fields from one mutation's corresponding input type and infer the value of those fields from the resolver's params (args, context, info) at runtime when determining what to pass to Prisma Client. - -- `ComputedInputs` (`Record unknown>`) [(full type here)](#computedinputs-type-details). - - Keys in the ComputedInputs object will be omitted from the mutation's corresponding input type. When resolving the mutation at runtime, each omitted key will be passed to Prisma Client based on the return value of that key's corresponding function in the ComputedInputs object when passed that resolver's parameters at runtime. - -##### GraphQL Schema Contributions - -The mutation's input type fields with a name that is in the ComputedInputs object are omitted from the GraphQL schema. This modifies one existing input type but does not add new types or remove existing types. - -##### Example - -
- -```prisma -model User { - id Int @id - name String - createdWithBrowser String -} -``` - -```ts -schema.queryType({ - definition(t: any) { - t.crud.user() - }, -}) -schema.mutationType({ - definition(t: any) { - t.crud.createOneUser({ - computedInputs: { - createdWithBrowser: ({ - args, - ctx, - info, - }) => ctx.browser, - }, - }) - }, -}) -schema.objectType({ - name: 'User', - definition: (t: any) => { - t.model.id() - t.model.name() - t.model.createdWithBrowser() - }, -}) -``` - -```graphql -type Mutation { - createOneUser( - data: UserCreateInput! - ): User! -} - -type Query { - user( - where: UserWhereUniqueInput! - ): User -} - -type User { - id: Int! - name: String! - createdWithBrowser: String! -} - -input UserCreateInput { - name: String! -} - -input UserWhereUniqueInput { - id: Int -} -``` - -```graphql -mutation createOneUser { - createOneUser({data: {name: "Benedict"}}) { - id - name - createdWithBrowser - } -} -``` - -
- -#### `computedInputs` (global) - -``` -Record any> -``` - -Note: This is an abbreviated version of the ComputedInputs type. The most important thing to understand each of the object's values will be a function that takes an object with "args", "ctx", and "info" keys that represent the runtime values of the corresponding parameters that are passed to your resolver. For the full type, see [ComputedInputs Type Details](#computedinputs-type-details). - -**Applies To** - -[`nexusPrismaPlugin()`](#Example) - -**About** - -Allow clients to omit fields with a given name across all of their GraphQL schema's inputs and infer the value of those fields from context when determining what to pass to Prisma Client - -- `ComputedInputs` (`Record any>`) [(full type here)](#computedinputs-type-details). - - Keys in the ComputedInputs object will be omitted from all input types. When resolving any mutation at runtime, that mutation's input type will be recursively searched for the omitted keys. Any time one of those keys would have appeared anywhere in the mutation's input type, a value will be passed to Prisma Client based on the return value of that key's corresponding function in the ComputedInputs object when passed the resolver's parameters at runtime. - -##### GraphQL Schema Contributions - -All input type fields with a name that is in the ComputedInputs object are omitted from the GraphQL schema. This modifies existing input types but does not add new types or remove existing types. - -##### Example - -
- -```prisma -model User { - id Int @id - name String - nested Nested[] - createdWithBrowser String -} - -model Nested { - id Int @id - name String - createdWithBrowser String -} -``` - -```ts -schema.queryType({ - definition(t: any) { - t.crud.user() - }, -}) -schema.mutationType({ - definition(t: any) { - t.crud.createOneUser() - t.crud.createOneNested() - }, -}) -schema.objectType({ - name: 'User', - definition: (t: any) => { - t.model.id() - t.model.name() - t.model.nested() - t.model.createdWithBrowser() - }, -}) -schema.objectType({ - name: 'Nested', - definition: (t: any) => { - t.model.id() - t.model.createdWithBrowser() - t.model.name() - }, -}) - -nexusPrismaPlugin({ - /* - Remove fields named "createdWithBrowser" from all mutation input types. When resolving - a request whose data contains any of these types, the value is inferred from the resolver's - params based on the function we defined below and passed to Prisma Client, even if it's nested. - This example assumes a Prisma Client context containing a "browser" key that maps to a string - representing the browser from which the request was made. - */ - computedInputs: { - createdWithBrowser: ({ - args, - ctx, - info, - }) => ctx.browser, - }, -}) -``` - -```graphql -type Mutation { - createOneUser( - data: UserCreateInput! - ): User! - createOneNested( - data: NestedCreateInput! - ): Nested! -} - -type Nested { - id: Int! - createdWithBrowser: String! - name: String! -} - -input NestedCreateInput { - name: String! - user: UserCreateOneWithoutUserInput -} - -input NestedCreateManyWithoutNestedInput { - create: [NestedCreateWithoutUserInput!] - connect: [NestedWhereUniqueInput!] -} - -input NestedCreateWithoutUserInput { - name: String! -} - -input NestedWhereUniqueInput { - id: Int -} - -type Query { - user( - where: UserWhereUniqueInput! - ): User -} - -type User { - id: Int! - name: String! - nested( - after: Int - before: Int - first: Int - last: Int - ): [Nested!]! - createdWithBrowser: String! -} - -input UserCreateInput { - name: String! - nested: NestedCreateManyWithoutNestedInput -} - -input UserCreateOneWithoutUserInput { - create: UserCreateWithoutNestedInput - connect: UserWhereUniqueInput -} - -input UserCreateWithoutNestedInput { - name: String! -} - -input UserWhereUniqueInput { - id: Int -} -``` - -```graphql -mutation createOneUser { - createOneUser({data: {name: "Benedict", nested: {name: "Moony"}}) { - id - name - createdWithBrowser - nested { - id - name - createdWithBrowser - } - } -} - -mutation createOneNested { - createOneNested({data: {name: "Moony", user: {connect: {where: {id: 1}}}}}) { - id - name - createdWithBrowser - } -} -``` - -
- -If `{user: {connect: {where: {id: 1}}}}` looks familiar, global computedInputs can also be used to determine the user making a request and automatically populate mutations affecting a single user accordingly. For example, assuming Prisma Client' context includes a "userId" key, adding a user key to global computedInputs can simplify the "createOneNested" mutation from the previous example: - -```ts -nexusPrismaPlugin({ - ...other config... - computedInputs: { - createdWithBrowser: ({ctx}) => ctx.browser, - user: ({ctx}) => ({ connect: { where: { id: ctx.userId } } }), - }, -}) -``` - -```graphql -mutation createOneNested { - createOneNested({data: {name: "Moony"}}) { - id - name - createdWithBrowser - } -} -``` - -#### `ComputedInputs` Type Details - -```ts -/** - * Represents arguments required by Prisma Client that will - * be derived from a request's input (root, args, and context) - * and omitted from the GraphQL API. The object itself maps the - * names of these args to a function that takes an object representing - * the request's input and returns the value to pass to the Prisma Client - * arg of the same name. - */ -export type LocalComputedInputs< - MethodName extends MutationMethodName -> = Record< - string, - ( - params: LocalMutationResolverParams< - MethodName - > - ) => unknown -> - -export type GlobalComputedInputs = Record< - string, - ( - params: GlobalMutationResolverParams - ) => unknown -> - -type BaseMutationResolverParams = { - info: GraphQLResolveInfo - ctx: Context -} - -export type GlobalMutationResolverParams = BaseMutationResolverParams & { - args: Record & { - data: unknown - } -} - -export type LocalMutationResolverParams< - MethodName extends MutationMethodName -> = BaseMutationResolverParams & { - args: core.GetGen< - 'argTypes' - >['Mutation'][MethodName] -} - -export type MutationMethodName = keyof core.GetGen< - 'argTypes' ->['Mutation'] - -export type Context = core.GetGen< - 'context' -> -``` - -### GraphQL Schema Contributions - -#### How to Read - -``` -M = model F = field L = list S = scalar R = relation E = enum V = value -``` - -#### Batch Filtering - -**Sources** - -```graphql -query { - # When filtering option is enabled - Ms(where: M_WhereInput, ...): [M!]! -} - -mutation { - updateMany_M(where: M_WhereInput, ...) BatchPayload! - deleteMany_M(where: M_WhereInput): BatchPayload! -} - -type M { - # When filtering option is enabled - MRF: RM(where: RM_WhereInput): [RM!]! -} - -# Nested InputObjects from t.crud.update - -# Nested InputObjects from t.crud.upsert -``` - -**Where** - -```graphql -input M_WhereInput { - AND: [M_WhereInput!] - NOT: [M_WhereInput!] - OR: [M_WhereInput!] - MSF: S_Filter - MRF: RM_Filter -} - -input RM_Filter { - every: RM_WhereInput # recurse -> M_WhereInput - none: RM_WhereInput # recurse -> M_WhereInput - some: RM_WhereInput # recurse -> M_WhereInput -} - -# This type shows up in the context of t.crud.update and t.crud.upsert - -input RM_ScalarWhereInput { - AND: [RM_ScalarWhereInput!] - NOT: [RM_ScalarWhereInput!] - OR: [RM_ScalarWhereInput!] - RMSF: S_Filter -} -``` - -**Scalar Filters** - -`ID` scalars use `StringFilter` ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/485)). We are considering a tailored `DateTime` filter ([issue](https://github.com/graphql-nexus/nexus-plugin-prisma/issues/484)). - -```graphql -input BooleanFilter { - equals: Boolean - not: Boolean -} - -input IntFilter { - equals: S - gt: S - gte: S - in: [S!] - lt: S - lte: S - not: S - notIn: [S!] -} - -input FloatFilter {} # like IntFilter - -input DateTimeFilter {} # like IntFilter - -input StringFilter { - contains: String - endsWith: String - equals: String - gt: String - gte: String - in: [String!] - lt: String - lte: String - not: String - notIn: [String!] - startsWith: String -} - -input UUIDFilter {} # like StringFilter -``` - -## System Behaviours - -### Null-Free Lists - -Projection for Prisma list types always project as a fully non-nullable GraphQL type. This is because Prisma list fields (and list member type) can themselves never be null, and because Prisma does not support `@default` on list types. - -For consistency we also apply the same pattern for `t.crud.`. - -
- -```Prisma -model User { - posts Post[] -} -``` - -```ts -schema.queryType({ - definition(t) { - t.crud.users() - }, -}) -schema.objectType({ - name: 'User', - definition(t) { - t.crud.posts() - }, -}) -``` - -```graphql -type Query { - users: [User!]! -} - -type User { - posts: [Post!]! -} -``` - -
diff --git a/docs/references/recipes.md b/docs/references/recipes.md deleted file mode 100644 index 46d863651..000000000 --- a/docs/references/recipes.md +++ /dev/null @@ -1,322 +0,0 @@ -## Use Prisma - -1. Install the prisma plugin - - ```cli - npm add nexus-plugin-prisma - ``` - -1. Enable the plugin - - ```ts - import { use } from 'nexus' - import { prisma } from 'nexus-plugin-prisma' - - use(prisma()) - ``` - -1. Add a `schema.prisma` file. Add a datasource. Here we're working with SQLite. Add Prisma Client. - - ```diff - +++ prisma/schema.prisma - + - + datasource db { - + provider = "sqlite" - + url = "file:dev.db" - + } - + - + generator prisma_client { - + provider = "prisma-client-js" - + } - ``` - -1. Initialize your database - - ```cli - yarn prisma migrate save --experimental && yarn prisma migrate up --experimental - ``` - -1. Now your app has the following - - 1. `t.model` and `t.crud` field builders e.g.: - - ```diff - +++ src/graphql.ts - objectType({ - name: 'User', - definition(t) { - - t.id('id) - - t.string('name') - + t.model.id() - + t.model.name() - }, - }) - ``` - - 2. An instance of the generated Prisma Client is a added to context under the `db` property, allowing e.g.: - - ```diff - +++ src/graphql.ts - queryType({ - definition(t) { - t.list.field('users', { - type: 'User', - - resolve() { - - return [{ id: '1643', name: 'newton' }] - + resolve(_root, _args, ctx) { - + return ctx.db.users.findMany() - }, - }) - }, - }) - ``` - - 3. The TypeScript types representing your Prisma models are registered as a Nexus data source. In short this enables proper typing of `parent` parameters in your resolves. They reflect the data of the correspondingly named Prisma model. - -## Create a Consumable Plugin - -1. Scaffold Your plugin project - - ```cli - npx nexus create plugin - ``` - -2. Publish it - - ```cli - yarn publish - ``` - -## Setting up PostgreSQL - -##### Hosted - -For trying things out in a deployed setting you can try Heroku's free postgres tier. Setting it up is simple: - -```bash -heroku create -heroku addons:create heroku-postgresql - -# Now get the connection URL -heroku pg:credentials:url -``` - -For a more complete explanation of this approach see [this blog post by Nikolas Burk](https://dev.to/prisma/how-to-setup-a-free-postgresql-database-on-heroku-1dc1) using the the Heroku UI. - -##### Local - -The recommended way to run postgres locally is with docker, because it is easy flexible and reliable. - -1. Start a postgres server for your app: - - ```cli - docker run --detach --publish 5432:5432 -e POSTGRES_PASSWORD=postgres --name 'postgres' postgres:10.12 - ``` - -2. Now you can use a connection URL like: - - ``` - postgresql://postgres:postgres@localhost:5432/myapp - ``` - -If you don't want to use a docker, here are some links to alternative approaches for macOS users: - -- [With Homebrew](https://wiki.postgresql.org/wiki/Homebrew) -- [With Postgres.app](https://postgresapp.com) - -## Go to production - -1. Add a build script - - ```diff - +++ package.json - + "build": "nexus build" - ``` - -2. Add a start script - - ```diff - +++ package.json - + "start": "node .nexus/build/api" - ``` - -3. In many cases this will be enough. Many deployment platforms will call into these scripts by default. You can customize where `build` outputs to if your deployment platform requires it. There are built in guides for `vercel` and `heroku` which will check your project is prepared for deployment to those respective platforms. Take advantage of them if applicable: - - ```diff - +++ package.json - + "build": "nexus build --deployment vercel" - ``` - - ```diff - +++ package.json - + "build": "nexus build --deployment heroku" - ``` - -## Prisma + Heroku + PostgreSQL - -1. Confirm the name of the environment variable that Heroku will inject into your app at runtime for the database connection URL. In a simple setup, with a single attached database, it is `DATABASE_URL`. -1. Update your Prisma Schema file to get the database connection URL from an environment variable of the same name as in step 1. Example: - - ```diff - --- prisma/schema.prisma - +++ prisma/schema.prisma - datasource postgresql { - provider = "postgresql" - - url = "postgresql://:@localhost:5432/" - + url = env("DATABASE_URL") - } - ``` - -1. Update your local development environment to pass the local development database connection URL via an environment variable of the same name as in step 1. Example with [direnv](https://direnv.net/): - - 1. Install `direnv` - - ```cli - brew install direnv - ``` - - 1. Hook `direnv` into your shell ([instructions](https://direnv.net/docs/hook.html)) - 1. Setup an `.envrc` file inside your project - - ```diff - +++ .envrc - + DATABASE_URL="postgresql://postgres:postgres@localhost:5432/myapp" - ``` - - 1. Approve the `.envrc` file (one time, every time the envrc file changes). - ```cli - direnv allow . - ``` - 1. Done. Now when you work within your project with a shell, all your commands will be run with access to the environment variables defined in your `.envrc` file. The magic of `direnv` is that these environment variables are automatically exported to and removed from your environment based on you being within your project directory or not. - -## Integrate `createTestContext` with `jest` - -1. Wrap `createTestContext` so that it is integrated with the `jest` test suite lifecycle hooks: - - ```ts - // tests/__helpers.ts - import { createTestContext, TestContext } from 'nexus/testing' - - export function createTestContext(): TestContext { - let ctx: TestContext - - beforeAll(async () => { - Object.assign(ctx, await createTestContext()) - await ctx.app.start() - }) - - afterAll(async () => { - await ctx.app.stop() - }) - - return ctx - } - ``` - -1. Import your wrapped version into all test suites needing it: - - ```ts - // tests/foo.spec.ts - import { createTestContext } from './__helpers' - - const ctx = createTestContext() - - it('foo', () => { - // use `ctx` in here - }) - ``` - - Note that `ctx` is not usable outside of `jest` blocks (`it` `before` `after` `...`). If you try to you'll find it to be `undefined`. - - ```ts - import { createTestContext } from './__helpers' - - const { app } = createTestContext() // Error! - ``` - -## Debugging - -### With VS Code - -We made it very simple to debug your app with VS Code. - -> Note: If you used `npx nexus` to initialize your project, jump straight to step 2. - -1. Create a `.vscode/launch.json` file and paste the following content - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Debug Nexus App", - "protocol": "inspector", - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/nexus", - "runtimeArgs": ["dev"], - "sourceMaps": true, - "console": "integratedTerminal" - } - ] -} -``` - -2. Click on the `Run` tab on the left side of VS Code - -3. Make sure `Debug Nexus App` is selected in the dropdown located at the top of the panel that the `Run` tab opened - -4. Set some breaking points where you want to inspect your code - -5. Click the green "Start debugging" button located next to the dropdown - -6. That's it. VS Code should run your code and stop wherever your set some breakpoints - -## Use with Next.js - -Find working examples [here](https://github.com/graphql-nexus/examples#nextjs). - -### Steps - -1. Your Next.js project must be [a TypeScript](https://nextjs.org/docs/basic-features/typescript), not JavaScript, one -1. Install `nexus` -1. Create _one_ GraphQL endpoint, e.g. `/pages/api/graphql.ts` -1. The minimum boilerplate needed in your GraphQL endpoint is: - - ```ts - // /pages/api/graphql.ts - - if (process.env.NODE_ENV === 'development') require('nexus').default.reset() - - const app = require('nexus').default - - // Require your nexus modules here. - // Do not write them inline, since the Nexus API is typed `any` because of `require` import. - // require('...') - - app.assemble() - - export default app.server.handlers.graphql - ``` - -1. While developing, you should run Nexus reflection a separate terminal apart from your normal `next dev`. This is in order to benefit from the type safety that Nexus can give you. One of its primary benefits. For example: - - ```json - "nexus:reflection": "nexus dev --reflection --entrypoint pages/api/graphql.ts", - ``` - -1. With `compilerOptions.noEmit` set to `true` in your tsconfig (forced by Next.js), treat `nexus build` as a check step in your ci process. - -### Notes - -- Overall, here are the limitations with Next.js integration that you will not find in a "normal" Nexus project. - - 1. You must use CommonJS `require` as opposed to ES module `import` syntax for your Nexus api module. This is to preserve import order. - 1. You must run `app.assemble()` before accessing the server handlers. - 1. In development, you must run `app.reset()` in your Nexus api module, before anything else. - 1. Make sure that you only have one Nexus api module, or else you may experience difficulties in development. - 1. Make sure that your Nexus modules (ones using the `nexus` package) are only part of the import graph of your Nexus api module. - 1. If you would like to use GraphQL Playground, do not rely on the one packaged with Nexus. Instead you can use an external one like [this standalone electron one](https://www.electronjs.org/apps/graphql-playground). - 1. You will not be able to use the Nexus testing component - -- Integration with Next.js should improve [once it supports plugins](https://github.com/zeit/next.js/issues/9133). For example you will probably not need to think about `app.assemble()` and `app.reset()` anymore and be able to use ES module syntax in your Nexus api module. diff --git a/docs/tutorial/_sidebar.md b/docs/tutorial/_sidebar.md deleted file mode 100644 index d3fd0e0c9..000000000 --- a/docs/tutorial/_sidebar.md +++ /dev/null @@ -1,89 +0,0 @@ -- Getting Started - -- [Welcome To Nexus](README) -- [Tutorial]() - - [0. Introduction](tutorial/introduction) - - [1. Setup & First Query](tutorial/chapter-1-setup-and-first-query) - - [2. Writing Your First Schema](tutorial/chapter-2-writing-your-first-schema) - - [3. Adding Mutations to Your API](tutorial/chapter-3-adding-mutations-to-your-api) - - [4. Testing your API](tutorial/chapter-4-testing-your-api) - - [5. Persisting Data (via Prisma)](tutorial/chapter-5-persisting-data-via-prisma) - - [6. Testing With Prisma](tutorial/chapter-6-testing-with-prisma) - - [7. Authentication](tutorial/chapter-7-authentication) -- [Migrate from Nexus Schema](getting-started/migrate-from-nexus-schema) - -- Migration Guides - -- [Prisma Users](migration-guides/prisma-users) -- [Nexus Schema Users](getting-started/migrate-from-nexus-schema) - -- Guides - -- [Concepts](guides/concepts) -- [Schema](guides/schema) -- [Server](guides/server) -- [Logger](guides/logger) -- [Testing](guides/testing) -- [Project Layout](guides/project-layout) -- [Error Handling](guides/error-handling) -- [Plugins](guides/plugins) -- [Recipes](references/recipes) -- [Writing Plugins](guides/writing-plugins) -- [CLI](guides/cli) - -- Plugins - -- [`prisma`](plugins/prisma) -- [`jwt-auth`](https://github.com/Camji55/nexus-plugin-jwt-auth) -- [`shield`](https://github.com/lvauvillier/nexus-plugin-shield) - -* API - -* [`nexus`](api/modules/main) - - - [`schema`](api/modules/main/exports/schema) - - [`log`](api/modules/main/exports/logger) - - [`server`](api/modules/main/exports/server) - - [`settings`](api/modules/main/exports/settings) - - [`use`](api/modules/main/exports/use) - -- [`nexus/testing`](api/modules/testing) - -- [`nexus/plugin`](api/modules/plugin) - -- Meta - -- [Roadmap ⤤](https://github.com/orgs/graphql-nexus/projects/1) -- [Changelog](changelog) -- [Spec Sheet](meta/spec-sheet) -- [Architecture](architecture) - -* Components Standalone - -* [`@nexus/schema`](components/schema/about) - - - [API](components/schema/api/index.md) - - [objectType](components/schema/api/copy/api-objectType) - - [unionType](components/schema/api/copy/api-unionType) - - [scalarType](components/schema/api/copy/api-scalarType) - - [interfaceType](components/schema/api/copy/api-interfaceType) - - [inputObjectType](components/schema/api/copy/api-inputObjectType) - - [enumType](components/schema/api/copy/api-enumType) - - [args: arg / \*Arg](components/schema/api/copy/api-args) - - [makeSchema](components/schema/api/copy/api-makeSchema) - - [extendType](components/schema/api/copy/api-extendType) - - [mutationField](components/schema/api/copy/api-mutationField) - - [queryField](components/schema/api/copy/api-queryField) - - [Plugins](components/schema/api/copy/api-plugins) - - [SDL Converter ⤤](https://nexus.js.org/converter) - - [Plugins](components/schema/plugins) - - [Connection](components/schema/plugins/connection) - - [Query Complexity](components/schema/plugins/query-complexity) - - [Field Authorize](components/schema/plugins/field-authorize) - - [Nullability Guard](components/schema/plugins/nullability-guard) - - [Prisma](components/schema/plugins/prisma) - -- [`@nexus/logger`](components/logger/about) - - [API](components/logger/api) - - [Plugins](components/logger/plugins) - - [Plugins API](components/logger/plugins-api) diff --git a/docs/tutorial/chapter-1-setup-and-first-query.md b/docs/tutorial/chapter-1-setup-and-first-query.md deleted file mode 100644 index ffd4ddb93..000000000 --- a/docs/tutorial/chapter-1-setup-and-first-query.md +++ /dev/null @@ -1,94 +0,0 @@ -# Chapter 1
Setup & First Query {docsify-ignore} - -In this first chapter we're just going to get the bare minimum of a Nexus project setup. You'll learn about: - -- The `nexus` package -- The Nexus CLI -- Laying out and running a Nexus project -- GraphQL Playground - -## CLI - -Start by creating your project directory, initializing your `package.json`, and adding the `nexus` dependency. - -```bash -mkdir nexus-tutorial && cd nexus-tutorial -npm init -y -npm add nexus -``` - -Nexus comes out of the box with a CLI. You'll use it often while working on your app. While you can access the CLI of your local nexus via `yarn` or npm scripts or `npx` but there's an even easier way. Install `nexus` globally. Then you can access the CLI from anywhere. Nexus is smart enough to delegate all invocations to the _local_ nexus. This is the idiomatic way to work with Nexus, but you aren't forced to do this. - -
- -> The simplicity of the dependencies you need is no accident. We're not hiding complexity to kick off this tutorial only for it to pounce upon you later. This is it. If you're curious about Nexus' philosophy on dependency management [we've written about it here](/meta/architecture#dependency-philosophy). - -```markdown -npm add --global nexus -``` - -There are just two CLI commands you need to know about right now: - -- `nexus dev` : This command starts a development server in watch mode. Every time you change a file, your app will be restarted. -- `nexus build` : This command builds a "production-ready" server, ready to be deployed. - -> Another is `nexus create app` which will scaffold a new Nexus project for you. That is how you should _normally_ start your Nexus projects. We're avoiding it in this tutorial so that you can learn the basics from the ground up. - -Despite having the global Nexus CLI, using package scripts can be a handy way of self-documenting your project's workflows. So feel free to add the following scripts to your `package.json`. If you work with team members this can help streamline collaboration. - -```json -"scripts": { - "dev": "nexus dev", - "build": "nexus build" -} -``` - -## Conventional Entrypoint - -We'll now create our first module at `api/app.ts`: - -```bash -mkdir api && touch api/app.ts -``` - -The directory name `api` is arbitrary but the module name `app` has special meaning. Nexus will find `app.ts` wherever you put it within your project and treat it as your entrypoint. Furthermore, every module that imports `nexus` will be automatically included into the final build by Nexus. This makes growing and refactoring your project easy as you are freed from managing import/export tedium. You might be wondering how import order is managed. The answer is that Nexus' APIs are declarative and so designed to be order independent. - -## Contextual Feedback - -Ok, with our entrypoint setup, let's boot up dev mode and see what happens. - -```bash -nexus dev -``` - -Woops? You should be seeing a warning from Nexus: - -```bash -▲ nexus:schema Your GraphQL schema is empty. [...] -``` - -All good, you indeed haven't added any types to your GraphQL schema yet so Nexus is right here. This is the first example of Nexus' rich development mode contextual feedback. One of the goals of Nexus is to never leave you in a confused disoriented state. If Nexus can give you in inline feedback it should. Add rich jsDoc and precise TypeScript types into the mix, and ideally you can largely avoid getting lost and _needing_ to consult the Nexus website, community, so on. - -## Try It Out - -Aside from the warning, you should also see a message indicating that your server is running, and where. - -```bash -● nexus:server listening -- url: 'http://localhost:4000/' -``` - -Open it up, what do you see? It should be an instance of [GraphQL Playground](https://github.com/prisma-labs/graphql-playground). - -![image](https://user-images.githubusercontent.com/284476/83534302-ae1b7d00-a4be-11ea-9a13-2665bf152e2a.png) - -This is a graphical user interface for interacting with GraphQL APIs. If you prefer you can run a [standalone](https://www.electronjs.org/apps/graphql-playground) version as an app on your machine, or another GraphQL GUI entirely. Nexus ships with one out of the box for your convenience. - -Take a look at the right-hand side SCHEMA tab. There you'll see a default schema that Nexus has provided for you. This, along with the warning you say before, will go away once you begin your own schema. - -## Wrapping Up - -That's it! In the next chapter you'll begin working on your app's schema. - -
- -[➳](/tutorial/chapter-2-writing-your-first-schema) diff --git a/docs/tutorial/chapter-2-writing-your-first-schema.md b/docs/tutorial/chapter-2-writing-your-first-schema.md deleted file mode 100644 index 9884eb939..000000000 --- a/docs/tutorial/chapter-2-writing-your-first-schema.md +++ /dev/null @@ -1,225 +0,0 @@ -# Chapter 2
Writing Your First Schema {docsify-ignore} - -In this chapter you're going to write your first schema. You'll learn about: - -- Writing GraphQL objects -- Exposing GraphQL objects for query operations -- GraphQL SDL file generation -- Enhanced type safety & autocompletion - -## What About That Server? - -In the last chapter you probably noticed the minimal setup required to get up and running. In fact, you might even be confused and wondering: - -"Hey, all I have is an empty `app.ts` file, how can my server even be running?" - -Well, Nexus comes with a server out of the box. There's no need for you to start or stop the server or otherwise think about it beyond your domain logic. Nexus wants you to focus on what makes your GraphQL API unique. - -If your lock-in fears are tingling, know that **you still have _full_ access** to the underlying server instance. So if you need to add custom middlewares, routes, and so on, you can. It happens that currently it is an `express` instance but this area of Nexus will evolve ([#295](https://github.com/graphql-nexus/nexus/issues/295)). - -
- -## Reflection? - -Before we get going we need a moment to introduce an important part of the Nexus development workflow. Nexus has an unconventional concept called "Reflection". It refers to the fact that, when `nexus dev` or `nexus build` is running, not only is your application code being run, but **information is being gathered and artifacts are being derived**. Some of Nexus' uses for reflection include: - -- Figuring out which plugins you are using, and the settings passed -- Generating TypeScript types to give your resolvers complete type safety -- Generating an SDL file - -This partly explains why Nexus has a declarative API. It needs a way to run your app reliably at build time. Declarative APIs give Nexus a higher degree of control to do this. Declarative APIs also encode enough semantic value for Nexus to do the things it needs to. - -Architecturally there's a lot more to say about reflection but for now, from a user point of view, just remember the following. You should _always_ have your `nexus dev` running when you're working on your project _even_ when you're not intending to use your server (e.g. access the GraphQL Playground). If you forget to run `nexus dev` then you will not, for example, get the static typing experience that you expect in your resolvers. - -> There are plans to run Nexus Reflection as a separate process integrated into your IDE. You can learn more about and track the feature here ([#949](https://github.com/graphql-nexus/nexus/issues/949)) - -
- -## Model The Domain - -Let's get started with our blog schema by modeling some key entities in the domain. We'll begin with the concept of a `Post`. A post will represent a page in your blog. When not published, we'll call it a _draft_. - -Your modeling work is going to start on the API layer as opposed to the database layer. This API-first approach can be a good way to collaborate with frontend teams, getting their input in shaping the data early. - -> A note about terminology. We will be talking about the Post Object not Post Model. The difference is that at the API layer we have objects but at the database layer we have models. The name difference helps us talk about these different layers without confusion. It is also how GraphQL (API layer) and Prisma (database layer, discussed later) respectively refer to these things. - -Create a new module for your Post object at `api/graphql/Post.ts`. We _could_ write our whole schema within say `api/app.ts` or `api/graphql.ts`, but modularizing your GraphQL type definitions can help scale your codebase. Neither approach is inherently wrong though, so do as you see you fit. For this tutorial we'll use the modular style. - -```bash -mkdir api/graphql && touch api/graphql/Post.ts -``` - -To create the `Post` object we'll import the `schema` component from the `nexus` package. `schema` is where you'll find all the building blocks to craft your GraphQL types. Right now we are interested in the `schema.objectType` method, which, unsurprisingly, helps building [GraphQL Object Types](https://graphql.org/graphql-js/object-types/). - - -```ts -// api/graphql/Post.ts - -import { schema } from 'nexus' - -schema.objectType({ - name: 'Post', // <- Name of your type - definition(t) { - t.int('id') // <- Field named `id` of type `Int` - t.string('title') // <- Field named `title` of type `String` - t.string('body') // <- Field named `body` of type `String` - t.boolean('published') // <- Field named `published` of type `Boolean` - }, -}) -``` - -
- -## SDL? - -Once you've saved this file change to disk, your app will be restarted and the previous warning you had about an empty GraphQL schema should be gone. - -You may notice that there's also now a new `api.graphql` file at your project root. It contains a representation of your schema in a syntax called the GraphQL Schema Definition Language (SDL for short). In dev mode Nexus generates this for you at every app restart. In it you should see the following: - -```graphql -type Post { - id: Int - title: String - body: String - published: Boolean -} -``` - -You are free to disable this file (settings discussed later) but its existence has two benefits for you to consider: - -1. For users familiar with SDL the correspondence between the source code and it may help them learn Nexus' schema API faster. -2. The SDL syntax makes it an accessible way for others to evaluate incoming API changes without having to know about Nexus, or even JavaScript. Consider using the generated SDL file to improve your pull-request reviews. - -For the remainder of this tutorial we'll be keeping SDL to the right of Nexus code blocks. - -
- -## Your First Home Grown Query - -Your `Post` object is in place now but there's still no way for clients to read that data. Let's change that. You'll use the special `Query` object to expose your Post object. - -We'll start by letting API clients read the drafts of your blog. - -
- - -```ts -// api/graphql/Post.ts // 1 -// ... - -schema.extendType({ - type: 'Query', // 2 - definition(t) { - t.field('drafts', { // 3 - nullable: false, // 4 - type: 'Post', // 5 - list: true, // 6 - }) - }, -}) -``` - -```graphql -type Query { - drafts: [Post!]! -} -``` - -
- -1. The Query object is a central place in your schema where many other types will appear. Like before with the modular GraphQL types decision we again can decide to be modular here. We could either create a new `api/graphql/Query.ts` module (not modular), or we could _collocate_ the exposure of Post object with its definition in `api/graphql/Post.ts` (modular). Staying consistent with before, we'll take the modular way. -1. To achieve collocation in Nexus we'll use `schema.extendType`. Its API is _very_ similar to `schema.objectType` with the difference that the defined fields are merged into the _targeted_ type. -1. The first parameter specifies the field's name, here `drafts` -1. `nullable: false` specifies that clients will always get a value for this field. By default, in Nexus, all "output types" (types returned by fields) are nullable. This is for [best practice reasons](https://graphql.org/learn/best-practices/#nullability). In this case though we indeed want to guarantee that a list will always be returned, never `null`. - - If you're ever dissatisfied with Nexus' defaults, not to worry, [you can change them](https://www.nexusjs.org/#/api/modules/main/exports/settings?id=schemanullableinputs). - -1. `type: 'Post'` specifies what the field's type should be. Here, a `Post` -1. `list: true` augments the field's type spec, making it wrapped by a List type. Here, a `[Post]`. Nexus also provides the following shorthand for this 👇 - - ```ts - definition(t) { - t.list.field('drafts', { ... }) - } - ``` - -
- - - - - - - -You'll see some feedback from your IDE that you're missing a `resolve` property. Go ahead and try to implement it, letting the autocompletion guide you. - -> You might be wondering why Nexus hasn't complained about missing resolvers in some other cases so far. The answer is a more advanced topic that we'll cover later. - -```ts -// api/graphql/Post.ts -import { schema } from 'nexus' -// ... - -schema.extendType({ - type: 'Query', - definition(t) { - t.field('drafts', { - type: 'Post', - list: true, - resolve() { - return [{ id: 1, title: 'Nexus', body: '...', published: false }] - }, - }) - }, -}) -``` - -
- -## Try It Out - -You can now open up your GraphQL playground and try the following query (left); In response, you should see something like so (right): - -
- -```graphql -{ - drafts { - id - title - body - published - } -} -``` - -```json -{ - "data": { - "posts": [ - { - "id": 1, - "title": "Nexus", - "body": "...", - "published": false - } - ] - } -} -``` - -
- -
- -## Wrapping Up - -Congratulations! You've successfully got your first GraphQL schema up and running with Nexus! In the next chapter we'll explore adding some write capabilities to our API. - -
- -[➳](/tutorial/chapter-3-adding-mutations-to-your-api) diff --git a/docs/tutorial/chapter-3-adding-mutations-to-your-api.md b/docs/tutorial/chapter-3-adding-mutations-to-your-api.md deleted file mode 100644 index c0da50840..000000000 --- a/docs/tutorial/chapter-3-adding-mutations-to-your-api.md +++ /dev/null @@ -1,318 +0,0 @@ -# Chapter 3
Adding Mutations to Your API {docsify-ignore} - -In this chapter you're going to add some write capability to your API. You'll learn about: - -- Writing GraphQL mutations -- Exposing GraphQL objects for mutation operations -- Working with GraphQL Context -- Working with GraphQL arguments - -To keep our learning gradual we'll stick to in-memory data for now but rest assured a proper databases is coming in an upcoming chapter. - -## Wire Up The Context - -The first thing we'll do is setup an in-memory database and expose it to our resolvers using the _GraphQL context_. - -The GraphQL Context is a plain JavaScript object shared across all resolvers. Nexus creates a new one for each request and adds a few of its own properties. Largely though, what it will contains will be defined by your app. It is a good place to, for example, attach information about the logged-in user. - -So go ahead and create the database. - -```bash -touch api/db.ts -``` - -```ts -// api/db.ts - -export const db = { - posts: [{ id: 1, title: 'Nexus', body: '...', published: false }], -} -``` - -Now to expose it in our GraphQL context we'll use a new schema method called `addToContext`. We can do this anywhere in our app but a fine place is the `api/app.ts` module we already created in chapter 1. - -```ts -// api/app.ts - -import { schema } from 'nexus' -import { db } from './db' - -schema.addToContext(() => { - return { - db, - } -}) -``` - -That's it. Behind the scenes Nexus will use the TypeScript compiler API to extract our return type here and propagate it to the parts of our app where the context is accessible. And if ever this process does not work for you for some reason you can use fallback to manually giving the types to Nexus like so: - -```ts -module global { - interface NexusContext { - // type information here - } -} -``` - -> **Note** For those familiar with GraphQL, you might be grimacing that we’re attaching static things to the context, instead of using export/import. -> This is a matter of convenience. Feel free to take a purer approach in your apps if you want. - -## Use The Context - -Now let's use this data to re-implement the `Query.drafts` resolver from the previous chapter. - -```diff -schema.queryType({ - definition(t) { - t.list.field('drafts', { - type: 'Post', -- resolve() { -- return [{ id: 1, title: 'Nexus', body: '...', published: false }] -+ resolve(_root, _args, ctx) { // 1 -+ return ctx.db.posts.filter(p => p.published === false) // 2 - }, - }) - }, -}) -``` - -1. Context is the _third_ parameter, usually identified as `ctx` -2. Return the filtered data by un-published posts, _aka_ drafts . Nexus makes sure the types line up. - -**Did you notice?** Still no TypeScript type annotations required from you yet everything is still totally type safe. Prove it to yourself by hovering over the `ctx.db.posts` property and witness the correct type information it gives you. This is the type propagation we just mentioned in action. 🙌 - -## Your First Mutation - -Alright, now that we know how to wire things into our context, let's implement our first mutation. We're going to make it possible for your API clients to create new drafts. - -This mutation will need a name. Rather than simply call it `createPost` we'll use language from our domain. In this case `createDraft` seems reasonable. There are similarities with our previous work with `Query.drafts`: - -- `Mutation` is a root type, its fields are entrypoints. -- We can colocate mutation fields with the objects they relate to or centralize all mutation fields. - -As before we will take the collocation approach. - -
- - -```ts -// api/graphql/Post.ts -// ... - -schema.extendType({ - type: 'Mutation', - definition(t) { - t.field('createDraft', { - type: 'Post', - nullable: false, - resolve(_root, args, ctx) { - ctx.db.posts.push(/*...*/) - return // ... - }, - }) - }, -}) -``` - -```graphql -Mutation { - createDraft: Post! -} -``` - -
- -We need to get the client's input data to complete our resolver. This brings us to a new concept, GraphQL arguments. Every field in GraphQL may accept them. Effectively you can think of each field in GraphQL like a function, accepting some input, doing something, and returning an output. Most of the time "doing something" is a matter of some read-like operation but with `Mutation` fields the "doing something" usually entails a process with side-effects (e.g. writing to the database). - -Let's revise our implementation with GraphQL arguments. - -
- -```diff -schema.extendType({ - type: 'Mutation', - definition(t) { - t.field('createDraft', { - type: 'Post', -+ args: { // 1 -+ title: schema.stringArg({ required: true }), // 2 -+ body: schema.stringArg({ required: true }), // 2 -+ }, - resolve(_root, args, ctx) { -+ const draft = { -+ id: ctx.db.posts.length + 1, -+ title: args.title, // 3 -+ body: args.body, // 3 -+ published: false, -+ } -+ ctx.db.posts.push(draft) -+ return draft -- ctx.db.posts.push(/*...*/) -- return // ... - }, - }) - }, -}) -``` - -```diff -Mutation { -- createDraft: Post -+ createDraft(title: String!, body: String!): Post -} -``` - -
- -1. Add an `args` property to the field definition to define its args. Keys are arg names and values are type specifications. -2. Use the Nexus helpers for defining an arg type. There is one such helper for every GraphQL scalar such as `schema.intArg` and `schema.booleanArg`. If you want to reference a type like some InputObject then use `schema.arg({ type: "..." })`. -3. In our resolver, access the args we specified above and pass them through to our custom logic. If you hover over the `args` parameter you'll see that Nexus has properly typed them including the fact that they cannot be undefined. - -## Model The Domain pt 2 - -Before we wrap this chapter let's flush out our schema a bit more. We'll add a `publish` mutation to transform a draft into an actual published post, then we'll let API clients read the the published posts. - -
- -```ts -// api/graphql/Post.ts - -import { schema } from 'nexus' - -schema.extendType({ - type: 'Mutation', - definition(t) { - // ... - t.field('publish', { - type: 'Post', - args: { - draftId: schema.intArg({ required: true }), - }, - resolve(_root, args, ctx) { - let draftToPublish = ctx.db.posts.find((p) => p.id === args.draftId) - - if (!draftToPublish) { - throw new Error('Could not find draft with id ' + args.draftId) - } - - draftToPublish.published = true - - return draftToPublish - }, - }) - }, -}) -``` - -```diff -type Mutation { - createDraft(body: String!, title: String!): Post -+ publish(draftId: Int!): Post -} -``` - -
- -
- -```ts -// api/graphql/Post.ts - -import { schema } from 'nexus' - -schema.extendType({ - type: 'Query', - definition(t) { - // ... - t.list.field('posts', { - type: 'Post', - resolve(_root, _args, ctx) { - return ctx.db.posts.filter((p) => p.published === true) - }, - }) - }, -}) -``` - -```diff -type Query { - drafts: [Post!] -+ posts: [Post!] -} -``` - -
- -## Try It Out - -Great, now head on over to the GraphQL Playground and run this query (left). If everything went well, you should see a response like this (right): - -
- -```graphql -mutation { - publish(draftId: 1) { - id - title - body - published - } -} -``` - -```json -{ - "data": { - "publish": { - "id": 1, - "title": "Nexus", - "body": "...", - "published": true - } - } -} -``` - -
- -Now, that published draft should be visible via the `posts` Query. Run this query (left) and expect the following response (right): - -
- -```graphql -query { - posts { - id - title - body - published - } -} -``` - -```json -{ - "data": { - "posts": [ - { - "id": 1, - "title": "Nexus", - "body": "...", - "published": true - } - ] - } -} -``` - -
- -## Wrapping Up - -Congratulations! You can now read and write to your API. - -But, so far you've been validating your work by manually interacting with the Playground. That may be reasonable at first (depending on your relationship to TDD) but it will not scale. At some point you are going to want automated testing. Nexus takes testing seriously and in the next chapter we'll show you how. See you there! - -
- -[➳](/tutorial/chapter-4-testing-your-api) diff --git a/docs/tutorial/chapter-4-testing-your-api.md b/docs/tutorial/chapter-4-testing-your-api.md deleted file mode 100644 index de969d216..000000000 --- a/docs/tutorial/chapter-4-testing-your-api.md +++ /dev/null @@ -1,198 +0,0 @@ -# Chapter 4
Testing Your API {docsify-ignore} - -So far you've been validating your work by manual interacting with the Playground. That might be reasonable at first (depending on your relationship to TDD) but it will not scale. At some point you are going to want automated testing. So in this chapter you're going to add some automated tests to your e-commerce project. You'll learn about: - -- Nexus' approach to testing -- Setting up a test environment -- The `nexus/testing` module - -## It's At the System Level - -There are multiple ways you can test a GraphQL API. One way is to extract resolvers into isolated functions and then unit test them. Of course these are rarely pure functions so those unit tests either become partial integration tests or mocks are introduced to try and retain the unit level of testing. Unit testing resolvers can work well, but here are some reasons why and where it might not; - -- The Nexus Prisma plugin (discussed later) can remove the need to even write resolvers in which case testing [those] resolvers doesn't make sense. -- Thanks to the enhanced static type safety brought by Nexus, testing for correct handling of different input types and expected output types can be greatly reduced. For example you shouldn't need to test that your resolver checks for nulls before accessing nullable fields of an input object. And you don't need to test that your resolver is returning the right type. -- Unit testing resolvers cannot provide a client perspective view of correctness since they focus on internals. If you want to test but have limited time/capacity to do so, you might choose to minimize/forgo the unit level in favor of system/integration tests that are closer to or at the level of a client perspective. - -Testing non-trivial resolvers in isolation is likely to be a good investment in most cases but its up to you as a developer. What Nexus provides help with is not at this level, but higher up in the [testing pyramid](https://codingjourneyman.com/tag/uncle-bob/page/2/), at the system level. System testing means tests that will run operations against your API just like a real client would. This chapter will focus on that. Let's dive-in! - -## Setting up Your Test Environment - -During this tutorial, you'll use the [Jest testing framework](https://jestjs.io/) to test your API. This is not mandatory but we do recommend it. Still, in general, outside this tutorial, if you prefer another testing framework, feel free to use it. - -First, install `jest` and accompanying tools - -```bash -npm add --save-dev jest @types/jest ts-jest -``` - -Then, configure jest and npm scripts in your `package.json` - -```json -"scripts": { - "test": "jest" -}, -"jest": { - "preset": "ts-jest", - "testEnvironment": "node" -} -``` - -Finally, create a `tests` folder at the root of your project and a `Post.test.ts` file inside it - -```bash -mkdir tests && touch tests/Post.test.ts -``` - -You're set. - -## Testing The Publish Mutation - -Nexus comes with a special testing module that you can import from `nexus/testing`. - -Its primary export is the `createTestContext` function which is designed for running system tests. When run, it will boot your app in the same process as the test suite and expose an interface for your tests to interact with it. Jest runs each test suite in its own process, so if you have have say eight test suites running in parallel that means you'll have eight app processes running too. - -Before jumping into your first test we will show you a pattern that more tightly integrates `createTestContext` into jest. Nexus will probably ship something like as follows or better in the future, but for now you can just add this as test helper in your Nexus projects. - -Create a `tests/__helpers.ts` module with the following contents. - -```bash -touch tests/__helpers.ts -``` - - -```ts -// tests/__helpers.ts // 1 - -import { createTestContext as originalCreateTestContext, TestContext } from 'nexus/testing' - -export function createTestContext() { - let ctx = {} as TestContext // 2 - - beforeAll(async () => { - Object.assign(ctx, await originalCreateTestContext()) // 3 - await ctx.app.start() // 4 - }) - - afterAll(async () => { - await ctx.app.stop() // 5 - }) - - return ctx -} -``` - -1. The module name prefix `__` matches that of jest's for snapshot folders `__snapshots__` -2. Create an object that will be returned immediately but mutated before tests run -3. Before tests run create the test context. This does most of the work like getting your app instance. -4. Before tests run start the app -5. After tests complete, stop the app. This will for example close your app's HTTP server. - -Alright, now you will test your `publish` mutation. Because we want to start from a clean database, we'll just remove the pre-seeded data in the in-memory database that we've been using up until now. - -```diff -// api/db.ts -export const db = { -- posts: [{ id: 1, title: 'Nexus', body: '...', published: false }], -+ posts: [] -} -``` - -Now use your new helper and scaffold your first test: - - -```ts -// tests/Post.test.ts - -import { createTestContext } from './__helpers' - -const ctx = createTestContext() - -it('ensures that a draft can be created and published', async () => { - // Create a new draft - const draftResult = await ctx.client.send(` # 1 - mutation { - createDraft(title: "Nexus", body: "...") { # 2 - id - title - body - published - } - } - `) - - // Snapshot that draft and expect `published` to be false - expect(draftResult).toMatchInlineSnapshot() // 3 - - // Publish the previously created draft - const publishResult = await ctx.client.send(` - mutation publishDraft($draftId: Int!) { - publish(draftId: $draftId) { - id - title - body - published - } - } - `, - { draftId: draftResult.createDraft.id } - ) - - // Snapshot the published draft and expect `published` to be true - expect(publishResult).toMatchInlineSnapshot() -}) -``` - -1. The test context exposes a GraphQL client at `ctx.client.send` that will help us run operations against our API. Here We're using it to send a publish mutation. -2. This is the mutation from the end of last chapter. -3. The result will be snapshoted inline allowing us to see the input and output collocated! - -## Try It Out - -Now run your tests and let's see the snapshots come to life! It should look similar to this: - -```bash -npm run test -``` - -Draft snapshot - -```diff - // Snapshot that draft and expect `published` to be false - expect(result).toMatchInlineSnapshot(` -+ Object { -+ "publish": Object { -+ "id": 1, -+ "title": "Nexus", -+ "body": "...", -+ "published": false, -+ }, -+ } - `) -``` - -Published draft snapshot - -```diff - // Snapshot that draft and expect `published` to be false - expect(result).toMatchInlineSnapshot(` -+ Object { -+ "publish": Object { -+ "id": 1, -+ "title": "Nexus", -+ "body": "...", -+ "published": true, -+ }, -+ } - `) -``` - -Awesome, beautiful workflow isn't it? If inline snapshots get too unwieldy you can switch to regular snapshots and install [a VSCode plugin](https://marketplace.visualstudio.com/items?itemName=asvetliakov.snapshot-tools) that will display the snapshots upon hovering over the `toMatchSnapshot` method name. While not quite as fluid as seeing inline snapshots throughout your test module, it may work better for you. - -## Wrapping Up - -You've just made a big step in the maintainability of your API. Here we showed how to test your `createDraft` and `publish` mutation, proving that a draft can be properly created and published. However you did _not_ test if the draft was correctly persisted into your database. That piece will come soon! But first we need a real database in the first place. That's what the next chapter is all about! - -
- -[➳](/tutorial/chapter-5-persisting-data-via-prisma) diff --git a/docs/tutorial/chapter-5-persisting-data-via-prisma.md b/docs/tutorial/chapter-5-persisting-data-via-prisma.md deleted file mode 100644 index ea5f1c68a..000000000 --- a/docs/tutorial/chapter-5-persisting-data-via-prisma.md +++ /dev/null @@ -1,331 +0,0 @@ -# Chapter 5
Persisting Data (via Prisma) {docsify-ignore} - -So far we have been working with in-memory data while we learn about other parts of Nexus in a focused manner, but in this chapter we're going to put the focus squarely on data and show how Nexus can be used with a database. This marks an important step toward your blog app becoming more real. You'll learn about: - -- Prisma -- Nexus Plugins -- Setting up a Postgres database locally - -We're going to be using a database called Postgres and a tool called Prisma to interact with it. - -Postgres is a well known open-source relational database. Prisma is a new way of working with databases that we'll learn more about in a moment. - -Its important to understand that Nexus does not _require_ these technology choices and _could_ actually be used with any database and abstractions over them (raw SQL, query builder, ORM..). However, Nexus is built by a team at Prisma (the company) and unsurprisingly there is great integration between its tools and Nexus. - -## Prisma? - -So, what _is_ Prisma? It is an open source database toolkit that consists of the following parts: - -**Prisma Client**: Auto-generated and type-safe query builder for Node.js & TypeScript -**Prisma Migrate** (experimental): Declarative data modeling & migration system -**Prisma Studio** (experimental): GUI to view and edit data in your database - -At the heart of Prisma is the _Prisma Schema,_ a file usually called `schema.prisma`, that you will see later in this tutorial. It is a declarative file wherein using a domain specific language you encode your database schema, connection to the database, and more. - -Prisma has great [docs](https://www.prisma.io/docs/understand-prisma/introduction) so definitely check them out at some point. For now you can stay in the flow of this tutorial if you want though. We're going to focus on Prisma Client. - -## Nexus plugins? - -Now we're ready to actually use Prisma with Nexus! This is going to be achieved by way of a Nexus _plugin_. What? Yep, Nexus has a plugin ecosystem which can be used to enhance your app and development experience in a number of ways! Nexus Plugins broadly breakdown into three areas of enhancement: - -1. **worktime:** watch new file types, hook onto events, attach new CLI commands, ... -2. **runtime:** add schema middleware, setting presets, field builders, custom scalars, ... -3. **testtime:** attach data to the Nexus Test Context - -Plugin packages are usually named after the following convention: `nexus-plugin-` and we refer to them just by either name suffix part. So for the example when we say that Prisma and Nexus integrate together via the Nexus `prisma` plugin that means `nexus-plugin-prisma`. - -Another convention that they usually follow is that they use the default export of the package as well as a named export that is a camel case variant of the name part mentioned before (see below for example). - -Plugins are easy to use: - -```bash -npm add nexus-plugin-foo -``` - -```ts -import foo from 'nexus-plugin-foo' -import { foo } from 'nexus-plugin-foo' // alternative, as you wish -import { use } from 'nexus' - -use(foo()) -``` - -All plugins are functions. They can accept optional or required settings if the plugin authors wishes so. Once a plugin is imported and invoked, its return value is passed to the Nexus `use` method. Once done, your app is using the plugin. On the surface the method looks similar to that of `express`'s `use`. - -Note how the plugins only exist within your app code yet we mentioned before that plugins can augment worktime aspects like the CLI. Neat right? No external config files with plugin setup are required. Its one of many examples of how Nexus provides a powerful and extensible system without forwarding you, the user, a complexity tax for it. - -## Connect to your database - -Now that you know a bit about Prisma and Nexus plugins, let's get going! Do the following: - -- Install the Prisma plugin -- Use it in your `api/app.ts` module -- Create your Prisma Schema -- Create a `.env` file to store your database credentials -- Connect to your database - -like so: - -```bash -npm add nexus-plugin-prisma -``` - -
- -> Like we mentioned in Chapter 1, the simplicity of the dependency story here is no accident. Nexus Prisma plugin bundles deps like `@prisma/client` for you. If you're curious about Nexus' philosophy on dependency management [we've written about it here](/meta/architecture#dependency-philosophy). - -```ts -// api/app.ts - -import { use } from 'nexus' -import { prisma } from 'nexus-plugin-prisma' - -use(prisma()) -``` - -```bash -mkdir prisma -touch prisma/schema.prisma -touch prisma/.env -``` - -```groovy -// prisma/schema.prisma - -datasource postgres { - provider = "postgresql" - url = env("DATABASE_URL") -} -``` - -``` -# prisma/.env -DATABASE_URL="" -``` - -Almost done, but we still need to setup a Postgres database for our app to connect to. There are a ton of ways to do this so we're just going to show the most straight forward cross-platform way we know how. First, make sure you have [docker installed](https://docs.docker.com/get-docker/). Then, simply run this command: - -``` -❯ docker run --detach --publish 5432:5432 -e POSTGRES_PASSWORD=postgres --name postgres postgres:10.12 -``` - -That's it. You now have a Postgres server running. You can connect to it at a URL like: - -```markdown -postgresql://postgres:postgres@localhost:5432/myapp -``` - -If you prefer setting up your local Postgres another way go for it. If our suggest approach doesn't work for you, then checkout a few other approaches listed on the [Nexus recipes page](https://www.nexusjs.org/#/references/recipes?id=setting-up-postgresql). - -Finally, in the `prisma/.env` file you've created before, replace `` with your actual database URL. - -Confirm things are setup correctly by ... **TODO: find a way to make sure their connection url is working** - -## Create your database schema - -It is now time to replace our in-memory data with actual tables in our database. To do this we'll write models in our Prisma Schema. - -In chapters 2 and 3 we already began to model our blog domain with the GraphQL type `Post`. We can base our models on that prior work, resulting in a Prisma Schema like so: - -```groovy -// prisma/schema.prisma -// ... - -model Post { - id Int @id @default(autoincrement()) - title String - body String - published Boolean -} -``` - -With our database schema specified, we're now ready to proceed to our first database migration! To do that, we'll use the Prisma CLI. - -Generate our migration files... - -```bash -npx prisma migrate save --experimental -``` - -Then, apply the migration... - -```bash -npx prisma migrate up --experimental -``` - -## Access your database - -Now let's finally ditch our in-memory data! Let's start by removing the `api/db.ts` module and then be guided by TypeScript errors. - -```bash -rm api/db.ts -``` - -In `api/app.ts` module, remove the db import and the `schema.addToContext` call. - -```diff -+++ api/app.ts - -- import { schema, use } from 'nexus' -+ import { use } from 'nexus' - import { prisma } from 'nexus-plugin-prisma' -- import { db } from './db' - - use(prisma()) - -- schema.addToContext(() => { -- return { -- db, -- } -- }) -``` - -You might be wondering how you'll maintain access to the `db` client in your GraphQL Context given that we've just deleted it. Nexus plugins help here. One of their many capabilities is augmenting your GraphQL context. - -In this case, the prisma plugin adds a `db` property, an instance of Prisma Client, one of the tools in the Prisma toolkit. - -Let's now replace all our previous in-memory db interactions with calls to the Prisma Client - -```diff -schema.extendType({ - type: 'Query', - definition(t) { - t.list.field('drafts', { - type: 'Post', - resolve(_root, _args, ctx) { -- return ctx.db.posts.filter((p) => p.published === false) -+ return ctx.db.post.findMany({ where: { published: false } }) - }, - }); - t.list.field('posts', { - type: 'Post', - resolve(_root, _args, ctx) { -- return ctx.db.posts.filter((p) => p.published === true) -+ return ctx.db.post.findMany({ where: { published: true } }) - }, - }) - }, -}); -``` - -```diff -schema.extendType({ - type: 'Mutation', - definition(t) { - t.field('createDraft', { - type: 'Post', - args: { - title: schema.stringArg({ required: true }), - body: schema.stringArg({ required: true }), - }, - resolve(_root, args, ctx) { - const draft = { -- id: ctx.db.posts.length + 1, - title: args.title, - body: args.body, - published: false, - } -- ctx.db.posts.push(draft) - -- return draft -+ return ctx.db.post.create({ data: draft }) - }, - }) - - t.field('publish', { - type: 'Post', - args: { - draftId: schema.intArg({ required: true }), - }, - resolve(_root, args, ctx) { -- let postToPublish = ctx.db.posts.find((p) => p.id === args.draftId) - -- if (!postToPublish) { -- throw new Error('Could not find draft with id ' + args.draftId) -- } - -- postToPublish.published = true - -- return postToPublish - -+ return ctx.db.post.update({ -+ where: { id: args.draftId }, -+ data: { -+ published: true, -+ }, -+ }); - }, - }) - }, -}) -``` - -If you need a copy & pastable version, here it is - -```ts -schema.extendType({ - type: 'Query', - definition(t) { - t.list.field('drafts', { - type: 'Post', - resolve(_root, _args, ctx) { - return ctx.db.post.findMany({ where: { published: false } }) - }, - }) - t.list.field('posts', { - type: 'Post', - resolve(_root, _args, ctx) { - return ctx.db.post.findMany({ where: { published: true } }) - }, - }) - }, -}) - -schema.extendType({ - type: 'Mutation', - definition(t) { - t.field('createDraft', { - type: 'Post', - args: { - title: schema.stringArg({ required: true }), - body: schema.stringArg({ required: true }), - }, - resolve(_root, args, ctx) { - const draft = { - title: args.title, - body: args.body, - published: false, - } - return ctx.db.post.create({ data: draft }) - }, - }) - - t.field('publish', { - type: 'Post', - args: { - draftId: schema.intArg({ required: true }), - }, - resolve(_root, args, ctx) { - return ctx.db.post.update({ - where: { id: args.draftId }, - data: { - published: true, - }, - }) - }, - }) - }, -}) -``` - -## Try It Out - -Awesome, you're ready to open up the playground and create a draft! If all goes well, good job! If not, no worries, there's a lot of integration pieces in this chapter where something could have gone wrong. If after reviewing your steps you still don't understand the issue, feel free to open up a [discussion](https://nxs.li/discussions) asking for help. - -## Wrapping Up - -We've just changed our code, so we must be due or overdue for a test update right? Well, in the next chapter we'll do just that, and show you how Nexus testing works with Prisma. - -
- -[➳](/tutorial/chapter-6-testing-with-prisma) diff --git a/docs/tutorial/chapter-6-testing-with-prisma.md b/docs/tutorial/chapter-6-testing-with-prisma.md deleted file mode 100644 index ab4d86180..000000000 --- a/docs/tutorial/chapter-6-testing-with-prisma.md +++ /dev/null @@ -1,194 +0,0 @@ -# Chapter 6
Testing With Prisma {docsify-ignore} - -There's a couple of things you'll have to do in order to run integration tests against your API now that it's connected to a real development database. Please note that a lot of the following steps will most likely be simplified in the future. We're just not there yet. In this chapter, you'll learn about: - -- Custom Jest environment -- Integration test with a real database - -## How does it work? - -To perform integration testing against a real database, here are the high level steps we will follow _for every tests_: - -- Connect to a Postgres database. Most likely your dev database. -- Migrate our database schema to a randomly generated schema of that database. This ensures that every tests runs from a clean un-seeded database -- Make the Prisma Client connect to that Postgres schema -- Run your test -- Teardown the schema entirely - -## Setting up the environment - -To achieve some of the steps described above, we'll use a custom Jest environment. - -First, install `pg` and `nanoid` packages - -```bash -npm add pg nanoid -``` - -Create a `tests/nexus-test-environment.js` module and copy & paste the following to it - -```js -// tests/nexus-test-environment.js -const { Client } = require('pg') -const NodeEnvironment = require('jest-environment-node') -const { nanoid } = require('nanoid') -const util = require('util') -const exec = util.promisify(require('child_process').exec) - -const prismaBinary = './node_modules/.bin/prisma' - -/** - * Custom test environment for Nexus, Prisma and Postgres - */ -class PrismaTestEnvironment extends NodeEnvironment { - constructor(config) { - super(config) - - // Generate a unique schema identifier for this test context - this.schema = `test_${nanoid()}` - - // Generate the pg connection string for the test schema - this.databaseUrl = `postgres://postgres:postgres@localhost:5432/testing?schema=${this.schema}` - } - - async setup() { - // Set the required environment variable to contain the connection string - // to our database test schema - process.env.DATABASE_URL = this.databaseUrl - this.global.process.env.DATABASE_URL = this.databaseUrl - - // Run the migrations to ensure our schema has the required structure - await exec(`${prismaBinary} migrate up --create-db --experimental`) - - return super.setup() - } - - async teardown() { - // Drop the schema after the tests have completed - const client = new Client({ - connectionString: this.databaseUrl, - }) - await client.connect() - await client.query(`DROP SCHEMA IF EXISTS "${this.schema}" CASCADE`) - await client.end() - } -} - -module.exports = PrismaTestEnvironment -``` - -Make sure that the `databaseUrl` property has the right credentials to connect to your own database. -Leave the `/testing?schema=...` part though. This ensures that your tests will add data to your Postgres instance in a separate database called `testing` in a schema that randomly generated. - -Then, configure Jest to use that custom environment in your `package.json` - -```diff -"jest": { - "preset": "ts-jest", -- "testEnvironment": "node", -+ "testEnvironment": "./tests/nexus-test-environment.js" -} -``` - -Finally, thanks to the `nexus-plugin-prisma`, the test context that we previously used should now be augmented with a `ctx.app.db` property. That db property holds an instance of the Prisma Client to give you access to the underlying testing database. This is useful, for instance, to seed your database or make sure that some data was properly inserted. - -The last thing we need to do to setup our environment is to make sure that we properly close the database connection after all tests. To do that, head to your `tests/__helpers.ts` module and add the following - -```diff -import { - createTestContext as originalCreateTestContext, - TestContext, -} from 'nexus/testing'; - -export function createTestContext(): TestContext { - let ctx = {} as TestContext; - - beforeAll(async () => { - Object.assign(ctx, await originalCreateTestContext()); - - await ctx.app.start(); - }); - - afterAll(async () => { -+ await ctx.app.db.client.disconnect(); - await ctx.app.stop(); - }); - - return ctx; -} -``` - -## Updating our test - -We're ready to update our test so that it uses our database. Wait though. Is there even something to change? -No, absolutely nothing. In fact, you can already try running Jest again and your test should pass. That's precisely the point of integration tests. - -There's one thing we can do though. If you remember our previous test, the only part we couldn't test was whether or not the data had properly been persisted into the database. - -Let's use the `ctx.app.db` property to fetch our database right after we've published the draft to ensure that it's been created by snapshotting the result. - -```diff -// tests/Post.test.ts - -it('ensures that a draft can be created and published', async () => { - // ... - - // Publish the previously created draft - const publishResult = await ctx.client.send( - ` - mutation publishDraft($draftId: Int!) { - publish(draftId: $draftId) { - id - title - body - published - } - } - `, - { draftId: draftResult.createDraft.id } - ) - - // Snapshot the published draft and expect `published` to be true - expect(publishResult).toMatchInlineSnapshot(` - Object { - "publish": Object { - "body": "...", - "id": 1, - "published": true, - "title": "Nexus", - }, - } - `) - -+ const persistedData = await ctx.app.db.client.post.findMany() - -+ expect(persistedData).toMatchInlineSnapshot() -}) -``` - -The new snapshot should look like the following. It proves that our database did persist that data and that we have exactly one item in it. - -```diff -expect(persistedData).toMatchInlineSnapshot(` -+ Array [ -+ Object { -+ "body": "...", -+ "id": 1, -+ "published": true, -+ "title": "Nexus", -+ }, -+ ] - `) -``` - -## Wrapping up - -Congrats, you've performed your first real-world integration test. The fact that integration tests are completely decoupled from the implementation of your GraphQL API makes it a lot easier to maintain your test suite as you evolve your API. What matters is only the data that it produces, which also helps you cover your app a lot more than a single unit test. - -About our app, it's starting to take shape but it's still lacking something pretty important in any application: authentication. - -Come onto the next chapter to get that added to your app! - -
- -[➳](/tutorial/chapter-7-authentication) diff --git a/docs/tutorial/chapter-7-authentication.md b/docs/tutorial/chapter-7-authentication.md deleted file mode 100644 index 8ca2b200c..000000000 --- a/docs/tutorial/chapter-7-authentication.md +++ /dev/null @@ -1,5 +0,0 @@ -# Chapter 7
Authentication {docsify-ignore} - -... - -That's it folks! More Tutorial content is forthcoming. If you want to keep tabs on its status subscribe to issue [#904](https://github.com/graphql-nexus/nexus/issues/904). diff --git a/docs/tutorial/introduction.md b/docs/tutorial/introduction.md deleted file mode 100644 index ede9983a2..000000000 --- a/docs/tutorial/introduction.md +++ /dev/null @@ -1,53 +0,0 @@ -Welcome to _the_ Nexus tutorial! If you're new to Nexus and want a guided learning journey, this is the place! Through a handful of chapters we're going to be building just enough of a blog to give you an overview of Nexus; what it is and what it can do. - -This tutorial is still under construction. Some chapters will continue to be refined and more added. If you're looking for our old tutorial content, it can still be found [here](/getting-started/tutorial). - -## Assumed Tools - -Throughout this journey, we'll be making a few minor assumptions about your toolchain to keep the content flowing: - -- Using `npm` as the package manager. -- Using a \*nix OS -- Using VSCode - -If you're using another set of tools, like Yarn on Windows with Sublime Text, that's totally fine and welcome! Just know that at you'll occasionally need to adapt minor instructions to your situation. - -## Conventions - -There's a few conventions used throughout this tutorial that you should know about. - -- **Annotated Code Blocks** - - Most Code Blocks are explained with annotations. Take the following for example. Immediately following the codeblock are numbered points. Each corresponds to a line annotated with that number in the code block. - - - ```ts - const a = 1 as const // 1 - - interface A {} // 2 - interface A {} // 2 - - const b: any = 1 // 3 - ``` - - 1. Use `as const` to make TS take the narrowest inference. Here `1` vs `number`. - 2. Same-named interfaces will merge into one. - 3. Use `any` to effectively disable type-checking - -- **Auxiliary Content** - - Sometimes content that isn't core to the current flow but related to it will be mentioned. That looks like so: - - > Hello there, have a nice day! - -## Copy-Pasting - -As you progress you'll be writing code, of course. Often you'll have the chance to copy and paste our code, but we strongly suggest if you're just starting out to **write the code yourself**. This will expose you to _experience_ of writing a Nexus app. Things like autocompletion and letting static safety guide your implementations, e.g. inside a GraphQL resolver. Also if you're new to TypeScript getting used to encountering, understanding, and fixing static type errors is essential practice. That said at no time should you feel _frustrated_. If things just aren't working, copy-paste our work as needed. Then, once things _are_ working, taking a momemnt muck around, break things, fix them again, etc. is almost always time well spent. - -## Wrapping Up - -Thanks for checking out Nexus, we hope you're as excited
to learn about it as we are to show it to you! :rocket: - -
- -[➳](/tutorial/chapter-1-setup-and-first-query)

{@}t%7eL3(Dh~=^Tic&#PF#yK`Tkm` zo~2w@`W`0mJh|BKjq+(Uyk9>eB;HHh{%@XBh4Axldm9TGq4otDh6e^xm8&&e3q#uT z_i@VlRikk}$~ts+7cA3Bf%Bi?Alo>w%`u>5c2{CyVG(s2CYn=qG%5E49WMTv)EB^d z$S!^rD{`S|p7hL2E^#(4loFqU=+l5qsD~!&l~Zsdf;7WBDg41gyo!Q?;4A83Q!;vQ zy-R;>X_H3OpoKfzZlaPSYCUO>hH`LCa#}hSAy$Co250m8UN%)^Ub$oUmWF206&ZrA zQ$LO>J@h$|Dsa6^>r<((_rW4?CPqeXE-pJ;+cGdt0y%y`Xax({8!n@SSLA7hHA7w_ z6`%NhuC*0fwRYIyDe?9mxb?lVXROF8Inwl%;L@Q=;Ji_MZ=fMbq&hGd7f>FV)&%`p$nNM?>C1iqydW~mO~Wo%FYnND9& z@o>{Jg-vT$z~`1_K><7u%zcDm)t%zSL?IW`8#kGdB=GeQOLX*3>Moc0ywJ zoeq#{_`=GlGi`Smm)5-S%pBcN4}TFKQjJ4!xSyB!Qst>GT4aYcFr5XPN$rUtAtCLF z?N)dCv44PM#R_CiuKgm1CZY@vOuUTQX1vF0fj(g<^9*EHEapfs&JarFN$&7NT0rg+ zZjOc_#Cx_oeG7MPUw9^ejt(Ugh$~oDR%&~R&yp~NIh=Xcb+w{xG;;f#G=VeD;8MBr zbl?i&0rr>rdf*Bx2Z^WWcEP6KuC6X_FKBL6a`M&sCt+dW#%-xUHMHIB@L2>V z(2KabCAeLfC14mOaySo=OZL+b)0k?&$dMQ+Rcsv4x%ba+x5WY?l0Xx}_ka!ajk>o= zG7g;E7jSOp0XMrrBXCxSEA|!sNXy;;fEC+yqUbyqyE%L_o;X}Df{Er@CsN_(UF+i- zD;5%hhp|lD5n;21ge&KpYp6m3ICPdDLS--r5O- zXZ;py-oJkjhBlHA5wWX+U9crUgTXI%_1_?tM5Tv`fziqR!HYqI%p?(}v2N9F^lz!e zzAl|4YLUOca+Pxy3C$0!k8v4&<*y6^-{~O6e!Gc@lT|N*>t=r67S#Aa&IxERd5Zgd zW^-0)jh#k&Us?M*C?f)iRf6=jw6uVC2IIY5X~D7%{rRN2oq@d%-m<=^uY&=SbHJ_a zS1A~Qk(ie*<_2nbnq$2}B1ddaK4Ax^*ZCAo2KLv}hZQ{s+;Fp#il7Tmn$RJqy=$Wn zE`=q4G(dDdC@H?!HkctejTzt$P;WXX1M-6PltG%TGh%diYehxc2JDeGb>Nn@=DuAE zY{Ai)AbPPjOF#6QT%X4UMzy!J%YfeA%tCD=lTL^fDT(UP7BSfp^PB`^y{6DqDBxO*qffd44`-g{%(79H%aFEOU(E@ptL7qWCq|0Kru8t zMtH^zfbV_Qf3>4s9i_V<-StQZoWzI9yg?dB9S=;`YP(>mBj2t}qXlsXoF+^Uoh?g> z=#$=gIrn?PWuakM8#H7JJdhy`;~ZPD02Zz zJJJknp*1!(22f?9x*95V*2&%;IlGIJrTP!21K|$vWmKzOOTu}WJ4F8>Ib{NY=shSu zA*hBjSkDgDElOuZFVs}5H)CXuJ@>rHP;?w6n*BsVU$HSuY{#oKuPAL&YkRdF8CxC- zU~-Beo?&K(k$iVXMjN>q&{SDn=_kM&ALsc_zWqh!_U`e*3m_E#nLTaPf<*DbWbJJ0 z>Vfu771kgXJyQ`_-ctu<`g98&{@ppxC*^5qbA)VpxRLr|;v2lhirq*CgSFfT8iRh) z;ZFicOBPF`2=>$m;LncyJj>Evij0c!K+rK;M`4mY(hfTgI!=^8tIG(0>jLs-Uu~yB zR>)AHg2nW`lzGk2&T)~G*u8Lj4QF>XD1(RpUr!^`^8yZNM!l5+EUTu*2GMT7nqgdQ zi+AHAwG=l{v55Q)c|`K@umoyqrE_1}qnc!{aCv!A-X6{K5~q3@pEoRbSjp~mT<`CF z_me`TGvywRfrCo<)Ne|3n&Ob@0e-u~TuqvGXYsrdLZRNK@Y97kzC+ZZaCIdht5dq;BwEzh$*S<@roj?4kc#pSi=A7!9??T-;kE4TgJ?ZP2m z>AI_dQi;_5!rDaHSt=|5!jOe}@LMcWR^>3LXhF`X35cp+{?pd@jQgE~k&|kpS8;)$ zJ_|>iF|-;Y>rP9RMT2yZWR~`B3(4aC7}0NKw;0oZBE^&q5|h)X!j|Q9z31jtTuR^* zgV6EZI~G21%Zj@Jjvzcjv{*#CKwvQp6Ndn!|1zf8!1|K0Qb z7DhgK4S92Sfe7Tp7d*aE+oO4$<8$mJ9uHEQLOdy7Pc$p=Y8rj|o3b<2`v61c(k+o>VygkFF^Kj0b#n3K)_o zF1eLdH}-?@dc?EeB(G#3U(xdN3}OrKl%2hg^GuCE+q>F<{d{|ec|!JK0rl_VNr_a1 z^8qfU!dS{mh>UM%%X)^Z3L2$nXc>`MF6{KnxO`Hc0lQQO3n@SRf0bO6jhJPu@3NSf zBiLTqXo8@we~OQi#nEY*0@LB)B=qkRnvM@rW`#H6cdjD5vDX(&q!kdifal1)j`kd& z&eA4hwLPP+OYL(HCM)b1mG&?_H zBFsb!>|_+`yc33BWmF|0C#Akj(WySmokz&KxP*n;_`=q+7Z1inHn)uqz-Y)?xJMFb7YdQZGF{zxBC^fx>P z52k?iCGFpowz0-z$#^C%2IWn5SC~6e7bD@}DyqTsj*d(nWY@9wFQrvXPI%@z{svle|i_#?J=9 zhLq0EC(y2k!RuJlTJ3#SXh)B-MMqBt6?|H`aI;u2xIpCEXp-;Tjd};G^`g|C9FD@* zz>WYH_eUporT(Q81lP>Gg*sk>Qi1kuXrR?Co|t3nx!6y!sYVcWj-AUb_R+r`J{aU^M2B?BGbEW2Ty^g~4xZ7y zB??T@9edj^6ZBN1HjaxFn2p3B!75U0aOblnXX_sV;IX2>iNT%b$}LK91Cyq1c97`& z1nLX45!7tD&U*iRl2A^YXtF>pRoRm$1AV}TE`@C|^YL3&V4B!Kg%6X-)<2(z_jJKx z9uR`;dGr|=Ki_{vl``*?>;TPjW_=+GvKDpd3Pt#ydBbM5Yu~g+c%~gK&h~+UHJTm&vVQgeZKQ(%ykh;3dbodNc|-7NN)k zq*FQ&9s~Wm%<>pr>VX!;jM8ypYBSneZIO|+#fDu10b*Ayln3Z#$GEz; z9r{ZisS|Yv7O8g}x}v)~Tn%jy?^#>4#Q)GjQBH{f>6Cs{dK!T~(M!B!kH{|tGDiSR z@de_;G&b?vbINw}^I!F15FaFRoG*05G23XiQwYzw)7mN^u9)SC!j(x1gd|jJIsT&( zuu1S{1bbBD+vHF)4tNpkKxtRy#~<8pW+mV z+-u(=G5GcJt_5s7AfpaZykSB`M~}a)W&i`vyo1<6~5$ zr_;ib@r7PFvWV#1XCmnUiii#WDk6?w2Gqu2dQ1aOA?N(I6f2{|)aH-hAe?;deJ|2P zb4$CTE}-nvF&;R4)yF^=E}g%L3&POQYWa9|Z8nc)mLa6G?5OL1s_jZzwm1Jj$JX zuMg9S-mjKGQYw#vi0@O+A4e<{rjqLESZ)CZ#;R_(Lg^sI*Nty8azAVj0<=Dd;xhW;STVwXT@x~vyaZLMtz(@% zQg%cEHjin3jQXXeFClL*3CP$LK%{c`k3eM}gh71va$)eqG!9WjvZn-*FiU&YC*ze0 zd~FXza>q@2_5WB5khGu#Zh)0C^r*54gFv=b$B(M!*}6L3+(eyU5hsBV86HuX4>nHl zU{LX_Xf%^Et?k*){(|;IXcC4cUSs1Kt1-%d`fcQws|HDWcpQWE@iUA7cgu4&K4G^V z)XBsCBhl=Z@DKRBLS(C~Fq=_@*J^Dg-t1=)-ypWCWRxINYvz{8p@e$tljkL(4oU%E z`c|5c4t)GB5ao)%J`-7_C^z-}gQ*o&QvEqwZ>9*XTE ztD;_r1M-OB=2S1k^xeOfy)|(}ni|nb?;NB}GdJc)f|t?Pr;DL^Tz_yBAZP++nRT1s zk#WsEhomfS_l8$mYdtm)TNu6>=-1mHCpuo{t$B2f-SPkwV%7p4Xd7|bFjS+n;QP%q zIyuGso+R)#X&Q1We+yiI_K(K_DC*~XwdCy42RYJ+1vacNRQmVO7afXl?-;2*r^Mp! z&4I#O#9D5g$M4L+C*)&j16{+>4yeAFW~O2IoQ57|1fDf%+Lk8}8vBPp^yjUu*&D# z`ryQU{J}4s1&q>msWN$bQd02gGg7|oC&(ZOW-O$61H2blEIiI%L}tqSN0>+PeSi#| z_hWjN2>y0^UuiIUL@z8)Y?mIlp*+%tQoTHwEBwrGaQE$c+zQ~RwruMD{xu6qt=qR5 z=ty6e|0AW$PKnV)HOaUtNx5nWcnAkq%EJ1muK>R*k4z|MxW_%r2a@$i=nsGTS7{oy z2@%X+&&lbxY4kk+6mJs0rdJFCCB-Nf2na~6ner7qzqg8G)v_XQ6=XY_zW{c{MIka_ z;Yk+;q?A7U3Q`xbmoYtr9R<Q+Lh}%16z1VH?5xr0a zaj8)2@xK@=L;JMvTKYcUOUY}nhf z`t{B;uGfcVSBQUneW;fJXI_EM`BKtMuFGTAXings3Aya*phlR4F@duhVXPlptNNcn zAL%X0@L*vQ&i zJyM$)W z>{;k9UMTLL{(KWSiq))y?XSR5Jlydb$OqY25%f9daUseeAovf3R1F6`A|?u#kh!}L z*P3D!W?g*YP?X$~!FkBV{I5v=lcol;V}QUvGGg?Gsb(y-{kP#?DtE+c z(fiYPZVHn!&?NK1Z=^4{$ipWz9g6ej;UHkcbIOkLt&(aPKJR(S-1iO|_ipga1#vWS z^N)c58O99qEJ<;VBd!pj)AdNN=if?~H0t(R$d#3`pKIay?F!2K;J!HspQr(MD^~%J z+Y^!gIhN!HRk{0`7Ul@`C+Pq92~+v>Uz{$;gu?&~$EdV1I&ArecHljEGEh}Hw#m_U zO0EO`n{?nk<5l@jVTYDu90sUfc1q4%Abo*ouikw3^Sf~O#mkr=WilA_SEmjV;Fp6; zS1Ie7zN#I51m&9`+bahHnIclZ0_HY`Zy(I8=$g!R$(uDu}PDDxb9w!QbbWj|}g1p7mv)p=ml| zTFzWR*vA^2POA>uk2!k}C;q$Dp_c~5A8EqBf4s%{YNsfHjxoJsdwQNv)cRom#Rkvy z?s~vf9Nx()l9-_o1f?hNlIz&oH$WN5v8p*JhT*|0dg_v}GTRyLSh$Fm5tPfYKP%(g z|FI@eW)2X0DAgPjsl=%P2YP39L;OzoLk_KHqZ)}{8^%=+$r`!T@V=L8q{GzoFfWGU z>spq!N{G+kaf|Z**ZYD~;{vH?J&e%MBSHI`Sj}eI+mYWF=h&e-ZMQgt3p#(^;PxIS zVspbGOC?uBD2stJ)$7}_dcK@z|V8$qLSqBcme>& z19xLvnt!b-&CW~C2JS?Z`V&|kb{ga1r!m2MUIMBY;uO4*RP4#}gF@jEYI=~pI)sMF zdf4V4Uaqt)kOxv`5^bRSa?w(tPXk1(TPgNvKq!0w`wQ!=scFNV5NO-hj??VVwz(g^ zPJuo}hcBJS#wYQE4J1S!_)KB!#U{GM8gB)4e*rOQKm`WXS=h56IA~u3D{6M@19ugF z)7EHdNUx;^Zl^Xiw>TbM{s}FGGG7Asb?MVF`?!ztLEYSe?+}hcp7?J9w+bX^w9L5M za%eC>6u$W`{UZE^eYKOObN)y{y#wH^CczI|IkHy{Y(*P1r884g>&4|^8CHX$|IyYG z!bOq0<&4K{^xQJQgZ_9PL!6PDm}5buQ2!oj{;#OG268CK*@7^|n)xX$-WyC?y-|_r zjJ*TF;)~M&oayT%52(if_YA=uR&N73tX`m7;^FiTgay{{PG_sp*X1FRPHw+vItwZe zjz6-~FA)j?ibK=`5cY24W)JWR0>0jM=ozPql*Z0y&;t$KFbwXs)FZRTEDEulep~a$ zwV;3c2GX#RB2>6Xyd)4rcQLGIj##;WIgQ&hy^^&brzyu_&s~VD-hxC|I#kNB<7Un` zV2~#_zG3=fQon9;r(f^}M(&=<9R9O|Ku1UC*ibjJuUAG#Ywm&#k{Sn3m<~4U!A?t$ z7&cEluKPbyz9lk@a~%EjSVw)r9b%~qo} zhc^#cXtCSmz~2E;$1N2TipJVj3SFX#Sf_@I@ZM^z*^s%$rKU!(D*T~(IFqiDLj7fqTBM{U;a{yydD9_ z+n)e$b}_WSo{F_3F?K0l#>fs^vBc?2M0E8Vsw#ohGxkMiFzu*w#((S~o2IBfx|9Ep z$m&voXq1y2_vjcRld3f$`oo47#h*U#5b||WODFMMywlyy`nWw!Z1yu!tbv?uz60bn z(Cvh*pdI#jnc@*+MVmz}nKQ$_LTYPk!NxO{VL3qmQ5Yh7#&&`(gEG{~Kur))rvCGc z@OZ-J*48iP{M>h=V`F2-Q`SH4B}vybHpWTVI|fXa-R&BGBy!h-TUf)@n9DMt?%@s)cGfyZ$EyN($l}A6?)r#x&9fKgz2g;#_&Xp@??5U(BaydTkX)cJa1itUC^GtL2>)3hF(dhVd;$zC zyS7L6EH3MWjG*3N3Ruo-iVts*vEyUx6}i}Uv@;xlB7DQdSoG-iInof;B|*%GgHWaF zZ13lf$k}g2s?yp>Pudyk>!(MXm3~UhxO#U4k~5irOFCV_Z5+1(doUu{5P!>ho&Qym-i$_@)R4FbCMo2DGuT@O` zs11Go*Kc~8V39=e73@q1^c+4r5g)%SD;TF{Z-(9aHBiqEis^{YSYR1#1z4Lit|q(ul?ANlX;9Ps zBY~)&;6i}i@(#c5CZ2t6(4%!OT*L@IYyIS;4Y+t8AvzkojBTeys+HAJ^7b3S!OZlr z>P+|Wqc~x`2*ri$MJlqww5_l-S3II#kpLEKp7(f;YRyC2B~Tbu0~vtZmtANfrBpCHvtA|^4tY5Y z2W%INt5~acHG?Lf%bMSlerMy_wY%8ci8~?ut*>*5zU*7O@^owG+9|cB&S#6(L=OHco8r-Z&nnT)aB)#}UCjcL2GH___D1-G9MtLXOa zf>{=gjg8})Tn%exfzxNRxd_NE3Cr_o%47DwZHZ1SiDc5sg^J&`$S^DQsOYBO_PNGG zlYt758&40=i3H=Z|^-9vK13 zj}H#AYr+X2?l~6*aC!9fFn2SpjsU_Rte`-DiCWBaR&QEenf#q?E?__X3u4fL`sCLK zkMDxw0JIKsb>B{ip7_Nh5*y=Ej5S8Ry>WY{B(H6q&nECwT^}?U8*wMkaSI2RKywp~ zmi662V?Jf3kv(L;`onp?F_m2&VFo{s%|%qPk@Je0-T=Sf5Ua^(oK(m`Dj)3#ZeUA%&$#cZ$!ct&He(2qCdy<%`D zu#pQ4fNJ=CqumV`%3 z=SM~N!-6`eeL(PiBr!K zCbb5>rT)TkUAnp9{yyv$fj0BrF8r0iy*zA|$03g##9~C-cR4$fT&BJyUr5Qro|~IX zNJs!QBEahEEAz+(KzaS$Lbzyma-g@hpGSpAhaf z_X%l&e|K4?nbj0UB~=M?8J#9QOoLmlS|t~Z{Nx(3*j4%X_z>S14RE;R zu!C2%#9m!UTX&fsEFI<0PBR0p8@VbStP3j!^vJrlro+rG{0X)~J%Iiu=12<0M8WrB z=|)`ki-`AFa=sAmfg`Yim-RNNvO@wmq-hG7t?}pSaasSa?g8%^OAuwb-O!=>I_M`k zNa^Y@0yfll4cQ9UiATyL7TcniKLmB^E^xNJ?*Nv<%W!4)OQ{rAw-!{GD2fdz!;Bi; zbZq35@FZ`{CoHf`c?&EHud|*N==$jmNLI%1C8Zg<63}uk?fABII1}XhgI>rz4_2Ev zNbf{koO!oAgp-&O6L%x1S^-a0RTTuQ}zjS;3rUO@dBAbyi4?Dn< zyg4FuBLW%#0${ZvFb^8A^!FQ?2&mtAZW%9^3cPYh%>wAx+4>2#Px^s{mh)g2-$hb0 zWY-~V{K!yn5jTUxQEhm!k(Ong;jX|j?Z9wOj4Jh9P_+*}JHwvF!Ky}swbre|s;#)H zBq4*-_o)7DG{~GOddEHKtjq2kdSVIH~GtYfrXZ3q#QOIyg9-8wSlK zP&fhD95^%)F}kfIe8nXg@J|7?FveEq4N?2p&ZGLDOglgKcNPwQkOua4bro*Xt|MVu z9Sd1RoF)Wt6_Y`lbiopD%#BA>??Zz~F)QdyMA{9ZuJYzuaR6kKAj;QLWe%RQD1Ie- z7yK8u;t0`Zad!Ke^@*ZgF&?>&@lNTpDbN_wgZs*BuD=j00alB9&_g*q(?k^$9F(zU zQtCR9-zHP;KJ^XsZHyUqn+`MWj^c)rFdFQVA(^T0U`oJ4Na~1c4>EOPruHh0S$^PA zaA_QLSJ^lekBe8L@GD+Hpvi?j_5s{Fy=70gdtcLi`6iUjZ8v<1d2K3!@B01Yc z=zWEN<>#-XVq#?1dv9%dE*T+yXmQcTR0gha3mre)i+UhKS zq9L{P`31Kj!IVgeE*O%D-RU=eF7Qc2#A~qY4UGS*ttAYr4qSSS6#kg-3w|F!8U+LI z2^a$aavESn3dkQkf_MBdaltBa(YjrO|Gdi7SXKx`;_OFnx8Z_*{ z1sU0>p9C3zNPa4{p-E>TSQad;8u@s~&6N~1Qos<9Mgl1?p?unWak+_?O*TxFpMR;2 z#+2O(h7hf@1mw;Rg0%P02m+$bF#O<&#g{)@x_i8n;GpI}#+Y_o`a_sug9Xj+HB}p$ zM)IvAI7Ki16_#~_`m!0fPrM;5Wc#D5ZQly$Iq-6Kr~H!a77cDA1WaFzZX}JD@UZpq zkr4AUGh+^05kuy+z9u81Zk*HLu}X68Nsh`^8i(3R?TQIf)I}2cbYftH>?3vP$a=h( z%lWmUM8D;RPPJ}S=jERg5WEnX2zq?>H+4w$;Gog;{mP{;4AU9=yDM#68j)qM0WfC2 zf)p^(5kIYL;>&^G371SttiXRYgL@BdhpM{3nfVbi*cEp@cf6RVhK()ngMQx|nXefZ zW7O8B5}RDWnF>Ha?*}7;VVcbw39JkSn1EMX*l{D$A4CUj1yR6w{7bg4@^HJJ_j{Z5 zvcq8LJlMDgR(Fl`_Pz|IX}Aas4grLd|Bcnf1z@Sbg2>B3X4vd!LFalr9y=4CknPYO zh>VkQ&0S)Cb4GZBt_4=m7O>gWt-y86bBlV`tM1N%lPncG2M z;H7?9 zy^9#Owzic!Lkp~b7Zo1xb>>2v0estLZ=>1Y1e;9K^RPCyDG7ao@3=dasdIQ@G<-zKl+(5dY>CBw>rd97x)l^qkH@0bBzwR>Ge(pXI za%XLH#Q1gKGtBToPw)(5?tGf5Q?)4xZvlhp*d~={SI=ez{g$_o(A*mJ zsk4ojf`a1JI#@;gb!=SqFR4Q;z;oJEX1|S5!IUn_BK!_fEUZJh=T)_n@D0*ojs~M4%lhYFlH!w7e=4{uT;ogVw-|ei`Q$&1bj;9dAz*PxV?@ z6`g!vK3~?xWGkX+qHeu3wofoNPv%V3esB{<@u(a6E#`-kCie;QnG$KC_I?}7 z_?El7kQysvdJ=_veWtQpB%6(+WB2dWLL%J)lN&cuLsF7{_FZ8G}nebu3o)g7HSVRXzZ-dNqWs|Gm!7Uy5OP*XqnjXr!G0wP}pr|J$2rp zOq(B37kgGoT@1mtFN6vsLBDDpm{-MpT7OyZFx=c?MrbEPuq^PFe-w_=|1nfYKd~!= zY{k{BJXb9{Fss*oa3;d+d<8dsfqhTCzffnrzZGk~7l-!$*!#+`D7SFYEdqk5bW11_ z(%mtNf=DVU9gtmKZ(-qLJS4+hzY%Bz#X?P^9F+eMqfS!dMq}%7f zXaYu_JJU67h>~S+-4nYFK#n)^;1ij?79}0|a^-1EWcm7uhpv;VLPI4bCHPm-ic1BQ zAM}_G`xKrz6H;PcR-JMM>PwI&Xyfn1$;gAghmD4;aAY?~p|>V__0(eMi0U>BjCu}e zT@Sv9chp$2Rvl#-a5mt0JXELt{+&)90^R$t|wpG&X590pU=S=;=p>$IF9R6EH5BDa27 z#YBGW(Ioqh9DyWS+NZbbekSLP@(Kzb5bvkoc?1DMC%W+z5H415;i6~+c?v|za!8ww z_~Y;tFA{kAP2_L!^0x!?kC3Gte2B>HRsER+YsxI+j)YO`t~W(phhSjED_S(Cx;@)7 zIL{`7Syl9owp*>gcut4QQ{}l&NxPmEq*lnvB8fY{o-}+;hB-e-9dq-Hv&YmY*_wCI zN18OQipZiCa}TIhn1|mTklaS6JCAiA#pCl0OKlVS5-kyPmgnU%3K{Q`ldr10&&xBq z3CuLQkK^35ph66?f>ATkEi&na+8Ig-TI~A=BO9M7EA>tjWU^h$k+>#bc2X({ZYi*` z04=ELadi1P>8Y{`@=gma!Lnf)88hxoTiYni@K%PivG}gxE-Ux$jo_9#M;UKxujnW3 zc;w)HkkfeF>dT!kPokQTkwoCZoi7y-%(KDhWWwZ`?V#bzshFiD`E0bz4jyE_r=wv; z!?`|(%s9Mjonleg!J?QZjKT>3n!rL4oa9>f*rUpL^>embw6&Yv(S^#&;S ze}zeOF%0wkb}fiK5?JrX=s4E!tCk|2j_3k$c}dJX?l~>5XJsPM--p}%!o%!v9^Uk@ z5&+X3w;DH!%$`j#tHOjBq_SGm+`_ox&#xzJTfIyhaMKWdeoLjmaPn#Q<=A3e+tl+@ zXKZ>^qrI#_&gTY-SRKwY^q>vY1VeSYSC~c*R{8Phc;JL?p`_A;sId6EIe1GAL`V7+ zEf+fXZqH#@<~@TX*rQzx zBVxe}+o?0_UBT5Dx+cInyb6pBd0XgxXQXr~DLy1lo~A7tFts9SvXbV|aLTB`_*b*y z*cANkG~A%nLRP32*;a7eC5$8b(77*{qU~n;^eCmWa(&&#Dy;bJ#(K;Psu0}PfgO{J zv2T|CYS6d3Irhi~H45eRguVz8+I=lhaPEY<@OmVIQYB^c(LhqB^kdXg-P3b&ttN`W zi0hKRauKK)0R|5C%VaD%qEltI>49+%(pG$fue9EpK4&oFqkHy)iPg=BhK)}A;Jd8} zB$thnH>i0$4?f%_O!M^2o^&!w`%!Pn`}c2FXf<=MFHXe2pkeHsc|-IBEDN;=iVuJht{LR zP9*`E+LHkH7g7 z%5$o?3se%}(Bba>>KG%EA>e=WaNBdJ!4Z`7e~piW`5--zWel{h z(aPE5F2&oYna-!6P8{2}KkWN|eKO4h3Abl%C=PDl*VJ|e26LK#3FuE5k;I&BS@&<` zV4!I2euYC~l)q`f75ETQA^!JbwpCd`xrb#m>VIEbkYxubP=o=rlY(%v?x%-J!31cZ z&LJAZV5>W}b zTJ_{aD*VVG+yRQeR}?40zd2u^#utuY5|Y^hD7N^EaC#QH)-Hn-POP;5!0*jVAazEk zDQ5otmJwf-uXdcWhuR(YJ_}b-Zk`#d`e6L`MYWjc!JItR^z31M@?ZN1zOy@>CXhF^ zd;M01-P9VknN(OHODF)*HX5H=De;ZZ^2?f#sTuHjHkZ{s( z!xNzUctqrDpmX&pl#(AS{|j*lgQ9S3`qewe@PgLi`!Ak+ot=YN6v$Pof4 z2=Vd&Zqi)k$IywFoSjZ@PSv86-adVplT&p zl-P<VlA37uDstVu--ZqE00i!B4+*kNr3_AG~jrLzU+Hh^BFZC-v#>AAxNm-AOu2 znp4CV5}~94{mk^WJMEb*^P1&x(bc~=>Tk9Gqp|52&(OPAa>9^!6c5lskiydn!zX`I zt6^RyI1V)M8wg;By+w3YlC-qnDh3GU06<0#(>e4TlAyLda3GO;z(EX{JR}+eIeJ&^eGHJN^a1fqY&}_61n`(P;xGJ4ZTJjt8JZ+s%4-9sRKN)@y3C#gSg=snZIoke+FL(q#rv z1NbNi`GTH&k!@a+G6|>%V>+*-G!0LI|4jqGe5y$4(TkR_rZoU|GeoM2zyAM%_Dxw`&+W39Hq=^v*6=Z zXaBYjIesLby@hz(%{>dHV!eEn)-wmNS(PuLX(HU*V?9K-(9Z)KQuyg@44eENFow1L z(OJx-{lC7~j{j^%!_mwQ2=W8!hqb(~*hymqjw+y=;hmaJGVQK6b*K2AVM|HVf~+T) zhn@5+Ak*oNBt@&7p@y4!YzJr>)z`0W7ti_EC5k`2hWk2rgILm9t-(lzX6KD4rTHY6dYd5>;+=9Qfm`4UJ*%WMLs11VqyeQJfq-@sKx4UT0o%&rbetL zGc#zbbb&TBG*BGOik}h_6%`d1ug7#-_B?&&LRzKu=0ac0!Gd8~Ss4}8Q%uF9#)^GO z4KfSM4DCA6d1h8#-OR`wjF=L^?6atGe4UrC0WAcV0uZk=udZ0aM`OREZhI4(`WbXQ z{D1+2GPe-0+ucAu6Co-^ zS~Cl|Xnt-W&byUYq^7WPbPbhc#!KR5UF%CVG%QNUqrXleA^-FNDu@9zrlW1sGx(Qt z5K3V;O5w+p!oJ#(YW`@9C9F1)ya&1-2^=g}dE2<^0w&&}?24X#mKei>MIneqA)-x% za9Oa{T|!XMW zNJa41WekcT+9rJCojHJfnKGlnXdlQU$g{H-Vdqj~E<|Xab#>KG9hH;x&M;`6#XKA7 zCi)?{6(Xp2;?B?>Q;Lnsf894dUF!g8v?HJ3uFVq(4_~vDA|y6WOMV{9Ick)ZzSG>l z0PH&mE9H=MkwuevkB^5;bDgrhV)VntSmleSvwI<~GGP}9Sa{dGJ>+FcLPcmfIrnp* zLMN}a4A!b1D7=1r^iR~S?c{EU_j_}4)ep`OwOF{)GpgYnW76Avl=1rpenIA_I#^`} z$13Xh8-MZGnfoe7E-HJbPXutwm_j>_E+Ubh_+#yh;Kvh{)(po_5ZxP%@2PI#e*A8c zs(^l=t01DfB;<8E4;eOMDmsN^dle|Zkj4xn_#s1$pap@CV}!9aM+Dj?O5YuMiVr`W zJqfQ^l+QIlIK3oH;FvZm(U9r|s`XkPORI@mjG(2{Ox|r`?)`~u|8b59Tr4W0n3xiD zEV=@Sq+}zwaST2(hAQzrNH2ksgU>M{N3JmE5g(ELu|}4P(!tZ4TLsQrOCSte7XwnM zCJ!D&a6RY-cP10CXu5z>g(1u8^D|NQ!#B>QwA@E|UqQ@YQoVyADsLVC5_u&a^*1E3 zja-9PH#1|7g#3vXUMC5vdfof8bVMyIEFNZ(k&%JI(Gf6D2h1*W-RM#taoby55jY%2 zo#+GEycSIN?dl#)=k&stU=mWOPH&O*Ox-imqcMuZF^-s>CbNPeZhhY)Z33!33eC~e zF!UAKK^cPUE{&Ckq6hAqWOE}hKE8dksY09yjP&}d(!Qx#Ns6Dj{X5toQD?W6(qsrV z`;b>@02eQp!CW(ob}m*(9<)ocxb6*%1W0(~G`V-BC?4&%91V7Ka9p<-8X5vaiAF#M z=qL*2V%YZfCRLuzQ%G{#&;S#uQqYb1D7s(F`@S zZi}pj_^?)M-;40#x$xcwM%LsvN783jTJjU46|rCz#v&VO9`eZ^M2tp!uZvo8EqHq` zDlrP|<#C(@i@%_E&OX8R$GOdcgiLdLwDpZ>wLTgN3CU|_4W|z%gn94Z*RiaMyO~0| zcY^PuCCEgP)Q5wJJIJW_wYOW@Sy+^9bi;L*h1*($p_Y|*B@xPW3;IgS-mvZN=C-8= zl!tObWbg>*aW&JMOcv{w6=USzkPt7NgrGA@fP^kBzoR%vN>5LZOC%!Oo>Q(U)~)sZ zFmec}$$fvN9#%9H4GK#`ILT+m7W#54mc3ZOBu=aTJmb?EWZ;t28Ihx%YD^LJ_BB98 z_6xlaYw?v|McUtr6-44Nd^{Dheni|`>|FJMDv?4NOCE)d!ZOEl2|C_^W_mKD9-;wA zoo-1-M)OzGp6^a?5nPj!;DI^ylpJmc9ytt`I@Zq2G=;4dwYV;MlbUZwfWi%p5<7e? zl9oeInz3`nefbQVgxp{Q$nQDqEf&be2p@n6cyz)PTkiW46h~iT4viZme2{5wX!mzo zehE4hIj#1F=OX`ZV?BP&41tXuCY!mu^%2K85)$viNxbjm{EH~m#zWFYeg|oP{1+4* zxA5q2PjXkY++~N%evoY&%OfatqZT{2`7IZ8K*BfxIKQu{n^6FlCHSm*NmWiM=l z0;CNvs;y+QF3qR$HPc=lPdS^qw{~m+$Q7?qvw1iig2K#$^+b^5OCW)kLGo!bT4*4w~gu~@H~G~8Fyn&4)qig7v1vYOWDoMO#<1{?CceA-5G;0 z$K>JLn||JcF<aUz6pP~JDSX4=$Z8;twNuZUkeqx}utr=O35p=X_Xh7#zFSJz9%6A*bjiC#x1UIeU zZsxsml05<5@Z29*0PK>Ad=d=7 zE}{1UuLj+_?S+-Z2F-O(JX&B`u)f<4N}_xX@6zFcC45_YY5zyZ0X>jyZFkrwfDU>U z+0dXP;ZNC|5+6@ZYt3=~Buav-(3gd=`6V5IzF(>OxH-%9fT3PWv=uQg?v$3;#9r^Iqk01Q97Ug+B$DG}F z@R3bqwLz^P^-Ez;P}>j|c`-W5;p3twuGM7&k`o2VDWrS`U@w$BFq}pN^YcBKEO6?sCwES}e*tukQ=X(p;U~O{11xT1uCD8`b;!(R>+M0r znQ8?Y1qB6@lYKrwWeM(0-iU;k$9bP8z3rr#t$P#B%fH!B5H?uQ;41$0*iB^f(v`X( z2_7CEi=pED$@>jDrfYDcVRDk_0w`p0X)YP>zy?>H`$kBIu}>vLn9~dE#he6oxcz<` zNf-HQdV(riXJ{p;VvFS*VuKiqBG1Adt z-J@ZjelOQx>QivVDnkXk`{6$COELjFa1Xjr9mZL&>kU{jyPb(3X|80|e(878=@pPp zcU7hHv66(KK&ZKGq-vFcQM%5~&VGgz70pLrA9r0697KlkasR3{tjndKuv!KsZby+q zj2gx3l3Kg%d=bVcvkoOBHUXuyGd3ZlWfDD((sD7sXBZf??=s`wycwIJRkX6(dZ2%J;{91S)_a>EG@I;{7lzH_`F&} zVqnnkRg3IblUkHM1SaT=so-@_OxIaa`@x6xKu?JqaX4HphmB?)&SjF2lAdYlz4V(i zJWqKPLK0V;Gj~}|52;|#s!>r{17GX@@_L7?y`5dO&>k^|!62CG3o5h-^@1ohnRf01 zgzOlOuvdjS?3I8~=rFgflC44O7Em({3TCP~3f8+>;gt&I;-l&yn{xL_n04d#qc8>_;o1)6>(S#%KG9 z$9C`$s2y}U*ysTkl!H99=tSG)%Wq_1DU<{bwm$rDdjm{8feEgPsqq-vh*MxsG0 z4hAZQfKvf!DHyUFs24e0c}jE>T$_m4F8>QUi6Z!na)(-p5@^aN_n;Bx#mPZ01B#$q zG5z#>N!cg;4o;Gj^4fQW6ZMr&T>LxTLZ*Ner?)V_@jE34U*)+xP&bjx{>CRdpx@pF z{RH9}3d4g>{_EY8i9i7HX%KZ>{tbN`e-#V@8A+u@*uTRg9Ee~DG`Mc8m^I<%iTdW7 zDxzlrg5J@Z>UUxU{wU~c1;H5`9Vx%xNYdl46f{9(ZFO4gch=MKVfcW>@bODkD8Y9W zoV0RMDd51V&(D5m1RS5!iXP;dI=tAJ{tJh4jsSM zhx=kK;!-|;1eBMun%aQ&CF-M83PB5>lZk6I67cfOmG;C31k&S z7|0n=F@!g>1BYxnq>uf2ignW(~GVdR7T#%2pyI0L+9StTOVBnqg0+s);-t38d5Lg7p!o=8fYZcH3r(C{@ zZ^21~Q!jDyq3Ga;LXW?98OZ`z{-T&dcok1C7DaD!O-?1gmt-khf9uB_F6g-WaZ!UB z61#vT9&pidKD|KK2|hji;S4ZAsLo-J$XJ2@4Fd~mSfAA+Nb*F14sC-+mc%3?I+4dC zI%7av!A!I>voP5~WPa_rYf?DCB;_o(6cWBFwA2#DF%xMIEK>*#6x^}kc?NSyB!3Yc zv?W>ygl%{YF~OA^E0-?w3_Iw#a6K(-;Va_&u33KNUVjh|(B{0|A9oe2;=K!K2P!Zh zB5}8~vGFhexV^fuUFflm^LU%Xd?v>Iu*wU=)r-#w!i1iepU=g`Ri=?wYlykNvGMFK zjj+|IFGGgI(cXyrXRe-_87%)*=Fh*;HeytiVyq<8W;leii;K?!rGRhX?6T(Mvgic5 zG`l?}Lc-Z3vK&^%Z~75%5t!u~eE!rQya_zKCr1x_cODgT@$gUxyYMbu;?kqE39OV-I}GB`=4@EC_4C8ha_K60&E)A^dk-fTVnu)83E=n`FjGx2@A zWQe9!12vnA{Of4j-++MC34owY%~*mG1gUEhb0`EISj*d8M-5#noW;e(`;5o8l2-^b z^`f;Y?_#;rI&1r_ctE2ZxR&b0Noro}Q)u{XP_=e-;fqv?nzLPG#UgtmuyU15pC=6T z)SNr7ZfT;Hb6;X#;Lv|1JO?vQ^h7QL7jgrZ4lCrOVSNnQzqttQDXZt9tYMlyH%>sY zOwMseG>>^c8JhPY%>P3g@I`7IuI&>~pop56zhh!>Cl~M=*{T;eI#*68Y#TvCNuLai%d5GN_+Uw)ET6x2qGkFKZpA4|IU~Kpc``CxcjcOk zw2QU%T4m$-L~~{1!~{>_yE$DXl3GG)u!kmMDd2XD8V+6^)@_cRbP>cY*!G(^Jph=V zR$H@JkO}xSgd^c?LqkH_9KuZ6uhg2()T~2_G>h51sh`F?4?Xu}z=H#hz@cppx4OF4 zHz(#NfnrU$46J2*JJ0TX$o^ZNav3*(6Z>)NiHVjETc7KnU)yKqD}b;)k&C1!>SYn; z(Es#`i0g@npS|zanam53{$v+SSN6k(4l8^F)0$W^>(Oqx1l3e3l~S~vBd?1plsfIR zLby92qu#x3ZAlw_v3EQyDC)zLN{Bio`Gx4GOx7jq4|UnjvlbXd@K|UH`ikh;P#*fr zR()KX{Cu1iOJyEveD$hydvgm<*H z{XTdUax7aHaF~Ox3Bx>qv?2HJNK?FkSO0 z+D=ZKoI*keZt0cM!rLb&rN8N>K4cpG2N_%^@AsPt^*jT(G{p~6*-t#!_XqC)%u$6- zpLG83CK;s$z=2JVlKy`__zt{TjP>(xr2H|cA;kc&Uoz4^odEdnF9t19;LZNp;lGR2 z9=pRfz$R(ePz(OgAb>x3Gw}z`-$j^?N&O38l(>@j^#6$!V(?~m4`Z1V<>xmGqaC={ zx9rUnPb^~iZh^3aH{VC@i2NG}Cwzzlaq{O&{VDz@eE)qtwEG~>@)0e8@4pD=mNFoR zp?pQ+|9bEvh(3FjD_D4FN ztQIK$sOb|4=Z~5`*^qhu$6ox~sQUTCAA9j+5Alz^c(NJz$8kAP6#sEteq;Lm@t}W} zz(08Gj|Y7s;rt2Z{2-HGf=_=!IVbuIe`1O!$0`0-hjLB^%drgl6TUf76#ofspRB>r z{x8Bep+VVY)5z`kv%J^_Q6c7z$02(t2_f%2G^WKjsRA||kC&pcFcYQEcO-5eMen3P`cK%4}Cs)K@qNnK*8x4TH#e*Hi&QZjP=7)?cJ!S5i%bvN z73$?c%*SNTRnL@tT1J8tG<@NusnC9$*~Rk$TaTFps^^`n+cvXXT8s8dkcl}+FY;|6aL{qyUYR@WSTSzZ+FQ(8_sEUl6+L$HX_T~K17m&4 zd#90Cs0F5mnAJNeXtqb4s~5ti7F8?|Ys%+wVCA63lq5!YGoJfV#aM3`%#>Lb?{L6O zr#+5Q!$|UY@w!V{2cJP(>fsil)GWb>)A9#~>Ut3@k{Rh)Uj7pxuL`fH+`#8NdWbQY zOJh2`8KCL5NHsRmQ#Rp$`dHGiVk2cPT?jNicP2pU#)#+^aZJhD;grslcvV%AD39f9 z#L%9D*FY|bAlY8X+JkJ53B{v!BzRjK%7ls}u9xZ^FD%Clt!5f~LtB+<@jA7_^q__o zx27J)Wp$U;_V#Vw_EtDS%Y}oUr(zqoknAk3fd7LnPDMQQAaeJuc+{59kU$-m+ zy>78x%W+`A_C%m-Xu9P>Oa*o6R?b{=)$9o%<^fr+()1@g3Ub!)zJ zY-1bPS;=+0!RHd%jm^tt6f+E>SThx4wacC*qWgwzCnc(6KwI86WoK&T!Gr3Cs#~=M zwvT;y0=_TC>IChQ^>KIPwV7s*eGik{rVv3d*$gZvVM3e~q|^ateN3oqT#ZqhCA84X zu|LJ3%x!kwd2N003&+|j4_tnN>pd(i3b$64{je#Z@*7UNfWXBSoj^N3)Ja^YCrUQyD%sqRq zt_M3shFYIDu1E(U-XV<&C@=DW+Q#reht5<@oAuFb^iH?7M=uhjA43X)SLm+6q>qLg zvJkEHc+uhlc^~3>b*K|)b4@D1&xAQ)cpYlxG!@%!JwDTISSH~NM{klnKuAwr$+>3D z#NqP80@7032s4uk1X*c7T6d|$EUDDM}} zRrIP?BMZ@1A06H^649)t4&_Iz=KK}GA=9juQu&}%={lcz%iA26pSE^sSl^6bh5tg~ zT5J*1U`fK+iP!cY^=PY()W~*sKMkaUwk1Si0m>sJUF01tDh|e%U#YKm&tx7A)8gXZ z;u5^R8Oo3Sgr#+-NBp`WPD3t`r^PdK_lI6dAP#AIg2g=X?1JDD^2vyozx6;K*Mh5a zq-)`EpEM5P6Bv8%%T^JBK=ZSE;W%3CQwS;JQKbM#0S|u}qmzJ6M2&qoub;#y+_N)W z51M<4i`!A)=e%;&vXDAoYXr84ftj{t;(0|R-4|hXd8H-TRCNPy%=5~W#Ow7>S37f$ zEPI!A9gEvB;0wjkF1O;od9L2SknTBFq}-v#fPccKzAxlkxpZ1*?Y$MjS}(_&__9c{ zx#N=Yb}R>5dxwqBoVTy0Uq)T!FOihxKS9Xd0LR18P|-h+hIjTL^Aa7bd#K~c!SE{^ z(P2B>*K2rcb0IJaP1cD>mVZ7O2TpdspwFKXl(ppqrgAZ7E$y^+svnYQ_Tj%@VstNX zI!0YTe(#|HuVtKFqWe;qNIvy?q@Xml_5fy!+M;QhD6wTG;~bh6*4CZny&%{=E=dqPFyEh&)o&PGv`d2viq*V`W6vmfBE zs{SHeTAZf95Ay$zT_op`3ljS7g{Yrd}yl+ z@DL2g$k8;Ngz#tkwHQ{aJfW8@wiHnJ)JCUTKFWCJt>Ha~o3w31xa2BYZP@3J)lCsjQbA^y zy)X9U+?pXf!gJA80Q+M{dP7ATYTM$IFnwEgG+0CD!B8oFNqb=(99`uos)1hbY&WIC zHTKrZt{9w9Tr>d+GKex`_pGm2#&MCcvCXZm_78_v4= zTzA0!raG?wXOdJh-rc9H3n^PmfV`zh~^KbkMlF zh){x1J_O`bLs+Q!No_-6miNwq?iR&a*>aTw$$*xw2=V2(qJj~;N$eVQko7cy~%FoYnn5>E~()bZzDr|9!}TMkbO)y7d&Y) zbMXU7WuMfH`-s3acMCu%fI#5$T?{Wv*aRPadI_yymazC58$SH;P+n-p($jf?9-$ty zu_8_Umk7&uAbrT7LsTsJ-5gq)voI$YK=GKEtG=?smyI!Iepxu$zM$D`#K}u0+@5>C zEOna%Vf|680bB~%eUTD8d(rs(1MZnSsemL@o%Y40O-B=}bZhA+G^$H;8xVmC&(%6%Yv zK1xk{tD}MODVXLTYo)v+ZfI!%v#WJLV9<8vSo=?-B*>=j;M6Hq<~cFBn5r)!)MAiy z_~?dy-!RytuWGDRZ$Shv+Jz1Fl2Zi!a-!VIykx!d{Pz}-nwefbn>k@Z2)RNG)Ht!K zUR|`h0u1-wQYP^=VjcR_7$AD6)a{?b4J#8B?P-6K=zWI-x8e1b!Nn75A3qiWsnJaM zalILb4sTbBK#oDpUUvJ-u4-7CBfQrN!VN9Tt$NkaXD;z>)GOD`e{k3|R9Rk@gokcwOWu{0v-G}4HSnC}BBa$V2{3%Da0C-vy> z8MFZb)c5MUy(WhInzQ@kjYj^@7zD5L1)>l#I}n=4VAN4QxdBHIT>LZ(QE`1-%ReR~ zLD|;9V=`hy3en(vU1G8uy_VpEF~=@=rz6#16;7wWI7c5rVea#rk^}VcQ9PLDN#olS zWW|{*gL@9Mi)0oeOK|@Ws*VnZ*U)fHnuy^Fhcz;%l?2fab{;FaU)Ku(=qvB8Huc6= zflDK{g|6_ztRp!GD@p05&MR=z)XqcdNc8d}2z>vLWRW?u;tXqCwq?q%TLb^8OahE6 zCLOPXkMdQWJ>1VZU$*YZ|9Ka) zaiGIZqtmza=9kb#G-AZA9={mcfz*?cMCFS?;7$F^Rw485v0)FV+JC}KE(A#z*|umQ zUvV97a$B28JI3{y58!J$xyGSp91CnS^vDWU^}?k034)t_n)0$?PqR6SUjDq$G1T&z zKuPq#e8}NKV4gQugggU>@blPIf&90fz~=`y(I>^6!ReHZ-`ICl68LE&$G^9QHz00N zKqF6oB`BAGu*9BYg4$u`fnyqCjv~B0%&Ko?Zm9hJsm4QN72X2VvM)~%?gn`kUOe6t z%$7;FT(y~HEgOzQTHswKZTvcc9zdb)21J?deK3f& zAdJOr(fHYv#`H3nJH@n!+g%cHEG~197({Rqq%szs2a_!3VBlg(D4cEQ{TKSb(|Qs* z(6`|#3H%ZF-?Sc89y!5Bu*mlGh`uoa_Ax{QjWLpRJoSA000~LejPMK1d-MoJ?_ba{ zz{%b(AC@~I%|~NOf9@hJ&!Mt_lT%raD9N!ALnAf%vd3p9mo{yS-qxjBaqR6)MUsIm zgxjK&Ljn7uk0rIba_quQzaWXTXF8^-vK$4#7EmX=P=0Ec!`E?VV|WAxo%HVFU-d>z z49!4KSu$VhVPLcz>9@?08)HiqR6kaD!86(paIT;WsdQ$+peRdFk5Vj(+2;3T8747k zPFm$WcdV6v-C-~=;*!z|+Qi^aTyK%#B#p7=P$AcX+3j3TMZi0;7f_VkuBeytdKHTt zj9K>Gyo&c075=7Q1;cllh5nV!Sl>`h7Oa(*11sZA0Z#=7Cl~?*6jvFTX*6c9*5i6G`N{)~UJ#bYXvx>YX{@&_jmK zayDaB?Db)-A#)XL^b(ctKhU`=`b=gd4>9#>3xX9V+N>>hknLcY5e31SCH)Iu+7dUHct)&8k?mh)xcK=ePbb)5|DlfnC-A z^kS^o?$Q!EW?JftqHvm1;OPF>M^o&*SO(dB?Hoy&LvbVgXCuCD>k894ipf;IKIJq~+2!O9e5(XIaOaohL+| zX21{&-jL_>xJ<_yQ?Sjm^X}0K6j@^^pHs*B*k*qLmrcthG3VtI{RdNam03*B9c>ic zM@y-|`WCzW>HJU=cvHADioZLYA|H)~AeoVkwI#Yc8U?~>7zfLtC1<&-#iws(s^Ha> zWVQRDG>rWt3@Hq8ku*JgPRBJ<(I}>4ao5t9IDgP2uU0jj;3O_50$&if&_-grj<6a( zWHKYo+j|*ij#jZX561Nke*XOUr_I5^4hS`t1W6aUOO9vyQRPbW@+c~iDBAjl*B&`$ zS(&K1l`njsCd%5)P0P+P7z`F?Uy`iettssr6LG)fGAGIxepl0|3Guv?4TjcM!iuas z>?Gexp$8xarAS=Fje4*kUM-%P{wz718oq)1IK4f1wead)f~_7Nrn0bi!q+ zD{C&Gdm>?*12@d5+nz;;KFK)@?E^D&44Out8uoW&1$EbGF`sKpNzoef7U@PdGOa7&l? zLFyB#^s$m792o+W2i=Mhi-Y$LGPy&A(@k($zlOnpFEy>*bGTgfU<^#xTWQXD=J=t? z^0TkyqHmU^dEag)_BUGi3D8%7wtv39I-Og1v;*laqK%Pn{E}u~PP6Y5IAvr0b=-hH z;gifm;Fk9m6^JNi!Q^HaKMPj*8;`B}?H;A65WMCzC?7h1OlUtX4*ZW1KzSQwhryYL zUW;S(sSF~fW`Vt}Smm1oV6I!fhF9OQxFJFYs%kjlYceDt4~z!hJ~&LPItKQ;;MtCzPBNb(=z_p3lg zMFz{^{7;qxcE(x6p!kPquQWczhD3pK!rp&8IGP78{|ZDxjJbbo+fo(WttSpeOhW(I zH7`K+=(`{5{{s^LdPgL1%Nq+h>`d@wQ4~qV-OOAKlP>y%Vi?o+NUYff(+eUg?9+=_O#9&s5dizykda@_<& z+{#4uGD= zu87@-f9y3K2TQD#UYHPJ5cVHR5NZM*l#_m!%<`YdQADajQ>~rRMU43$r;?Kf52hG% zZk$lY@dLnlw;@E=Qn%Hm{;{EdoZ-igQY65GT+b59|Axc~AD~L;XjDe{F@A{sz#s1c z_(r2jN@(jO{IBD*(x1{nP9L{sL%6dahrvps0S|U@hVTAnQo>hjL6w@)KNh6C5$6v7 z@t&?L;K4sc`3r0PjmOwOMEQeD{y~d>bK@VPJi$Q!8*Kk?C8cdwC-Fa|d8-nVPs9ZZ zUYq6RvFZ&WXImJ}?)!B0uCKLc|3)w*9s`K5b?kOwBxEb3Jxuc6thHdNXKrP?7v@EH z*E(Mh4Qwq~&^ic1l78bX*vzaR{IcQFC!R9vqNLsJN>d@VF!?z+9%bl5~9 zGSPo8#4tL1ugb%Vg{fI^Lz%GDc0Cq5Eb;zv+9(};K`0CMW~##7W~%DRm0MdvgrZn{ z&X`Mn6->_WMat}q3-kiQgze^blRk$-(D$CjT2-oVzLt+9ep6EGOUnT7B*`Qy$UR(SYvfz{V?%~X)w}$(+ z;Y7yb`IVL^T%Ujv(_Kf6Y=M3RDk=6NkndA;SO3O^oEK7dUu9-=c|~tIm-wQkdZEF5 zf5fypPoCChiEV(YClWsMvW2yKp52~zmDq(Pfh<<}3;&Sr-$)Ref(=wKmuNE8-!%Cd z>&X`3;ASt2l9^jFaStBeP;O>6rL5QnT1^CFN+O370u>W$3SH6 z$L<|Fz*evBUPo$rQ%-0ET?mo!FsgW}1bh4P-)glpvQnOf$#J#TP}07{FtGTcr+8OS zmqmZRzFKuaRaHm}ulrn*gx8MMziINDq;8Ezd5mrIWvt^kKn)j0Py-Ck1&h)LZ5ER1 z1f=KGdFFlfeEgS&7e5Yb>|I!LH=f_!i*dd`wE3(E!|+**+tP~RtE8H*#ehF^u+1HS z2o0N2&WOLDc7#TPS@tW9ET%)bu4>iIp!V}U&%$7C1zWV#Vn?q1h^DLeIvKCdY$1Ae zU7cr2!)5s}GycKO_3>_7$(~G=0@vz{GG{y304{7Mz+|s$i;T;%w@EKin%Gf2a7idY zRjvB4Z0`b|tD&`Pi)LH14Yf1og0stKj(K}iUzwZs#rCk_it>?I;nOlid=Ga+uO7_r zC16Mbvn$pYgqDMqH@y+fvJRBFd8gXUsTC?3!JYB(z1PBmrANkLKLnJ}isYHzD~x z3t$hwL~!*e3;TKpMHH+f)gBhTaR!sjWxTc)L(9c(ZOM!+@Z6lhXy-%PC=q?T%;M-f z{7d=T8*i!Sk62&SmU6s3YHjlrQ|Gj8e(vTORNS9AJxSpB^nLiLEpQ_VSyQUu^z04x z%Qtm#v~t`WZQOf?ht6P9oXwu_CKE7QU+Jie#QIYDz}g3!u{|r3%{672xhS{ok(o0) zchZyG)4S`L40<@SBR3HQ`ylb?HhxC|_l(WjqfH35Co2@JVe9EaD7q_qq?m_>(_{wE zVjeE0HFC%vxQvxyXsJdz&bbnn>Nmx{2urks4RKgZy{ynGqkE0ZjuFRkW^>8C`(a`< z+t}p&FPB~4vmUJX$8Rw?I?N0Yc_ju#s+92S4@%5PMJw*Q4s0<-?|t;84N6_b$sV-r zh@7_y17cSsXaA{B$WeLrt=`=`c2G+Uvo)0ryU1Nv)L)vuIkF8HjIt#{{U zlCx>6j3w7A2_1~Iyy{PQyBt&%xuv!J{>5n@!s*5@x8W|3ZT!P_a4W*UxHpyzC16!c zWMHK^1xQ@T&9gOBDO=285e3@vZ{xACERU?$rpvP^l^#t?MR&d1d$E{_!O~ZjIkq`6 zl5a3yTqWDgNK-j?ZOeSlAvt<(Z!Sxa_b*7UTsLNQQJwHMAb z@}w6TH|Og!i)0Sx*zGVp;9eS3S8?pbg*|XESqy5rxjwtyLO8rOCOM*MN)ct3QuNud z62h>s$58UVh6Y(geL1xX&C_PA*K=%ye0N2l#d$4h^WFl*;MUQm^Q{qOM084sLsvZ5 z<+U4|4B%zN0F9pyIojb@h}Q!La|)a{7`mwg5MaXx#m_8NN&DPUCq>MrZIqom zH6wD+-hSk=5HeMRb;VXpu0I{~=ziC9zJ$!vn&L%L4m~uhkbSq$Z<~lb2Kzz-Uz@4i zOIzJcDylZ93@xv48L_`zk2T3pE^v3>z_{&d36Tun&gr?mDNXu2GCKPI!uVG^S|JU1 zmA+&o=cypE?@%;{%U1$u-G{~r%W67O6J>e%a@$r=r(i85dX3SGVTO|T>-gms?v^wcFQs&&`p2WC1Z*ktpP3J6l<`@`uf=>l}yjIsNLe0`M4g2K+ugZF8ELfX0_ zp{pzn!Gq40Bbej|_x#?~f2tT757DBlu*|(p&^`EpL;G=SaNlSsh2AhruH{bc?TTkf z`%bUm)s8=D&ekH}X7cxp454EsQ9{L)1n-Qme16Bh-flc|9wu@nSH)DJ)q}`GU2)~M zhclr_XJ=>7vUgWR&v3!ySQAY=$6n7CgQ4frI(0kP?d)5m2s^XB+{{b4D?&aAs^Bt)z8D%9}ePtWL z8frb}16j@^(Q(xE=Sl6GC+{`r@MoLvd5>gjzG{|eFLPRV0Y*#|uZa~bx=h!3u83vd ztzp-n_QpiO3lY7A&dDlu-N{Ef^5W9IHps*^l7(x{bvj`KMCTR_89c5F@_`bx#LDTR z0bg5Fm7`1Pfyv<&R%4rWQMKmS6$8Nh@ylHah(I&?$oSs2CBU$o2}rNJrd-FcviUhZ zOwZD$$*l4W<%Qvxi!@Ky_k-_GQ}@SBZ$_M2Q&n@|&9Xl-)(aTPFVLBqCiE-Q&;^!4 zDMtMT5@JHJzqEozvMMgQhECQK+$eM2l)3P-X7(CYP#*G6ScRJk84SR#oDYb4jZ4}3 z8cBfEzP>SnBOsXcXDr_o!m^xQA;{qlFj1^iE_;u>@Wa6++w~UC((ji-3f0{zj#`42lq94Anb9)nmY!NTt-bjn!GLUgW)i#&i z)?|t8?`~c0xP5nZ{H3P#hgW@#TKCo{0uKcnny7a-=d3#-AJm^CA!eC>+D8vtSSst= zW4lt@p8|*3%LD_O%V-mGVIkcc+to)M_saAa?J0ILn{=_WUxbLb&4vbQ9%k4~_qgpH zG_}6`qL*0uWxXd+@-~8y4)F3=xV}X*RGG6JW!q-tIbw7d+RDUD?<^nsnL7bJWfAGx z_53pCI&8RSd7-hzkb8bXB9WR6xd;jSiDh4&wX;p*w*D~iA%ZhYL+{D%gsnWE(kh>p zwx)@CZU2G+?mEUEKwSWkF z3ytu6KI!7+d-YLHW1YEry&`6X|NwerY#|NK1970o=C_SuO*GIkn^r*C`nANVp}tql^p zaqhk*eu)W7bAM&*GJbPdh@n9Mso-3Tq1MnlXS>QSsP?mH8~tzH-)J)dQ*NPbfyy3QG~k^ ztz9Ti_*!>_pXWzvxw&KVaFyjekTlrAKJ9I=bQUY@p$Tvhyp;2|c`C9}nm;8!CT8u~ z3Oyr$@xc{A!0(@a!h1qq_fPlYtI>kg>QXZ&z!g_Lz-)Jz2{aaC40QzBvE$^#DqL|lP1m6(njtG9z4x??8V2_&fHxZBn`lbgpi0M`3RfdsVqGVUQpzO=^98Ki)bHz(h^}sm!^XaNe}h&ERD}$rcaI zm(m;ADo{G5h0ZtCK6Z;kLP;%;N>hqkbrM@1X?(mbj{uMg;gC(|9ESAZet10`4$>Ll zirM0tc(R!CtmYBB3jF^HsW2lNZhT)n&3v*=Yl! z2ji9BtQH@0Lpt89)<}WMc~U!bX1kQgeH;#%Ql3PW^JPwWLS2RK7TKxAH{9U+xh_G4 zXg>+SVEJ^BF#R$lmKce8*g#`kA)7Q(M1NCDWBK*V`e>D&Nad>(f-bW&7_h5@Sk4fb zTdjHL;Qll!&*Yp4^Mk<0)5EIpx?qK8m4zSP`E5{hhxYXqmh|?$o5q|Ss!$1Y7`fIa zf5tC5C39YJA%*$H$QKUn5V`hS2oM;26{sur`kSd}SRV=LvY%*V?ak2nD*RR~fWX7jR@q5cEaF z;-JjYXW!|E7n>nLKe(b2Op-P9mO4L>mzOUv-U{B3NxR#%6~*WFf7pBPcrN=lY`ml*DVyvFWtNQWk&FlxvSozqz4@dP zvI*HLQfA0rC3}bLk)6Hwdd{o+dw=h{a^L;_`2F*|p6@@sy!7$8uIs$c_c@O9INop7 zoyw5}x#EqPt8C2Ym1a8xdY6+)d(15~W#`^4ei*o8XHIe1P;Xr2dwJI4hL+^Zm#Iwh zu_`7i&gp(_D&}Q>r}Y?T`}OHBc@pbFJze^SWiuBa`a$d9j7`JKlF{=Vi)*$oIy{1p zoae5C&#N=+Ofwq|Q?Z9nQwX*%Cd?ghx&=N@qGskZNtTIQvTAd zhy?xbeCcl&-9yBw2J<$y(cE@t9x-V-W{T~8E$jJs}@s?Dn{$-{v}%L?jCeNPA- zJw_G^R+&z5Qm{hi^Zrz&KW_h`Ve0u|pQ99J=3U($RiX#2dX75~n5-+GF$l-Ep+6Pq zB*EUA&Dw+>CsB>aGbo}-Dv1G_Q$d+lXn?l&-L^}pST_{C?>@WY(h64l4s;gg&zksl4{wMxtAPY z-~IYIZr5$~Wy6Wi`L3150wI@$&FWL!oQ-OmquJA8i9UW*sy4Ixi=54)0%eqNGo}17 zf@aEV{GqJ3hbECH+byboLXlxIP?BbWVaGKmXmf>+BjMdU@&nc{Ars_%LOu>sNc^QA z?vEr100QYYms0J##<^qoF@rV6Zs75qa0|`8ttIm?LGp+Q58BHeTqooj)fOv?3FXAy z_%CmjS1B6E3CBK~ z@jd=xd1>E3PLt8&=>aCtf`Z6GW6g6({qknMcU;ZNeH$YblHxVAPhIDNQj6P}Vw zRaLBnRPS#;xtuYxIHh@I@ivtwo2i`=N%KcH`)&89C2ssRA2jaKnwYdb^(QTXY830!eWg%Z?WU$ zjZ25abSc8r!Lj*@n4Ulb8H-(c5uq!v9fY(5iz6aR_- z6%I=LwOMPQQ+49jAq(Mp~h5q7ev<%ADrT*PT$5mtT!*`9fqH z>-He+K8UX2RH<)m+3V8=>K4@@Wvrj~2{Tf?%kYj4x4U0Gj#}B~8?@ewTX(Y^i7@Lg z)Uawb*0JSTPEI6Kav6#>r{Ht2iPk7`{WNf7o89M{KC`GnsbiAz=F>*=vNP{K74jDk ze$`p;DR!PV4cL9TF!QLM(r1>n_3%TFd!zqFTL1dtjRgcfLP6n3i3cC3Fx72_qfv4D z*+O+&BadFzPrlX3tiop!cnqqdp<7?w3b!Rh#=Pqi{(-5-P*B~tEG|XtH87U@B zM@tCYYTb)~!S6R`mlc^oHSQ!!>gpo)B&|1Az*6knhox5@^cCaBFB!kjQY5r;+-`h8 z(eV*qf=UQ_KZu**sA`SvHD=}2l>&z7n|pNE4`3v|;c%Y|?Vz4TXuO#24$lRZ46hSh znR=@{8OJsLxLBvmVQQeujhZdHz!Mq|E^zjS6xQeL+oPGcFUy67MD%VKMhDk@pJZ&J z-HEfiKjbUFH&zhbUt}v})|EM#!Wy^NL)ovoG2gYQAI%-Jx79arY?8OgtT3hdLFU^J zl?*X$>ieEyY&CrzZwgk=AHb20&qi0>h`Yjjh!EejTvN2e^?GuB-x$1%ORU9f zEPsG(+HRXXxP2Dalo|_2r<~d~0Ag>tU)h$ZxDY(EbSV@uZZ(D&y711Gym8JoK=cM} znrxHgo(GvNBn*x0FZE3W2qA3{7Bcs_q&lj};nT(o-MR~XiggMfPdfB$OujmH%ACjn z0O){p^{!NDf&=Ct@;3nmVKlnJ@#K*EE3As-W-h62oLM{z1n@?}~*!_tNfuU4Q0VkqZmYCaGoztx$O(lz|DeT6w>3*H(i}yycGM>lcRs=q) zl{q=f{f(`uV9xe3YYjisckP5Ktvqb19~bRpi5`M&IG&6uCS`bed;s-XONLUg^xa`t z#;$`$QG#xgm(kE(9^N11LG?tY8J~!{d6q}R^_VYe(V@D4TZXNx?hU&6PSM8}w@1NvSI)=OqT*WKA=ao3z9Nh@O@Gw@>m{D<043>8c%YVZ0=vn|)_8rjl& zOD&sAp9pM|k*#r43c5Hz>HKKxWX*2n)Mu!a)!J5--#)$j@Q$6SU)=~BFP^FYYHWV} z;};`3ax;6YW31-yU!O^*YdMCNS6qh8IQdfXd1v9b4}|7xxlbq%2r%Ma=YYWC2)S`p zrmn~id)Zbes`Z^N!zsR8iS?Op=?$t-Nfj@J5_g&n;(XTaC9|6ovZ0P`nqT*%+A00C zeL8}DDIW$$tVFC~D%ym4cKv4-EN-{Gj)}Ts>UbY8(o2!YPf^UYr3i9Sl606`>|EZf zIz{>=HA8~XSKrp|Mc72n6#31PpH(1{$Rx8{j}?eGV`2Xx;t*btudinr&w09Y-3U1v zSCvk_epxl;>o05-g#h8pl!?i)veTG9m$APTwt>L>pq9Qy`MVFkk%Cmf$uq-y0P^wU zmuA5jRPSxgfnuBQe(|6D!ijV#^qv|?2lP{ar66QL90tu5Goj-F-Tx0>7f%l}zV^{~ z(;UBhm>QrM1t!vb7YF?C6+b=+MtcHWIg;Ei=72c&BmS!bK`%>T6ov;seZ>z?a>zZB z04A#;pVHfY_b}AbQ0s<0fbE%KWF@#F@E->|2gB2 z{`{k<{^yMU5_tX>8UG4z2Sh79OdDe(qq@5A-^NCa_UH%w7)E9_w!dY@65vCmml6NB z1IE9nsW&`GV&xv?J%Hfz<12j%0sK5Y?Z2J6{C$PMJwnzZv!eKI)~bY5O%M`vK*#ap zm5pQ}B{X6eoce7_(1C39w6^Bpox%Q=mN^+9`NJ*+p1)20m%u!gdZWL+awKAJ>#OOX z{`FNu(1?Ey=Fwqa`t6k)5khXk*-q`>=3p5x&!sa5jVFHaw)kpK?(6c~D_bMk|9|fI54LpwpF94zkpJh7NCf}?Jvzpxk2|G)ieW&`6=ze= zU-3K{X)$RY0867l+TRNFZ1GFrCJAW7t$m%m-M%=x8Tb%$&E@?kViwy*Z3 z<7H@vesB;#;t)dbs=2V|>R{1HUf&)+jNnc;x5qdt(cq%h|(jLH*{DsRJ?E=`J9z`MvVj5AH|ckjS}# zl5HpoGY<(c!@@JJ5uY|5M^unMyHf?ftBtU3yH3Q|kKG%O! z3eJWVT6uB0F_JTdld$kVyPuxd`XHuW8XA1i8+k?x<{+oLhoKNEtgAb+yFOUvv^upq z-D%$SPJ5y$23P!|UQOUfI69Y%Yv$Q)S)S?CY#I&yI9jK###-B|?Ga3aEiDTkY%W85 zgPXE&$Z%b%$fZ9F5nqW$$cI~9rr!|5xBg}~lGir*+oxBI7Y=ye@sAKr^~L;N+;1}O zuG?$<*3ANC8VVmQKTPV;SJ-{(--htzuI%dy@ z7DJEYv&%i`vfPtn9MJRd^&KGzmN2H4R}ul`!MIZL&o3m&xPNVC>PBc;(dD036vv*i zrHXu~zS~?ojBj~|oYVAxYFT~=7B8dA1C9XUUW^J->td()XrMUm4uAf@Zq5$}k#22m zbxlxT(7JPnIHLB2ST;JB`M^%;dI{Tna7udN)axiSm|cnB%7@ z`$}E6tNh52^OPB49bSTOWg9fh60-))eM#x87TQ~6b6fOrUZ3;R!M(MRZeL>jt>pzB z>)VdoxG9;s)&5>byqX~`Z9`}VZf^g)oBfC%cUAs-MGs_ClSA(Q1cqgpG)|vo@hzu& z`L)X*+m~(kdo(SQCOVYe(k?w{c8Sg?0TFb}*CPzaP{Lh;%9TT7`^z1z-HyCc&X~*K zl~N(}jc~#az96Iu1F zOg3&q9>mb$WYruXF!*auAzXw}(X%%7B_$-e+Mj|fAeX_@(R;4HXnneqjcxgjr=}hb zAMd$K=pSvtdaqt`rhIT+?`QChSJ63v9_NQOw%Mi(!~XZJJx&Jd|2-D|8EfUw zx0GCz29Hyue`hsTr+iwHmoVe9VTb;aS`WOK^9y~}%_S?X(lK3!@(yssKUd!yT%=iK zZz)u1L*uiXkz7YLJijz~buyg>hYZgq^tI7HY$W~NMxBJ9z_hKFt;c*XPpzreQqH8& zF@!ehN=xao@DbLptpk4FLCmoKM9%nJ^eLm1A}8qw!kxs1CMJFFv_EaFPIH^~5Twi; zId+nS+pI4^Dr7jP<(?fY(TLXOVDsMY_V(&Dap*}3UYp?x@5y`H?8e5OI^d(RLMXR6 zA~?u9fPbl`l31%x$^N7#oJMVqS`F#V(t$AcNo)5cDaRX5d+(kwHZ96e1drIAR=$PE z3G!e&!x|#ibQl^7*Ya=BEODyr@+0L;F39W6x72NaXFJ^?;Jmgn+smyg;I^}2h_ar( zi4+&;$ub|%Z{9nS%=c?ZjiHgBOIAzbXu1L1T@H7cTA(&OQObE{8k0|AK*~SwGQlSu zE)~b3WV*k%TecLMagI)Raz9CEck;+-ew^tRDScMUoyF=wt9lm42uDv?n$g_m12Ogk z1rV5vZx?)mNb&Y|65O=MM2x-WqyU-d*X6i`keP)kV+rx(o??(c24@knju zWVp`W;O>7$9wr-Y-NYkBBJ!+weZX1mj5tpF=iMaDU1qi1nU)trKpodTv8lT3%l6eM1I9+uh1dWwW`xFJtZpVtn3M@Dy@sm14M->48P;wq7*o zhw&)kNjw~1pOR6ww-qbkOdnB+cXPJieo(-EuCGBPn*ClKa{Tw_Ys6sGG-Yh0XKqPH zn-vfth`O}Q`z6&ozoa+1GuMunL*zYvs?o3M-sm<&15^JZO?<-_!l{F7n#CJ$h^wua zC0IgOOhP!{|#yo0&dvU?ZN=ln%ZnYsL zE^dEkg1gV+6C51=G)=tvsq~D8yznb5-=thWuciHKp~k3z9_H?yUL#21LmABtb&sWxDH-)cKxVxO2BR*VIzV zBqH#RU>9xq*SP)7xDm|HsI4Sa9a#m*?xE9R#_0w0^X0{#Hs)NX)drvXonKlC`P4N^ zEm*eMXfC+%@pKg{hEypM;CW@@OBlR#F6(O^kK)A5vyWQt>7ewa_ga%z{B@av3Jyx` zvCp0BQv~_DYrRx%8$&jOYjgckf;(eusEEyYmzj%H0lw8$dz0lcvHoASx>5y+o{ZqG z;rV&HVqK4Rg%nV>^(CXKRoa_<@^+@z9{d^4d7Z|hm0a}6lscJeCXzblGnK>Gr@}St zRPe-ccoyULod=dYBJss;kc?tDIWi!DTeQ|TxAn> z+;-mt%~xu+C)5{qe6)6GoJiT8OM=KCKwwSTv$rX#c{B2atTh&U( z7i;v3SaCqzCR67458^LBwP!_CTBG(nE=bqL8rNTcG} zy5y+s-a-1x;9as|O^9y(>~j2z6_K3AR!7%ny7BqME0{2YmnOyd^-0|+93PRmvn?)p zba~M{WYKin92@1sC$8e=5f#?y^YOb|XoZYP-oFs`yn(|xFrKhY?{#1eFH8ng6~n7C zin!mF&?Neg3lf>_PnYebyoNy$|{n>0)&P6qg+c1mE&sFWv5+_b1g!WT^EOE55z?HYs+iR?aO8 zqSzH*+pY6qtbwv|Zd;R(tk+w47TF&+yNq9!YErzTv1))?GpN<}!N(QHsUIcQu=xzp zFCyif)p%2kb0y)O_o+>Az`ZXyj}=7k&mJn-`jzZ11ESlliPH0MFV}pC=vE~hL}rdz zLWM)mlZX$=em81h<+XYaZUk=Hjqm_9)G&UW*N{&`XUUxHyz9Jk$kzuL8@=FYSyMBxWqV0JJRdTkPg_ccYh}5&Il-_h30W}y2$HQ01CYSg=Qab2 zF&wQqv%Q#ghlpXMf6t6OKF=x^l-4fM|$N;m@v&!Mwuz_y8J zV$@3K0v%6i9=C8XmG=tS;o*f>RJ-458RDW@1Es4UuBaHq*g}oVs{D?ctE+4@SXzhs zVYv=PG=9|K3W`^kAi9$e*bln0oT9~epMlz)rgOSv+Veijyp%_jrqvAh=}mo-kJ#LO zINIn^yEoN%eW{;ZFp@3R&m-O4QUBOvFa*#hyz#hb+SQ6X-HHiWj{K|Ew_nYQ^LukmA=` z{rywn`lC7p>r3@)a$5TvBLUS<7NnZ|xCclAEEzl}#RiUSP2P@)o$Jk;XUXfslWR4| zP3SU1&s5y=VJm&Ej_15#P=#~uXrb*iQ4vK2L+xZ=1r+`-595-uyKb%MX$WbeFYGKg zR|h-t<*;=0?{8)7Zwbsh%H2XucIut0q?d~&-^MxT86;VjLUU?=iEW?V`)m!N4;t8Q z=6ql&SNJJ+DhTD1J9(w6X^xlBYrEmPS2UmDxKkHI8?HS%El3g}b@+Ru{)Y50zSx(O ziT=MnBV?=z&Il-QD4x;BKumDW4sMWZaD;HOE1_5`N7~^1uwAQ#0Xy*rg!U zpX^ZdFKO8@R(?j@4>sim4M? zl1yehx?g}hyveRXJ!w+-qzmILMFmdK38-bX3xzd#bFWHHh>?hF$$y{aCW}M4@`DKX zzg|js9{NADZ0_<#HUY4F;&^Prime4Sgy|dQ1!&+HXbCJZ!JU`r`P%@ zNXGfCRCwdJk;$6$`RA8vM-GiHBQy#`ZX%!;hVsKK4_ za@IKe0mlr`sdQ!PVquM1$zBxx=_hKXw z)A(!6{kaO?=s}$y%Fo*)4#YcjR`9J3;b^P63rO`N=e875d>vxQ(F`}8yhr!jURO%v z!-HM6`1+w(C)Aq6c&IH&PAf}KDqRY!q*m;(=zHe!@WPwc=yI#}0*`Az~cgYTS1vdztjkUJ|fQmV&}IEMd*#U1)$uJxPSGVu@#93Tg0&g}sT!DT1f#2n%* zE=1W<2F=#sqQCw7TGz|w?ZXY(&4SJ!9vqgsSfLvrKop=`MRumnd4F&m83{z z;9w~{XVOQf=_sG7S3Szj#g)4!p4lrl&2;k!l0p=ofvsLXxvKlCt&-)yR;zw*DRHR- zS#Ze6)SYK@I@PTkm&WR8m8b=Syjt9gTQhk?#KgE*eP#8*&)BIY_aTVX3*NY`6&T%}# zad})|Z(}6$T%6g|!=qR_gAeQ3%J^ecFeke%oW-Q|TH6`tE-QdGqF&{K7NAMoPzu`+ zSNT(HF9x7o`tmI&8=hX5u((<%ka@ct>GN%5c_yJ73cD?H26>O)L}4MYawtcB-!S{X zQ4aZ`g%H7*DsQ&wqoMbRQ?D^xnfTJolu^7ywZBLOu}rR$Yuc1dUeQccVr^(CUlgoy6(Btb6sZZ$v>d z2=>RuY-K5cX045lRx<8-64IEh3|%AE;DBD#M)v6Ik$c#mo?uIpcC@tM9H#mY6x5yy zuA}d%S^aAV#VZc3Q+=ff_H5D+{#r$5o|=&%$NirD6GoHZ_RI?3ixIz*etv$F`UbD_ z%=#mngy!-`T0IG)D0!^(3QeH_lBD`B&=YPv@toSo?wf5i(hL9KqEHlpkq>35!IN>K z4}Y#&S#sfU0xaYnm%!S9TzDUJ1zYb-+dem8u@zr@ds$O);oGYKde2Hc$aB}@rVzO1 zolaX)wAJ-OQ=v_BVjIjq_X4PuTjC8CWCGHd`w46X8e3{rdEB>!PS9#Bh4H?Axc1?l_5-QqyTN5gP22+p5E_;pq({gpbSNuo&wN zD9-kb1BQ@j9?re|S}s&Jiu(HYl|K%@`q4<7P!6fSnt;f|s6kD0L~uExxzA;}QERI; zoF+D2%z7kZ4{2B(kBSFS#(=EEqQVPz(ttahSp^Skpz=hXAPSPiW&H-psqP|s^I+C6 z5>6w9t#+tSlxH&cV)*O_06YLw%7vSE?h>|g*GU5aHDAY+A!AVW1RW4E1zrZWU8s~$ zYuRzTP4=ZB;qwSw6GPMT5nn87B~zo9JT!^y%nP^e^?A98XAxW?&oC274lpti26PUG zBc);Gk)lBs-6$t61;FKrp_$3{{)^MD-`0A~2Xjr;w5N5kN1)Ri?klivOL{FE6S+Px zw$fc}Q*20Gl1|06qP1Cf2f&%wJIp#*G|EGe?DaL>uudVhkiG^dtSg&M!&=nd1d2!; zkAHWi4GE=pGBjgY$tN*F&^;&yY+6K!?uc(~9y=Y)r{N6}sKk^8#mOYet zk^J<>30XStD}7MIRtv6WuFz3!d^k=o^E|NWLYRMbM>vaGShU~R1fS+^#TY(=Y=dcX zF@UZJW};EVbs7|XHP$l3KIO%icfTsDS0 zv5sI^d7!r1;>3rcbbFgJ{mq-U^fGFZ7`2#Y?#fikAVq}&#HX^8+3ud#XUMP4AF2#s z?jYqZDVAUL?85C(PoKP6RjD&ySqymv8q3ek?hnez@si6_tG-fIL;?`Y2cfSD<*h6(dXHK}AzNXz&LaylWjzd4;zCRjqZcTGka^P4~MCEk@B&H=|jmG$W@Hp+Z@Ca8f zFkH)lB#O=j{9rGoY%9ek{_0H2MQA3=%PB(e{r3AN1i4){7Oc!V%TW7yC9|el+dZ8+ zz1~)JOo)!sj_}(C=F8Ro`<+}8dcqCti)tE$F}RmA?|yvPdT%%tbNG$e_bTkC1Y(#D zoTx~q*Zl6RY&d*F_SdO&boU(|2rhSID&b1EFSfcPg8fD#RNvwgGBYoGhU(h^nFN_S zl}}fyHYOu=Ed^qWi;=eYXo*As<>c+Lq>=Kn&8RZRVQ&VvjZainVaFqgtLS$!ocpIW z;f9Y%YP$=%ZdKH|GDm}KxB*~=2Bh0|3lY_hD30zd9_P%=qTD_~Ah>ddPM3O^Mw2v{G+ z0)0iVKLwwT&;w=80E&6*IOX7gJM4L1{9eX(nNVw|;l(HP`OOSBNH_vI6<%D$ z(mp9qiHXEM4KG8pECmvcI64JI<)GWcSchEAog$?Cyp}C@7+5SG?P! zuBChhod=ZD-6Yl8?u z+s;PU|MdG`va9ea!Wt{R^o91PBJ0mV(0{Mfg48-JkF5{hgZ^*Vc_RoP{KEa(=^u_S z`Ky>yMQ{NR3)bIq@4q0u(pHs1z~3(OACvs}8(}P{zu)6D-TUhzKYrlPSP;JjHKfAe zbEJd#_s<%>fYByVd4cbrfBK7M{$nDAIQZZc*=>QJ#Sy>U0SmC|TSTvf|CW9~g^&bY zb(1Cj{T2Zi^FXRSj0yJNJPftGD||57TxRtjj!yaOUf;_@A&)hr{txFO{B=kFmpG++ z;nZ|6rDExaU^;0el+~Fh5q;lH@4own0GmcUQB!2Qk@mCIAfT+^Tzvbb{QNZSPrf0K z$mZE!5Ex6lhimS>zvnmg$E%JxclXxxIfp#tG>D)61b*YbhPQC*(OR&gd91KT%=1uw zJlF;VX&556Vlv(~DShcwFaWd5$37U`T#A17v-cz;xW$)Krir#DP&9;goI{j$jGQtdbCXiI2ERzB0Zvqk?=!ofHG{L~TGHOWeH)Xk#Ny8Ho)qWiG*s>Z6TgOf z`|omV4OME&Zr`!6h|30clbRfPi}X3;PcHy-#hvx6d{l^PI0>oW&!LGI5nV_a6%qgX zxIg~pjUlqJ%D17uheHR5ag<+GvMnUG|IfTpPvPc^9zFkGJ%nz+r^wdBS?;{^|e!yAq~U;aN3= zC?EYcOywYI8EMn?pI_mBzv|B)Y!SIsI#s~O-$npcM2nJ`>-^gf781d=I|Hh}{&|hR z7U++^5oUo9*?z0H63J<|WBb!>{_%sIaP6tBMH2FV`oy1$@=YSFUe*6EK5Gouw%v6&`45Na z{$;p!WErsJ^nX9x^sit4iZr+9z_knA_>cXTvj0D~{MC9t{N{gd`Tw3LHUCB!q(j;kPE>ng(=zAn zpF&8yjJsKiQW|6STYYq1TAX^8q!>F@11Ad>B!IMMe}LYs&z1&r=gpVpxR;p-TX`8x zV@e`zS>5U9nln=F!|P*>>oU_e;z6GAvJ(2rNCcF}bZ1=^7)+#B^DaB(3eFq<5#6Pk zyX(kh^`CF06@nKdOL7?z`pmr+G+!h5e-3Zq@U7VSTOp>wLh@~JMPX<7>pTf*wV(eO z^QaTYP_)e3xuZ|8$#NUHdfRs|Vt;2u_27UtssQ!w6Mv;IG%JzT9rtb%Mum##J8x`5 z8BAk;3e>`9;6CbvTN7H*aIaca;7TYI-q}S`j&Ryh){>Q5+URcWM!NKr^c+_e<9_~%pEFndSxA%rGv$x3_;;r4VR#2@0^rr;&PR$HQiMEx%ULez7j(dv zxR+tAP>aBDj=%xNT5~W1=b8|-8m$3tOm4T#kw4rw{sR)ZX8`YPumoIjmH)2pLG__9iF+ALLKLXWF%ZHW7XyM0ijs&# zT_^qiK<@sSVhbODJp4J+nCx3JFu*E=_=oXz2Y|Ebfy>d7eOcj`<>a1@l&;2t_Sy8p z@vqS;Yom(*yB)`9O{u#-sPFm57ys;2f38x5;1(r@d?x-j8qkvXw!Xcx)|e^V-}9uf zQ%+|W@KwjXqvdL=v<#@d3Gi#1P7(fFWut(cED?IwRyuy*C|9>$2%GDqbmc4G*$DIe zp(n#z=_>e}hlp6!Nh}X70`MghC+NyJW&!v(f?NadF;&5H>j1XvpEVn`Ji;I))NaRg zufq4b)5{acq(wt*)@vaYDS!1z(trCaMWnCiRHZ=pxGaY;F?;Z=zEeIAHgtRkQeLynLG-n; zbkFHfWx~&&h;<$SY<))l-;QSbKuY{Avr6JF9B*rL)Lof54o1_1N+{%Y+#WD|<;SJD zJ2_Z}nmGD$pL=hA0_Xx7!2JP|Y~IilvQt!o{2ICQJAS-_pPKmQcUrEVCfrg19Skr? z-*sv_+m`lFV4ZTfar3p!!emoH0(XpLZxbXW-P1mh-2MA^ahJDp zk>oz0oFGPMT=Xk3>CRG*`>crWc_aFYB@i!bV~mzB(%`uPUvL1mzYFu}>tqrSM8z0j z65$Ai)AeaJMp!1j2n~w#Beuse+$=j_uT=*)NYA!yg~;+=pdrbML}<_tF|w~7czhi% zHAJ%`hOB3WqgdR3$)6N`0{&ZWKZvYmUy#jz=J zr*-MZy}!hLXVSsihv?eVYGm^m7la_(C0uv>(}zP+n8~YBmg%OYm8zWMdQGw$0Z~6; z5a&Es;BbjUvyZtuKf3NIU-d2dVp-LE+tkyQue_gO76hR?i;?W~mhGw)({GPZ?Oz$@ zX+5@h%=E!=X=dug)ygr1b2IG2<_5{*sT`pZO|6KF4$JIwU4L(83>MDY2y*fo*Xwz* zvPghdV({gsTQGQ`DGdwYo6C1Uay-l=B*iyp6Nh)SH2G3_A;Ou}i>0F58?`_e%o}iGD$*6>ugI{o>$>%w zT^{E>W0G*?=|aW9aRHLe`!zGOY9|{)2w^ACX0I2M`y2=Q#%W!`S286q(rM1DYjrv) z(xZsZ6b)t?-0H~F@!(6#kmMP_W+{tHln$>Vi@U$=@L5Q}#JnK63HQ7_`BixmZD!mU zyPo?Hm+e@eP?PNg{V%ZOPNd>%4+%=gb2_-HK!GEz#{0Zpw!dqosvmwH375D>Y2GoH z&Z#~YZ@j=6{Isaie;saP4`d|!FiHw9?T(9W3?1R)ccbkgznY-9 z0eLyRD0kx`JIxG?wC?YIIxQ4UnXBNhosdK`Cg;4&kr2*=FeH9X|MF1PePwe$_*X zT4(=Z0BUC>vtD?#H{e;#q~c8^kg7T{u#;wN2gLQ|T-rnN@1rDUPtbaqv<7kVvNml6 zsJGy%1ybbZ$qP)7NUiA@&RDsAIDC9`P0MQs+ryMvlrwh5{W#_G@gV=46r1fQeZ@4V zMbPa=a|^w4;=XCuv*ev@RUh!eIOCnCYJFOuGYR3faTE%p*RrT&C0z8`F!G!K)U{%; zJ)6fSJHHR~cyZP^t_d=x-O32}4u~upp}quci)|6pXLT@WW~kT4qK)xA*+9R6aI?A; z8SELie4ib=G;ZgSPsm%l8!Z4e!K6NK0ogsz0>ek@3@VooT(~`Sfm*u8ot30W8Y6T! z&Fkk{Vv#T#13@Zv~aQL9nPdx=u8lR#!e{J7mJ_ z=>jz99!O=@mPayo5N?Eqbt7jGHLvR0WE(?d=*&e%-9SX9)ta4oru;%ubnq83)$yyR zc+T<7Sez}#a9W$;0ji3FNOp@FxQ!8hnF@a|P{v*0$lZTrn`9Td7t0!y}4D*v@7v#BcW5);R%Tr8-M%f3)~tRxl% zNTU9oYuCLo3cS9&O%+G7Z6o8m5r00n@yl_wOUu=TdyU+KiJShd!@ zC+BgC1&!1D@!fe8YUYXjMipzj#P}n?sX#Xn$?0>*V|%WMt$Zmfa#(amJw$C}5T?DQ zps+)P4JsoWp#k4Mba0=nBbCq|tqH=_c|IoUMO96Lx{_dOH3qp>O!%tOnQ#e)?iU9h z^hrVVZD5E=1JGUfj-$hkO9%}nm+?8r{Z{%YlVG2-Ud9kRrjg*xj-RmmEX2VPI7pLp z)l?`Ky(=}9IAV{K0|)LW#S9a!8RD?nP}+5A2l-K#Sol4|nj~6-+`cl02*jMa(ydmb zu|7S|+6oaUbugM-ph*)&SJPvrqxIs8YHU^C^Eg+2MZu*<_Xhwi>{mx$m-4;f39h6}w78Un_%)PYm>9kxD{zqkC zWg4i4FiB8rsNze{WD<(5`Dt7s?A97K=BH_G4MWscOj@~MLMPU4nVl2Wr=3Wz;*?a* zUt1xsHEE4iyC8uV32c$8_aCXhc3)9=5#9Tlnzi{})`e0r?7x+C|LxAkfOm3ULW&He zICMDEG>c0*Jf)amDO#oErtODzkU>wJOARSb38FN*i$;&x{Y zBz#GNI`qc6#Lq6t=y@(qST+l+>v@D`O#~2I(f_LD%)hk{GHBF0Bo$lZuOs zsI7WDp>SkY3S_ocE)T17tKM%saym8n_z1OfPxCJb+dXFz)3_y$Q_RLx zpPfNyxOeP$0So3H2us9IM5pEri?aGs+dEo1e;02596X;PU5Cv1Mt}gqKEPz0L}f91 zVC3FzR}VEGGwY}lfsXwnaEqdRmHrOBd3)LDE0-unAt;1VDi!x>PLv-SPVS3}DM&pH zTa@QBng-tBijh4RE&1pg&8-)!?cG7xXG_#cM3P^~JP;1S6uaAZ2Z#~Ohh-LLthAm( zqf&3G7N~*Od+grW`I+2avmhb*G^zTaL-cvaP@k~56R@+E)XYml>&Xa&4AM^KqxSdi zb0~Mn)s_Qwu8sVpbQrTY_LJ+mzIB_+6GBj$!fwSES(^{;ZNB*eTHExk0AQp#jEb=1 z_a)Lik5)Vs+p5x2cYx}K*zSZR-`id*qGPx`c&&M&v?41nulXeN&e-wfaRf`6w6wkz zb!GCA@;Fuii&QQ)+DD;gm8xF!ez~{g>lov&2u5>*_M%by8xE2b2Tcf<_1BIx#0r4v z^st_D8Y`*pgQSI7fSGl|Y7MD`>ciRC%+`QQC2>egiRu-FkeiEL*Je3XltFf_b*0Bp zKs#s+E4b*j@{Ii;Po71jbeflDK`mA+oN(LhPLi5g!M*S472)5Rm2QsTs}D-34IBU-N4fW zSx)_7=R31>Jz?dMUeXcERTDXPJ`%7wpsdABv+NNrLg{S~iW@{ktp9zT|5CEpAb=Ia zVGY>_!enTRYn#CRHY*qltEO~L^?Q9U&VTIjh1;)zn#)OAzU68+ad#%=P<2_`Vq|YIdKA9=QiOru6af_W-bY#&XtE4AWY|cX zR6yssX8T!m`q3%g^8;y!+m8rT4%07|JEb;OBLZ16AkIKrU)Zf5MaZ4v8R?DBP<16c zNKEwMDZtg5dB~I#Pe6lGXKUMU+c{>`!_ORHP}G>h0XBuc@)^E(;Px1cb!J)g#fOqN z1KGp6t(~Nz#=s7Rw=m(BE4O)nXhw2^RX0+-*K9soUz3bV2K#+ zb|6wG9z~j?J)jg{aGi6Vp9V7fx%X_*e)10_D+h1YhfS?R0}0w9o{s)`pyf-3YGtVm zQS3@SMiQO!W5ao-J-Y2wlQCe;w`ORSF_X~PIr*=z>UzJ~d7;!>khQE)Xmfvp&zJC3 zll{x%NagoNcx_sR1ZC-<)IMRyt8CwITOVNp?*k?C!c%?e(FP_{(u7@(cgth1H_p&I zow!q}j&!z??9XiRB1~FK{9amezC4rFd*Og5`}PnzN&sTQmRTe4RFJ6)(mJhYYghS{P=pv7Ba@vp0;7?>x=WQ01I!`Hy&&@Ul9>@-U*eq9|Qa|QiT6%rAfZGa~d zwb26vw+wgG_4Be{iHN`WIe{Tf$1SwgoM@%DDwDuu<78SudV8DC*Ct7xoIJBMYmRaT z$@KkuiFJ!+TV7w{x+bYL>wG;tkqXA{hHNLvux1b;&k~W#j4oA5yDJmy7jV6%9OGp( zbauL}2~uOJ&pNvbXqNq`gWty~`}0n{dDR+eRfojEqzGhMVR+pgN{_=wjuFUN!|n|C z@683TD5y5wBdxK$Wq8K@0jR08vQz42c#O65&)!;v{+F(M-XURX6Bw_7i7&lBrN()k z>a*?C_=i@S5%#Bur}5=IEBuuTohC;(5|3J`0=910V64R1`Q$gaUh1&VzNX+WXELy( zwZE#hxTn)Yy|j7y{ltXo`4SV14n7VX%|IbOw<; ziH;n_BI1YK>p_y$b@W2;>3cCQ3y-K8W|snEZv7JYkhk>-t)I^&5eot5fA)2bA{xYuUP>Kx&Fwr0Ou+3XHv8zxp-WABf&2 z9f7PO*U)A$HqK9onj$b;JT;E-)P-xc7aywMV_l*y;b)nM%y|Y??m1$|z}P80M-UcC zIy)d-RZrZj3lIwQlV%J9Zz8Sh&jIaCJk$#(bf%sj0%&u)bSK@iJV z;_UhaS8Q$E#(KIdNPDt1aq^vX*mQNl=z?l;Lz*V76UD$PTif{ofu(8!Zl4?2t#y)dA*KR>9rmUCW_|e_m*jGTM3lVL z#2x{doVmQ-`d#Dk^UWfgxAA;GhDP`X_OEy%zDXg>fZz2NWwok)LaA!eEX1U$^bnA!eOm7kh`6KJqN!yag zPxicE@2wkRhv(k6$#!>pJ@$H+Jysu{l;;BnP`$g`p?MI@>D~kd`ZwQLV@!@0!Wo(+ zttz0%XA@w~j&?>Zu6AmfkCk^Be)VREHB1y)e5)MjB@pa0?PILtNXzX3|6P`^QXAQa z6`oPDrdq2Xn%ppJ99U}F-O7?Y+t=#Kr&0!@qt`)niw|c2Wo)k%gcN+peH_QjcNgRu zX7^a3hcb5J>iB#doAenJ?R~j|NM*q{UmOzCNI2XM?=?h;(&EG6No}P8qm(qO!zVyB zX>XUCk8{(~a(Z~n%E)S)w1Q1nPsgj@BFlL8pPUOhT&&J%%1`(c)@UnrwUKM#5zC0S zdY1bYbz;&PQDv(gY9JoaH!~RP7~BrX25+x}-Aimh>G^)|p>A>8KCs2vxyPZ3nJ`l2 zJ^7U5>_@=CdKxhLZ`~PduTE}&YC0-MMvJSF(b^-KcVbTQ<0o5y4WLt(=JS1wo@o`< zFJ<*z;wbwWJp)?n4~P)kz;l+x zmr{WD#)TCmsK0gUfI$D6RR=|la1%)IzgnlDujh`bXy z?-v077&KOQRhL17bykPKDr&nzTVW4WOfqVefDhlN)^K91!;OEp)?=I$itxoWFseVxZnu?qrb*0IHD6tMO6Jz-8|+;E9c;a5{b*nEh#*QR##lI^v4 zDRiAne0yyut_b8Fdfwm9)aeJFwlbktqqnYy8|3)K*kMHEnyRAe)#y8txL>Y=dLgJJ z_%cM<0kC^)oqIYTA0AyFM4>DXiM&8oER{!X2m>+O=?dfNX8vUvyA0*%e6v-Cfhcm= zNLyRt31~1Yr|LmZ70k&*Fg#-bq89ag)1Gl#?MXB!s}6daW3nJ*SI+h3IF$JiFWZYp zpGkmk=H1moA8R|sO%G}f^O9AXt5+k!6`Bhg4%_6boIAI%Ga*D(FB^1;X8K&KPIc^H zQ0UoMec0#d2$x_1K_71VB>>bpTIq_^kq~r)7U#lo8d+A+ZY}`KH*R`q4S2ECxKdT= zS>HsfY=ez%b`a@vxIxk|_eu?I06DMCHzG9?+|ZyM>eBnP`b@?+9x$jk0c2gu*lG-D z;WN;u11dV-wk1h|FEj`}tnH4NczV3oE@Q;)vn2_TyVNXTTo7t$EQ8-^w5MC_wG_#rFv5kzar^V=pX5Ptfz}6k)Oz8J>hf+mS4I+o zf-CafNo~-5lz}i3 zfOM|=_oBuS5 zJf(}tsB^suLL z5CZ2z*UTQ-EXQMzdTEVrJS$#9U^VoHoZzSN7GH$+mxUz6M8(b~#8hZJ-Os_nrinzf znb+0Aw2-*V)noVydj1JkZ>onFDm99{KXVzsR|B`uxH#WDOK`)0y_3X_MFV)3Ic70^ z`)TE#WI*4oC}nw}@#nfaF-3{TR9sUZR?L>do+=4g3qd^bqf5fY!j4sE3@Uo0BJqT# zlM~CKL!weyM5d5or0*4|rq3h5e!>m2w<4-k^}PlCRISjX0>xd`^e=!mL$ z{l~asdYU|b5CbX$q=-B zY=`XChUmc<4=pv>AFDCuxYrN6NnD?OCBXya)$tnB$g%3l`Y#C7Agi_3p}!UwDa95N{ftvAcg(vpXOs1d>17EqXEXtHmc&tR7oR zF<%tpb%%vmzS?53Y>ld~1``mhl_e$I`gXc1>*XP-h_xj;G}f@Y+tba~u}$KoJZF zump2d&=UhzsG5Q7PPcdwF#i%(b7m`Du|9{%M@^C7*w_TDWDwHWhra}oJ zGDZl6P{^D)GL&hDq;?%s87p+C>`o<_*~mudWLC&LlxmxY5>lr0dzKEzr7h?C_q$Gi zz1QyD-gm9N*0Y}BzVC;n$RVTtB9!*&b9V5%O@mGc(nAQ9`4}kN5#?LKEvP-4p5qXE zY0`BLRb|i-g``=AEyGzg-t$R*NefCjExpZ(>HhAThKAI8y=A@g7#y^$mN<%7iS>Cs z5=u_vWSc16HQv>$3x_~kqFf2rUJjQMI`*M*J#ogsJGXd7T#}{fGdWZ(-$R&CGSroE z)@<%CA4h|9@7S3(R8I|-XWUNIt2WpZra0;jJnC^sc$BokfxrL)Z-!7+?bh=hf4QFt zio8>6xTU$Ig?%g!7eYR)G}=9vmr;?5MdZ#cU&rrkao`aI91fUCe&?s>k@`+j9mCK8 zGz*Y9q`$c1J=>7h=rB=uhoz?F+T`w?yN3?qs(qiFYYS?5e$td_+jB(8F4?M8a>8;p z?+~Yv4@X(pncrVW-q?*}_;WHMgyUuF1+gDER%!k)Yk1H{LKf|rKrYnw$ZWE(? z6`ca3Qix~Z(aqv_4sDdYzRqT?*JxNcXb15*;WTjEWQ839eq#Ju z>I|{1W4(OxQ->XmZhGv4Oo3YDP130dKvTuCEJGE!A2A1vH>#h4rkS)mw0x&m8uv`lH>z$$O4mrvmA!CP> z?0AhoMD6Pz{BT4UzqoLbxC5f#Bk6fdD*rfkvNw4itOtB1#cE}5n2A9m&ni^P7WRpj zzK8*PS>vxP*O-bzRSGf`deA(uuT`oc7ZoWd>GC>t^*+Gnr*8b^fpI z=7QJQa&>yi0C5du$hm?vJxagP@u++T&V0kSf#pv}U%`f==q516VaXIF)UBZpOmxheN$z~Fd&bK_U#cC;hn%>^?fQl->|#WMf0yZ}G1E1_v=T=KR{ z2L8_g6=qQ8uU6fG)RZm#a$N~zqGBfB$FMBRy)Aw2{D0XY;>{N?`&CJA8}EZGyJN3#_$@^-`khts51^1^~d!@?orO?%%%@l{7-iQTR# zyZ?BSF%|$*Ccv5Wkda-7-WV&oo;XwRB1-f1i!h@f!@#L;nA90M7S>_C>`kHY2h;qq z%TbTq%tH0c;|5Ya?#3#95oR|CQ2Uupl?>Ih;1?1yn#xNZ7M^eO{b5z-P}Fs%z$WUlj8O+@-=B zs>!=)9jaF5%O*|1i98R8)QJ-3T$#uqj~WM{7mz5?M)Rm3wxL8IHsiIZ?TcHsF}ksC zqxYM6BPif6*ePREr|vfgYE|7@J_(74J+V8jX4&UI{R9d;8(`cKccUIypD96d&4%I^einH()iu2~^X;=)LpJ(`P^{y~(+|l*kjRUzG zlO8V+L-tM3Ya-T=siHX`eE@mr8htDA@CxS}RtU*;SIZ81$Jmw7vO#n@v5(too^%>Y ziTshjD5c5zR>C)Hm!nKdSAdn>3U9aQXW??-2s=IW!FkmiLlJ9m^ts5s)lNliWAH$- zCosQ+Y@^4)TLNov@;&pa&SgRhoQmz<`K+sMLo0Z;$L!gSA$=npc6V%HdqT1(wn8a!v{ln|NIRpy#Pd((K!R;eDM$|18Bh*5cP@Y z8oc|Z+#&hg3>8pRy`K9DRr6M;cMn>amo1&6CG$GJEpTG+WN9ShG{H|>-GMabUaBA@ z&?ymezt~h0!WfVsI$g@y9VGn4UGFRAs$hl!J1VM3M(7I`jRiHP?m8gD!>7$ew)30@ zfQj>%O{_L^=lsbp^$Gg)Mkb&56_W~z06<#{d@Mj_s$&j;JV4=np>mK}`L+KQ&u+Yu zA7%rH8jXPHmXO!sVhRt4{V8a+%YvG^U{0$g@J#xFbx>JGDwnzngz8BhKfKU&>$tO7U6UC3Y`ODSX-|)#g$%T zDz89N^OCGn8&pDAJlh*3f@YMKck zr~sq<1QotbtP;s*-WGbuBmrc3y79P{X`zpo#qY=CHKh7+R|YXzPMh~c4SpYsF1ig0 zgHZgJh14;?e;RvtX4}_U*JK}bV_NaS3U?^o({8vhQ>-Q1B&gk5!Pyy{*2jFAHuUQh z9&nQ;1Xmj+{HZH(00P~>cUv29EPAQW6!Fq&2ao+ih`mumLE>_ZPCgR5XcycInmR}! z+^-t3j376j))`{a3BV#$!oobUd-Z3-Q5iv3!C+<)?vxY1BFfbXfzA6stVi9Etj z(SXcsg|if7R}`gktPoTVX*?Bzc41qaTIyMVXx#;MazK?h>p%YGsyBs0#EvPt4E8_* z6Bdw@v#KClgYY<;`CS=IpeAk~LK5lr_gR9)Y^YGF6A}v9urH?=K*3CD>42;qLX;9H z6ia|CB?ynAA2P!>+kK!OX0rflWNv*mrjT6%0u0kg{~4%Lj}m>qY3!ib)|m0zGboLN zP#FgglCeT8CYirLgmSLBXjWae4%j$CLsO7imw}RH*Lz!WK?cOmp_G~I7}N?Di*d?& zrNWvvS8~fZFY)N0RWsyqkuo8pu-WS;XWlY<%DQz~RClL53Bm&~)E=+dj(h0bB{xNRsUN6C`$8X%GWS8^p`IG=S`ZxnFrw@4tdfE{ksTQpH5!+) zheFuV$?-?2{3I_KFwafZUhF)!@!&@BF-BcXam0grrtF0PAwUY*K-1v=%=nnj(yK82 zibDSMnWrw+o7GrL;u!=>wXz&&u2BXDc5j8mjFwEABf+N+$Q|8a|D1LL=fj|6OUYXw zDM7qC{bF$Y^M&ZzHcC;d^<*!1eF6nBsaOLjw4y#JTuS~WqT_(@aT6w%A05y5>%wqG zx$OrBLxYRoCh#4lyU%xb3bWM!yhFbP>V4nEWQ;SlMT2or_##Z3+*Tf@q>a1I9#vFe znmY^7O0AiorfE=j7Uj(bF)(0^9|}K+!L()CAQ4kIIsRyJFHCRJH!gjy`PDmc6ZMha zDAa9$Enm_4T<}1-hE<$juB@wkNeKs19dvyH_qKBYDMsH-uaZ;$2zZWi!4NPYbzr7M}8#(5+OSzgm zM|G-SWwHrDG-pHZ>{xXJL2mZbb2lg z5`#dmZD&#&(7I^AgBece_Iv+4AYdF+kMW&gntY&-f}fMV8zBAkB!W4cC)agP^~KdX z(^+tXq_HaI76VFRQwq0wc7?3tqu6$lhT!)F9f@F2&O>tvygGLQXXe3SsDm16rfNI& zc}|Z8#FWvN+@d)!`Oed)&6bhwFs&2PX$%pZllTY})T)mh5gw@vHt#3Lnbyt{CQWnp ztY%2@_YGhW-ou6)`_7)`dt>HC+^lu-+j85rP@io?#uqgm!^eo5sjXv220dv6^z@7^ zbVVi|JqgL{3@?OGXSiPc{7UtdLx*3!YM|0P`Kj(3hC;s^jE8qPqLdoO#k z7g_gVG0>VNN>(oc_3zS>9(X{R1I~s@^PVltSzA=X#gmR9lu7VYsmz)dDB*8CD#_Iw z+oXI?EAD_QyGLV11P@Zdw3(nA8w0^g{%>Z#IX$XJE!G9e!k(KQJ|!P}jjN*O zBVZCD9&^hCTf7D6*9ujuA1AGX6u5#_I`#ev>!=-{yuqM)kz3GE!_+XG^#kt!0ho-_HLbW6$Ol4goF3qk4#O0G?ot-w)qyO=?E2IZffDRe5~E5^;R$*Q0~nRe)P333(#^Tq@n zIq$5T3x^#YtS{f=47CK ziB*U74b6JGGNFwF7B8!y`HPx&8bDOe4K)jx$Hd`y zI^5R*sqoL~>v~K~6o2#XpWT^JREEHizBwQP_&MErY8}UfY6{^>7chl zaF47HCC{h*3YUs!Bmjh?YoYltO{+XSsvIhX=Eax5zJxM0TocH5)I^9nLYhGax18f+ zwtNQVMz!Q@rUTSaSOzEb-YBe$mU=z$q_7Vg>puksI`U6NhqKl~D?xlr#q?f4V*)q`e$vHrk52&=jMe9)J_eaxRd5Ns+6 zg$3j6MxFV1npH6f_BA95I>k*m}qiu6|~`*L?I1`(DFL{5d}T1 zZhR9d0IWnt&q42;FFg=PV&>wZXgTD=_ml3(KL@KjJ6J^1KEv2uSjP31&m`eDp>l6m zA#{@4*4+MMv;CD#5^6NmJxEGe(x3CX92{xTW(_r`0wj0-;ALu|Tqta3J{LchP!UH2 zIP_B$ijnx0M@WJ4Q8=2K^bNYl-ofh|x4(g?yk4nin#myD{Mqc(c!P^G;DZJ%Zk`0u z@M}VO{3+luS0H6mSP=1%9(tkg{M}_EcD)Bz@rXm!t}r&K%-go@3w!0Cp)Gzw4;8~n zbxwtM7m)v+2rc-U>;lJl!ep<9;=uthcFNW>+S;Qgh=Mbl$k9;58a-JnLN3w>F0N$G z4ukB|dKRrZtq3>0i+}OY{(PaUggY-TjdV#ucG8YyK3c~JE2{CL6k`hrCBJ>t70i4Y zlxQD`>(qSkM$RZ`5cjkSJU|@$Rt?n&z~Vj(s9N#& zf#x-+-J;7e_APdMu@xRgz~^?Xi%=@mVZ4PGi9Q+F_Ams&!#=0eRYSD%6l6^6Bg%(n zw(@GIIZ*Wg`8_^z9uh2IoQfMqB$dz)AkbT>xkE1L7j@-DIs`V4(Gxs36xdYJB1`sp z7=SdAc6GR{_&=(UU6;NC+5v)cj=8SZlk(8#&$aek)y-WQObVkW5}lr1Sz`bL)S_|g zK{PFJjR{p_Gy?qv2#QNb1BuHq*qFL=YFVT}Tz`iEc4-g+e7S0`1+qIJ;{%k@V`JGf zVAV}sN*NHszG0VU%)VW6j+w5*E#Zay@>XTR22su>Qf2t_0Qc5{ZV#`!Isg%egi@n! z>j+6BlE3{x_8ekOLVz?2bdRVn$H%nzox-EwsWK9!?H7jjCQXBxORZ4>PV zfkgYCi#f^(*YTB4nVwx+C-{2Izk_jtieC9L8?niO#1wYqHTA z?>(~RRMWk&XSO@k!h#HGy$mc*zWpyDR@-~xhD@-{Fq|{{PizYyH1z{#HqH77hs#i|J-0PNK|Fx3r5LE6JIkqE#@l@Di9&?$?8 z{sMyPgFy}4u}S1B@D7S3FX8GSf=&zjtGn{X`Oo}A0rxN0jPBn`iJ-Q#cdV}z!7F#w z?&0PmhTQ{&?a>M%II5uv;eh<;#u!w1Yya%xE`GwlOS}2BcBKHCsk3BSDRWu-h7mPN z|E00Cal*+A%R@pf7t}vgJL>1kcJhR^lmmY2+zUa+zNo9}W=%(WpgY+!wHc0G-x?$$ zDC7^=Yu;lU`4+}5lk>uFoLKFkKMoYbVWjZ_$qXZcRdV(`E;Q4ZWqcGw+)W@t-I;dv z8yyuLpC5jdGZiuxlu8H}TKR=gRV6(FE+X9!E!Q5<{;hVV-x|apK4~pZPz0Eel`sX6 z3>Zm5ROW3iU=tiq*X4!b$yv-ew=_N>1hY`T0F3r0(Di2V&9TwoG|QI<3OXFREu!s( z!i@Kzv!c<_YVmqrA}a>M5!8PXz_pHY{QJ-l{U9oUK31|``#*wgPhCGkuB;q8OrSEJELV|lN@)R zxtMCB9st{|8FiWfEa>N!qB#%8uiBZ0531gRXaZ<_gfU|(DF{^(s*w)iGB3QZ*|1%}S6mZoQ3k}7hwgb2;VATiq%CncLFfL}+Nk5l4f|SaIPbP2h~ky7yF4uM;5LeY z7BsW8yPZ_mtN3FGIJomM#|r6HZF#axy2e`k-YsNJ41q1*x}3%)b-zl4G@map<8Y`Q zwa>zy!xThp<~m^Ge2mtG0fmqQ0-yn$M${JVc{F|Nk$9ed~PS#+Z>mVpbJ2?ni8;&HqBscpt)5^`4Kn zT~)|g8VNaH`4>XYFA<(>>h9xhtCoN^LlLK+^Ir&9|2LJ3M+WH&?Ekl^R0!*hy}qrf zs2D<4P$#UP=6FPh!d-|UG@L@bS^R{d00K$+6<#I1NKct2b< zlYx53zNhbIXdar?hhYuZ9PE|C&{68Bp9vT1u diff --git a/docs/assets/nexus-logo-black.png b/docs/assets/nexus-logo-black.png deleted file mode 100644 index 3cb8e10665cbcc9200ffa0334e2ea499dfd3685a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6815 zcmeHMhgVbE(hnelAc!I&)ldYaHwlD*ph)ilLN7w-B$z^PVxbABGyxGVRUm}ki=s%q zfFPkGJh}m?0!s5syhWeieSg7wCu{FBXJ&pgvuDrjwbx3Np}qzK9XlNW0ASG4R5Jzu zC`8GF_9Thp9~_4zy-v8O>Zt+%! zHgxlYdwMxwkSL&xxB>tmEh#MtmXrodfq+snWI|FF0HDgE_z_JOS&;S5EGkH(|(w|WVQq^@Vg4eLy6a1&k%S6iGl;Kipz>i@+#8-fj|h#$r)^{ zrv4|K^rgh>iotk;B_w=(eZ_rc#E~c$2`L2y1qn%M32A9Dl7<-CAAxc36GNc+{xI^F z9W^-G5#{EMaYG`2WV;TxkXVcoFE82A-_IX$IywIB#~X|C{O-lcQ3CD>_ktrZXbCBC zDT#l=kyiUR5P|+P8>GBQ_&Io!K$8Cmg8RAsSk}Lx$ddmE!?-#B2N+rM2kd(i|5zKu z$q|gk-g1XKVt(S1WZ!dq-N8lTCpJXlAGIN*^?~(}PHxWrY7Q8iS$(d_Zs~J`Lp~dC^-}0@A~FyZlpaxlQvOVMp6#NL>|aq9Kjc5c`kDDB z03t!|qo4ZfkEZ?3C3USb9cfShIsugFgc~s!0D$GDmYS-GAH}Dso_J0Tu2-8G86$Y5 z-G?KmqN<}WwaLj@uqpC%-%xpdhkjN?zg~5wP3n*$(osK>bLQTeuk^RX=hMvTPCb67 zepX5q^~&ebTv%CC@?Nuy;t+DG`8ivEAI8_zKxx16iBjnrv4}*$l$55R&_kXu03|K( zf75?a4*Y2ow=@%Fry5B;*U&=^8?)twJ3FxP;=PcH=9Xi5?2L=jlNC;Cr$_Fbiq+}8lew*B{?w(E; zUosLzPL))T)R?Wg?QvAkSqQItSWCcGMsyZFPGt1UiR;n@!MA*r2`ukEiV7E`f>Zkfc%HXC-Jw5|;VPIm z4ljCHf8S-nx;*PR|E{p!tNR~u;+OUc{qm}l?7k#U^ZVNzOqb}|`I%VR9aud193fVT zfp7MFB{M(JwiYckA}XS3LS3TD8~qvz0*#%VYB;9#iQj}z% z$8Uij2D`lw7&Sdv;4e2_j-q)^d( zKeq0rdf|Ig5s6QD^b{8O=Aq!dZ8bL9cPV=E#xFij(e02_&rR9W$osf8)l@6h^|_#@ z+RCEFWws}Rk7(&=5yB{IQ;2iws_a>jw6C{TRPygZoz8LDiMl2>;+|;`l%s$sv&}fx zNuCF-e+W_N320uym56>T+QSYm<+&d@55j{j;wX9&(u!&sr#JYE_bT0%?JGs#Ejybu zpbE8m)LQb|`o0;$_Q35zM7QqI8_|_=M#^zYVxRn$VwJ87#LCj3@pt^?M?25s!6PpQ z>vzqD(H+)k!E4-fb$(j5Z{;z7*pSz=zilmxuB^&dShv*q?;l>;mFC_HdGT_I)8;Fi>srD9T6X5^D=qFDtcEWqQ{GdfF8Ng;a%cm6n9mxTP4lmO3=t`; zX}v`0e1gCGiQ9ec-g;G$&&$Gi)dZvDj{&0ETy5Ca92!dSv{~vJ@OFT7-j(YZ7EnB{ zK)%h^AJQF%)5J23P{+s7SFMH8FPYq9A%gA(UZsx0=yCfRPYmGuMN=F;6bCiMhn=Mu zyW22qG%qfpPPb&ii$XjTd5_k2+`w&~zubtQB8sp>VqSkURIqsw?;5ag_`#2gqL@-# zpPEIp_QkZeR+UJBK;)g0(5;f&k)Xq}@qy90marITYhA*Hou*3@1t3X=p>uJFP>*w!NJnqlw7joWLB4tg?eeM7RZiihsC>nn(G{NRji~2Io_3`-%jGB) z$dV$>sFTHh_1S6`a@jUxJm=qn3h-(b2~6^SpNDQifXfj5S(8X!HH(CYK5wD==N7Z} z?>;vR*hqB2pQ`FpKH492iFrxrO#vGax0*e^`C0UF5Nkkv#T=e3@21vd3&0sPAUUBF zUj%#k;akEscmitlN@77d0PI%RfLCkm8TodMNM0%4OV(mg(@9d_PH?~);)hF9oZV9j z++|XdhfMVYN9GhL`{+7t32G*ZyO2U5ZSAWpCXtOj5uEVUG&{ z-~F&0%KZFri!;OLNX*mF0dZ(+2+Womn1xO`Z+bZOLf6+)JrVm-Dz)J&4YU;i7QDI4 zDk;ZeBFMU1@a&kyXgF8~I)K<`w`VxP$tp=u(A86l=7y(6`{)rO=6X|BS+ri6EJ^zF zG-qpApa%2TcJLJ;n?|`c1{O-p-fqJ3ny}A8Iz)k$*lYZ^`u5*;*eh+YQ@EV4PN&;_ zeO{?MT8tm1XJru4XYI#lo2hXkoXPvPusp5RXCaYYO=hp#duise9rh=zpVRH~GQ)S= zb@gInYWUB^5Nkqj+Vad)s+3^;Ocz4;CJROT1qlj~75i4>FI;=(SuY(~EwE4~pBMre zB8&Ar7|be;bHOx5!y6BH#hW{7p3*V;&f3INJFR=pE>b6~ajIFo;mDZGG1RwvYEq>L zVQq?0(Wh+SvV#|UZ#8x~}YgDt!aZm0KXA#;G>m_kc7K9gVGEAj1c~MV@ zT^Y3{R~(wYzolVB&N^henq;vsOPUkx+I662C0;AJ<*Wlqr0j!Nv(PFC4_gm1x>>Hn{%HT669_mpq8CdUR)kRgf%5)E=(iOe_#As>M z_UuKI=)EuyIl_TgOM3Mh@FC|!I4SYni$h6L>K5B8GiP6K!L4t=pS zd4as>y1)&ep>3vu@MeMsZ#Vk_Yp9tAmu+n33S_G!YjCdLi$Y<|p{TX^i2(Zxr+TgF z>M=91W$qqr$D&Hls+@|qZ9Zo&iUH3O_;ao#rBAi$)^Ko9ab$D>lru~c2`lLf{zgQ; zFac8>Z)fU!e#mx8o?|EYHv?)KtHc$f{W|c70L?MY8KNg?HRPiLZqH>o%t$_VW!v$sQ;ao)O|fw*-=fxT}}ub^*t zOCYBK#Pge@uxqVe*$xjS{ zjJt4?J>-^iXSI&v!w+BxX7M!#Tl5=Y+Ic~HVl7-aqMi4y8;hH!U|;DFB5!q^@dmNN z6+2@V0|ecmww|igi5S}(WwvAN#n>ZBN3BFkfSlZDx~|CnIiTe2=(&=xn84i+jIevi z0?*9rgDXm_{%47=CK#=AA8J6w1@~5Ocbp17gCzR6l*72=e;ZMKyx%ke$8L@i${1O< zPQ?sVjeN{_Fm%c&dBjHP;qN01M**RuK*z0Ss*e69)(3u}SArtF=K|)famNklBSO^* zn{N8GkD?qpwJz`RE{Yk+;DSrcgE{%x%t4T40tS$#h;wl!OcHU>k-PJxCba zR1njHeFKMFNmc=-t9VnH)myGO<&;&Lxitih^d)bP5p_!r*Mp4vBnVqA?K_9Yg75^& zRt9sTivmcOav{SEo`3A{VdAONe(jLW)8H6X4`F{ti@m&Lm8`Xp+CE)@HaD+?Yzxv` z^ny%Xik)s|oNbsHprU}S%i@-O z;y%e5WHv5SI4+8E*Kf>9)hp^*+p=Cd^Nedw_2 z`5K%Ulg;sPJ+e3&!)$;R^)NNfMPr!)?iEk@Yuay7N{dBhv$=qE2k<;=v(2YCwgvI} zEmtdUo;XKaCwo-l{D+UtnD|Whu1%SYe_Ib9=K`p258zxCjTm0kFY@5b3U7sulp?BnGyT@-ky>rYO zEDlmQQp>hw^ES~g$EswjK3zv@qs{7mMsU?R#UBY%?%K~TABFT(v#Ib zg_aXVpO7C!`&SPz4dvfJzRF*hkG`O}cc^n2!6L=i)^H`yxM4I&N3lJ5V`H^1sDgcs nRR9zxnEp5YH{~E&WFs_LSpw$wcCwNDH;dLyeKq`b`|$q*mc6$_ diff --git a/docs/assets/nexus-logo-white.png b/docs/assets/nexus-logo-white.png deleted file mode 100644 index 6e42337f87b844e79e7dd323fcf4160643302038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7044 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