@gqlkit-ts/cli 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/auto-type-generator/auto-type-generator.d.ts +62 -0
- package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -0
- package/dist/auto-type-generator/auto-type-generator.js +540 -0
- package/dist/auto-type-generator/auto-type-generator.js.map +1 -0
- package/dist/auto-type-generator/index.d.ts +4 -0
- package/dist/auto-type-generator/index.d.ts.map +1 -0
- package/dist/auto-type-generator/index.js +3 -0
- package/dist/auto-type-generator/index.js.map +1 -0
- package/dist/auto-type-generator/inline-enum-collector.d.ts +31 -0
- package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-enum-collector.js +157 -0
- package/dist/auto-type-generator/inline-enum-collector.js.map +1 -0
- package/dist/auto-type-generator/name-collision-validator.d.ts +17 -0
- package/dist/auto-type-generator/name-collision-validator.d.ts.map +1 -0
- package/dist/auto-type-generator/name-collision-validator.js +68 -0
- package/dist/auto-type-generator/name-collision-validator.js.map +1 -0
- package/dist/auto-type-generator/naming-convention.d.ts +44 -0
- package/dist/auto-type-generator/naming-convention.d.ts.map +1 -0
- package/dist/auto-type-generator/naming-convention.js +67 -0
- package/dist/auto-type-generator/naming-convention.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +11 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/gen.d.ts +32 -0
- package/dist/commands/gen.d.ts.map +1 -0
- package/dist/commands/gen.js +101 -0
- package/dist/commands/gen.js.map +1 -0
- package/dist/commands/main.d.ts +12 -0
- package/dist/commands/main.d.ts.map +1 -0
- package/dist/commands/main.js +5 -0
- package/dist/commands/main.js.map +1 -0
- package/dist/config/define-config.d.ts +26 -0
- package/dist/config/define-config.d.ts.map +1 -0
- package/dist/config/define-config.js +27 -0
- package/dist/config/define-config.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +131 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config-loader/index.d.ts +3 -0
- package/dist/config-loader/index.d.ts.map +1 -0
- package/dist/config-loader/index.js +2 -0
- package/dist/config-loader/index.js.map +1 -0
- package/dist/config-loader/loader.d.ts +50 -0
- package/dist/config-loader/loader.d.ts.map +1 -0
- package/dist/config-loader/loader.js +78 -0
- package/dist/config-loader/loader.js.map +1 -0
- package/dist/config-loader/validator.d.ts +13 -0
- package/dist/config-loader/validator.d.ts.map +1 -0
- package/dist/config-loader/validator.js +497 -0
- package/dist/config-loader/validator.js.map +1 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts +25 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts.map +1 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.js +68 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.js.map +1 -0
- package/dist/gen-orchestrator/orchestrator.d.ts +30 -0
- package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/gen-orchestrator/orchestrator.js +505 -0
- package/dist/gen-orchestrator/orchestrator.js.map +1 -0
- package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts +9 -0
- package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts.map +1 -0
- package/dist/gen-orchestrator/reporter/diagnostic-reporter.js +32 -0
- package/dist/gen-orchestrator/reporter/diagnostic-reporter.js.map +1 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.d.ts +19 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.d.ts.map +1 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.js +38 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.js.map +1 -0
- package/dist/gen-orchestrator/writer/file-writer.d.ts +13 -0
- package/dist/gen-orchestrator/writer/file-writer.d.ts.map +1 -0
- package/dist/gen-orchestrator/writer/file-writer.js +22 -0
- package/dist/gen-orchestrator/writer/file-writer.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/resolver-extractor/extract-resolvers.d.ts +49 -0
- package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -0
- package/dist/resolver-extractor/extract-resolvers.js +2 -0
- package/dist/resolver-extractor/extract-resolvers.js.map +1 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +60 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.js +509 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -0
- package/dist/resolver-extractor/index.d.ts +5 -0
- package/dist/resolver-extractor/index.d.ts.map +1 -0
- package/dist/resolver-extractor/index.js +2 -0
- package/dist/resolver-extractor/index.js.map +1 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +25 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js +172 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -0
- package/dist/resolver-extractor/validator/only-validator.d.ts +61 -0
- package/dist/resolver-extractor/validator/only-validator.d.ts.map +1 -0
- package/dist/resolver-extractor/validator/only-validator.js +76 -0
- package/dist/resolver-extractor/validator/only-validator.js.map +1 -0
- package/dist/schema-generator/builder/ast-builder.d.ts +7 -0
- package/dist/schema-generator/builder/ast-builder.d.ts.map +1 -0
- package/dist/schema-generator/builder/ast-builder.js +417 -0
- package/dist/schema-generator/builder/ast-builder.js.map +1 -0
- package/dist/schema-generator/emitter/code-emitter.d.ts +15 -0
- package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -0
- package/dist/schema-generator/emitter/code-emitter.js +216 -0
- package/dist/schema-generator/emitter/code-emitter.js.map +1 -0
- package/dist/schema-generator/emitter/sdl-emitter.d.ts +7 -0
- package/dist/schema-generator/emitter/sdl-emitter.d.ts.map +1 -0
- package/dist/schema-generator/emitter/sdl-emitter.js +11 -0
- package/dist/schema-generator/emitter/sdl-emitter.js.map +1 -0
- package/dist/schema-generator/generate-schema.d.ts +26 -0
- package/dist/schema-generator/generate-schema.d.ts.map +1 -0
- package/dist/schema-generator/generate-schema.js +93 -0
- package/dist/schema-generator/generate-schema.js.map +1 -0
- package/dist/schema-generator/index.d.ts +4 -0
- package/dist/schema-generator/index.d.ts.map +1 -0
- package/dist/schema-generator/index.js +2 -0
- package/dist/schema-generator/index.js.map +1 -0
- package/dist/schema-generator/integrator/result-integrator.d.ts +113 -0
- package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -0
- package/dist/schema-generator/integrator/result-integrator.js +438 -0
- package/dist/schema-generator/integrator/result-integrator.js.map +1 -0
- package/dist/schema-generator/pruner/schema-pruner.d.ts +16 -0
- package/dist/schema-generator/pruner/schema-pruner.d.ts.map +1 -0
- package/dist/schema-generator/pruner/schema-pruner.js +66 -0
- package/dist/schema-generator/pruner/schema-pruner.js.map +1 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +24 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.js +61 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -0
- package/dist/shared/constants.d.ts +54 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +109 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/default-value-detector.d.ts +40 -0
- package/dist/shared/default-value-detector.d.ts.map +1 -0
- package/dist/shared/default-value-detector.js +124 -0
- package/dist/shared/default-value-detector.js.map +1 -0
- package/dist/shared/diagnostics.d.ts +4 -0
- package/dist/shared/diagnostics.d.ts.map +1 -0
- package/dist/shared/diagnostics.js +25 -0
- package/dist/shared/diagnostics.js.map +1 -0
- package/dist/shared/directive-definition-extractor.d.ts +64 -0
- package/dist/shared/directive-definition-extractor.d.ts.map +1 -0
- package/dist/shared/directive-definition-extractor.js +399 -0
- package/dist/shared/directive-definition-extractor.js.map +1 -0
- package/dist/shared/directive-detector.d.ts +102 -0
- package/dist/shared/directive-detector.d.ts.map +1 -0
- package/dist/shared/directive-detector.js +415 -0
- package/dist/shared/directive-detector.js.map +1 -0
- package/dist/shared/file-scanner.d.ts +25 -0
- package/dist/shared/file-scanner.d.ts.map +1 -0
- package/dist/shared/file-scanner.js +101 -0
- package/dist/shared/file-scanner.js.map +1 -0
- package/dist/shared/index.d.ts +10 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +6 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/inline-object-extractor.d.ts +13 -0
- package/dist/shared/inline-object-extractor.d.ts.map +1 -0
- package/dist/shared/inline-object-extractor.js +65 -0
- package/dist/shared/inline-object-extractor.js.map +1 -0
- package/dist/shared/inline-object-utils.d.ts +7 -0
- package/dist/shared/inline-object-utils.d.ts.map +1 -0
- package/dist/shared/inline-object-utils.js +23 -0
- package/dist/shared/inline-object-utils.js.map +1 -0
- package/dist/shared/interface-detector.d.ts +23 -0
- package/dist/shared/interface-detector.d.ts.map +1 -0
- package/dist/shared/interface-detector.js +133 -0
- package/dist/shared/interface-detector.js.map +1 -0
- package/dist/shared/interface-validator.d.ts +9 -0
- package/dist/shared/interface-validator.d.ts.map +1 -0
- package/dist/shared/interface-validator.js +152 -0
- package/dist/shared/interface-validator.js.map +1 -0
- package/dist/shared/metadata-detector.d.ts +65 -0
- package/dist/shared/metadata-detector.d.ts.map +1 -0
- package/dist/shared/metadata-detector.js +333 -0
- package/dist/shared/metadata-detector.js.map +1 -0
- package/dist/shared/path-utils.d.ts +2 -0
- package/dist/shared/path-utils.d.ts.map +1 -0
- package/dist/shared/path-utils.js +4 -0
- package/dist/shared/path-utils.js.map +1 -0
- package/dist/shared/program-factory.d.ts +14 -0
- package/dist/shared/program-factory.d.ts.map +1 -0
- package/dist/shared/program-factory.js +29 -0
- package/dist/shared/program-factory.js.map +1 -0
- package/dist/shared/source-location.d.ts +11 -0
- package/dist/shared/source-location.d.ts.map +1 -0
- package/dist/shared/source-location.js +15 -0
- package/dist/shared/source-location.js.map +1 -0
- package/dist/shared/tsconfig-loader.d.ts +13 -0
- package/dist/shared/tsconfig-loader.d.ts.map +1 -0
- package/dist/shared/tsconfig-loader.js +90 -0
- package/dist/shared/tsconfig-loader.js.map +1 -0
- package/dist/shared/tsdoc-parser.d.ts +12 -0
- package/dist/shared/tsdoc-parser.d.ts.map +1 -0
- package/dist/shared/tsdoc-parser.js +101 -0
- package/dist/shared/tsdoc-parser.js.map +1 -0
- package/dist/shared/type-converter.d.ts +3 -0
- package/dist/shared/type-converter.d.ts.map +1 -0
- package/dist/shared/type-converter.js +83 -0
- package/dist/shared/type-converter.js.map +1 -0
- package/dist/shared/typescript-utils.d.ts +82 -0
- package/dist/shared/typescript-utils.d.ts.map +1 -0
- package/dist/shared/typescript-utils.js +197 -0
- package/dist/shared/typescript-utils.js.map +1 -0
- package/dist/type-extractor/collector/result-collector.d.ts +7 -0
- package/dist/type-extractor/collector/result-collector.d.ts.map +1 -0
- package/dist/type-extractor/collector/result-collector.js +35 -0
- package/dist/type-extractor/collector/result-collector.js.map +1 -0
- package/dist/type-extractor/collector/scalar-collector.d.ts +108 -0
- package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -0
- package/dist/type-extractor/collector/scalar-collector.js +123 -0
- package/dist/type-extractor/collector/scalar-collector.js.map +1 -0
- package/dist/type-extractor/converter/field-eligibility.d.ts +34 -0
- package/dist/type-extractor/converter/field-eligibility.d.ts.map +1 -0
- package/dist/type-extractor/converter/field-eligibility.js +89 -0
- package/dist/type-extractor/converter/field-eligibility.js.map +1 -0
- package/dist/type-extractor/converter/graphql-converter.d.ts +7 -0
- package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -0
- package/dist/type-extractor/converter/graphql-converter.js +338 -0
- package/dist/type-extractor/converter/graphql-converter.js.map +1 -0
- package/dist/type-extractor/extract-types.d.ts +2 -0
- package/dist/type-extractor/extract-types.d.ts.map +1 -0
- package/dist/type-extractor/extract-types.js +2 -0
- package/dist/type-extractor/extract-types.js.map +1 -0
- package/dist/type-extractor/extractor/field-type-resolver.d.ts +28 -0
- package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -0
- package/dist/type-extractor/extractor/field-type-resolver.js +394 -0
- package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -0
- package/dist/type-extractor/extractor/type-extractor.d.ts +36 -0
- package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -0
- package/dist/type-extractor/extractor/type-extractor.js +1082 -0
- package/dist/type-extractor/extractor/type-extractor.js.map +1 -0
- package/dist/type-extractor/extractor/type-name-collector.d.ts +24 -0
- package/dist/type-extractor/extractor/type-name-collector.d.ts.map +1 -0
- package/dist/type-extractor/extractor/type-name-collector.js +102 -0
- package/dist/type-extractor/extractor/type-name-collector.js.map +1 -0
- package/dist/type-extractor/index.d.ts +4 -0
- package/dist/type-extractor/index.d.ts.map +1 -0
- package/dist/type-extractor/index.js +2 -0
- package/dist/type-extractor/index.js.map +1 -0
- package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts +89 -0
- package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts.map +1 -0
- package/dist/type-extractor/mapper/scalar-base-type-mapper.js +158 -0
- package/dist/type-extractor/mapper/scalar-base-type-mapper.js.map +1 -0
- package/dist/type-extractor/types/diagnostics.d.ts +17 -0
- package/dist/type-extractor/types/diagnostics.d.ts.map +1 -0
- package/dist/type-extractor/types/diagnostics.js +2 -0
- package/dist/type-extractor/types/diagnostics.js.map +1 -0
- package/dist/type-extractor/types/graphql.d.ts +42 -0
- package/dist/type-extractor/types/graphql.d.ts.map +1 -0
- package/dist/type-extractor/types/graphql.js +2 -0
- package/dist/type-extractor/types/graphql.js.map +1 -0
- package/dist/type-extractor/types/index.d.ts +6 -0
- package/dist/type-extractor/types/index.d.ts.map +1 -0
- package/dist/type-extractor/types/index.js +2 -0
- package/dist/type-extractor/types/index.js.map +1 -0
- package/dist/type-extractor/types/ts-type-reference-factory.d.ts +39 -0
- package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -0
- package/dist/type-extractor/types/ts-type-reference-factory.js +69 -0
- package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -0
- package/dist/type-extractor/types/typescript.d.ts +106 -0
- package/dist/type-extractor/types/typescript.d.ts.map +1 -0
- package/dist/type-extractor/types/typescript.js +2 -0
- package/dist/type-extractor/types/typescript.js.map +1 -0
- package/dist/type-extractor/validator/type-validator.d.ts +11 -0
- package/dist/type-extractor/validator/type-validator.d.ts.map +1 -0
- package/dist/type-extractor/validator/type-validator.js +53 -0
- package/dist/type-extractor/validator/type-validator.js.map +1 -0
- package/docs/configuration.md +163 -0
- package/docs/getting-started.md +117 -0
- package/docs/index.md +33 -0
- package/docs/integration/apollo.md +109 -0
- package/docs/integration/drizzle.md +191 -0
- package/docs/integration/yoga.md +108 -0
- package/docs/schema/abstract-resolvers.md +146 -0
- package/docs/schema/directives.md +196 -0
- package/docs/schema/documentation.md +176 -0
- package/docs/schema/enums.md +370 -0
- package/docs/schema/fields.md +186 -0
- package/docs/schema/index.md +38 -0
- package/docs/schema/inputs.md +279 -0
- package/docs/schema/interfaces.md +178 -0
- package/docs/schema/objects.md +188 -0
- package/docs/schema/queries-mutations.md +207 -0
- package/docs/schema/scalars.md +194 -0
- package/docs/schema/unions.md +90 -0
- package/docs/what-is-gqlkit.md +22 -0
- package/package.json +66 -7
- package/src/auto-type-generator/auto-type-generator.ts +925 -0
- package/src/auto-type-generator/index.ts +21 -0
- package/src/auto-type-generator/inline-enum-collector.ts +290 -0
- package/src/auto-type-generator/name-collision-validator.ts +119 -0
- package/src/auto-type-generator/naming-convention.ts +126 -0
- package/src/cli.ts +11 -0
- package/src/commands/gen.ts +141 -0
- package/src/commands/main.ts +5 -0
- package/src/config/define-config.ts +28 -0
- package/src/config/index.ts +7 -0
- package/src/config/types.ts +144 -0
- package/src/config-loader/index.ts +14 -0
- package/src/config-loader/loader.ts +143 -0
- package/src/config-loader/validator.ts +672 -0
- package/src/gen-orchestrator/hook-executor/hook-executor.ts +117 -0
- package/src/gen-orchestrator/orchestrator.ts +784 -0
- package/src/gen-orchestrator/reporter/diagnostic-reporter.ts +44 -0
- package/src/gen-orchestrator/reporter/progress-reporter.ts +61 -0
- package/src/gen-orchestrator/writer/file-writer.ts +38 -0
- package/src/index.ts +2 -0
- package/src/resolver-extractor/extract-resolvers.ts +63 -0
- package/src/resolver-extractor/extractor/define-api-extractor.ts +806 -0
- package/src/resolver-extractor/index.ts +19 -0
- package/src/resolver-extractor/validator/abstract-resolver-validator.ts +251 -0
- package/src/resolver-extractor/validator/only-validator.ts +158 -0
- package/src/schema-generator/builder/ast-builder.ts +706 -0
- package/src/schema-generator/emitter/code-emitter.ts +351 -0
- package/src/schema-generator/emitter/sdl-emitter.ts +13 -0
- package/src/schema-generator/generate-schema.ts +170 -0
- package/src/schema-generator/index.ts +19 -0
- package/src/schema-generator/integrator/result-integrator.ts +690 -0
- package/src/schema-generator/pruner/schema-pruner.ts +112 -0
- package/src/schema-generator/resolver-collector/resolver-collector.ts +123 -0
- package/src/shared/constants.ts +122 -0
- package/src/shared/default-value-detector.ts +172 -0
- package/src/shared/diagnostics.ts +35 -0
- package/src/shared/directive-definition-extractor.ts +564 -0
- package/src/shared/directive-detector.ts +556 -0
- package/src/shared/file-scanner.ts +170 -0
- package/src/shared/index.ts +32 -0
- package/src/shared/inline-object-extractor.ts +102 -0
- package/src/shared/inline-object-utils.ts +23 -0
- package/src/shared/interface-detector.ts +176 -0
- package/src/shared/interface-validator.ts +211 -0
- package/src/shared/metadata-detector.ts +443 -0
- package/src/shared/path-utils.ts +3 -0
- package/src/shared/program-factory.ts +51 -0
- package/src/shared/source-location.ts +27 -0
- package/src/shared/tsconfig-loader.ts +126 -0
- package/src/shared/tsdoc-parser.ts +155 -0
- package/src/shared/type-converter.ts +99 -0
- package/src/shared/typescript-utils.ts +246 -0
- package/src/type-extractor/collector/result-collector.ts +57 -0
- package/src/type-extractor/collector/scalar-collector.ts +254 -0
- package/src/type-extractor/converter/field-eligibility.ts +112 -0
- package/src/type-extractor/converter/graphql-converter.ts +459 -0
- package/src/type-extractor/extract-types.ts +1 -0
- package/src/type-extractor/extractor/field-type-resolver.ts +569 -0
- package/src/type-extractor/extractor/type-extractor.ts +1567 -0
- package/src/type-extractor/extractor/type-name-collector.ts +130 -0
- package/src/type-extractor/index.ts +20 -0
- package/src/type-extractor/mapper/scalar-base-type-mapper.ts +265 -0
- package/src/type-extractor/types/diagnostics.ts +99 -0
- package/src/type-extractor/types/graphql.ts +55 -0
- package/src/type-extractor/types/index.ts +37 -0
- package/src/type-extractor/types/ts-type-reference-factory.ts +137 -0
- package/src/type-extractor/types/typescript.ts +133 -0
- package/src/type-extractor/validator/type-validator.ts +77 -0
- package/README.md +0 -45
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Apollo Server
|
|
2
|
+
|
|
3
|
+
[Apollo Server](https://www.apollographql.com/docs/apollo-server/) is a popular GraphQL server with extensive features and ecosystem.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh filename="npm"
|
|
8
|
+
npm install @apollo/server
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```sh filename="pnpm"
|
|
12
|
+
pnpm add @apollo/server
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```sh filename="yarn"
|
|
16
|
+
yarn add @apollo/server
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Creating the Schema
|
|
20
|
+
|
|
21
|
+
First, create an executable schema using `makeExecutableSchema`:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// src/schema.ts
|
|
25
|
+
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
26
|
+
import { typeDefs } from "./gqlkit/__generated__/schema";
|
|
27
|
+
import { resolvers } from "./gqlkit/__generated__/resolvers";
|
|
28
|
+
|
|
29
|
+
export const schema = makeExecutableSchema({ typeDefs, resolvers });
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Basic Server
|
|
33
|
+
|
|
34
|
+
Using the standalone server:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// src/server.ts
|
|
38
|
+
import { ApolloServer } from "@apollo/server";
|
|
39
|
+
import { startStandaloneServer } from "@apollo/server/standalone";
|
|
40
|
+
import { schema } from "./schema";
|
|
41
|
+
|
|
42
|
+
const server = new ApolloServer({ schema });
|
|
43
|
+
|
|
44
|
+
const { url } = await startStandaloneServer(server, {
|
|
45
|
+
listen: { port: 4000 },
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
console.log(`Server is running on ${url}`);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## With Context
|
|
52
|
+
|
|
53
|
+
If your resolvers use a context type, provide a context factory:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// src/gqlkit/context.ts
|
|
57
|
+
export type Context = {
|
|
58
|
+
currentUser: User | null;
|
|
59
|
+
db: Database;
|
|
60
|
+
};
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
// src/gqlkit/gqlkit.ts
|
|
65
|
+
import { createGqlkitApis } from "@gqlkit-ts/runtime";
|
|
66
|
+
import type { Context } from "./context";
|
|
67
|
+
|
|
68
|
+
export const { defineQuery, defineMutation, defineField } =
|
|
69
|
+
createGqlkitApis<Context>();
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// src/gqlkit/schema/query.ts
|
|
74
|
+
import { defineQuery } from "../gqlkit";
|
|
75
|
+
import type { NoArgs } from "@gqlkit-ts/runtime";
|
|
76
|
+
import type { User } from "./user";
|
|
77
|
+
|
|
78
|
+
export const me = defineQuery<NoArgs, User | null>(
|
|
79
|
+
(_root, _args, ctx) => ctx.currentUser
|
|
80
|
+
);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// src/server.ts
|
|
85
|
+
import { ApolloServer } from "@apollo/server";
|
|
86
|
+
import { startStandaloneServer } from "@apollo/server/standalone";
|
|
87
|
+
import { schema } from "./schema";
|
|
88
|
+
import type { Context } from "./gqlkit/context";
|
|
89
|
+
|
|
90
|
+
const server = new ApolloServer<Context>({ schema });
|
|
91
|
+
|
|
92
|
+
const { url } = await startStandaloneServer(server, {
|
|
93
|
+
listen: { port: 4000 },
|
|
94
|
+
context: async ({ req }) => {
|
|
95
|
+
const user = await getUserFromRequest(req);
|
|
96
|
+
return {
|
|
97
|
+
currentUser: user,
|
|
98
|
+
db: database,
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
console.log(`Server is running on ${url}`);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Further Reading
|
|
107
|
+
|
|
108
|
+
- [Apollo Server Documentation](https://www.apollographql.com/docs/apollo-server/)
|
|
109
|
+
- [Apollo Server Plugins](https://www.apollographql.com/docs/apollo-server/builtin-plugins)
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Drizzle ORM
|
|
2
|
+
|
|
3
|
+
[Drizzle ORM](https://orm.drizzle.team/) is a TypeScript ORM with type-safe schema definitions. gqlkit integrates seamlessly with Drizzle by using `InferSelectModel` and `InferInsertModel` to derive GraphQL types from your table definitions.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh filename="npm"
|
|
8
|
+
npm install drizzle-orm postgres
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```sh filename="pnpm"
|
|
12
|
+
pnpm add drizzle-orm postgres
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```sh filename="yarn"
|
|
16
|
+
yarn add drizzle-orm postgres
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Defining Tables
|
|
20
|
+
|
|
21
|
+
Define your database tables with Drizzle:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// src/db/schema.ts
|
|
25
|
+
import { pgEnum, pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core";
|
|
26
|
+
|
|
27
|
+
export const userStatusEnum = pgEnum("user_status", [
|
|
28
|
+
"active",
|
|
29
|
+
"inactive",
|
|
30
|
+
"suspended",
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
export const users = pgTable("users", {
|
|
34
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
35
|
+
name: text().notNull(),
|
|
36
|
+
email: text().notNull().unique(),
|
|
37
|
+
status: userStatusEnum().notNull().default("active"),
|
|
38
|
+
createdAt: timestamp().notNull().defaultNow(),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export const posts = pgTable("posts", {
|
|
42
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
43
|
+
title: text().notNull(),
|
|
44
|
+
content: text(),
|
|
45
|
+
priority: text({ enum: ["low", "medium", "high"] }).notNull().default("medium"),
|
|
46
|
+
authorId: uuid()
|
|
47
|
+
.notNull()
|
|
48
|
+
.references(() => users.id),
|
|
49
|
+
createdAt: timestamp().notNull().defaultNow(),
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Both `pgEnum()` and `text({ enum: [...] })` are supported for defining enum columns. gqlkit automatically generates corresponding GraphQL enum types from these definitions.
|
|
54
|
+
|
|
55
|
+
## Defining Custom Scalars
|
|
56
|
+
|
|
57
|
+
Define custom scalar types using `GqlScalar` for fields like timestamps:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// src/gqlkit/schema/scalars.ts
|
|
61
|
+
import type { GqlScalar } from "@gqlkit-ts/runtime";
|
|
62
|
+
|
|
63
|
+
export type DateTime = GqlScalar<"DateTime", Date>;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Exporting GraphQL Types
|
|
67
|
+
|
|
68
|
+
Use Drizzle's type inference utilities to export GraphQL types from your table definitions:
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// src/gqlkit/schema/user.ts
|
|
72
|
+
import type { InferSelectModel } from "drizzle-orm";
|
|
73
|
+
import { users as usersTable } from "../../db/schema.js";
|
|
74
|
+
|
|
75
|
+
// Export as GraphQL object type
|
|
76
|
+
export type User = InferSelectModel<typeof usersTable>;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This generates the following GraphQL schema:
|
|
80
|
+
|
|
81
|
+
```graphql
|
|
82
|
+
enum UserStatus {
|
|
83
|
+
ACTIVE
|
|
84
|
+
INACTIVE
|
|
85
|
+
SUSPENDED
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type User {
|
|
89
|
+
id: String!
|
|
90
|
+
name: String!
|
|
91
|
+
email: String!
|
|
92
|
+
status: UserStatus!
|
|
93
|
+
createdAt: DateTime!
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Defining Resolvers
|
|
98
|
+
|
|
99
|
+
Define resolvers that use the derived types:
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// src/gqlkit/schema/user.ts
|
|
103
|
+
import type { NoArgs } from "@gqlkit-ts/runtime";
|
|
104
|
+
import type { InferInsertModel, InferSelectModel } from "drizzle-orm";
|
|
105
|
+
import { eq } from "drizzle-orm";
|
|
106
|
+
import { posts as postsTable, users as usersTable } from "../../db/schema.js";
|
|
107
|
+
import { defineField, defineMutation, defineQuery } from "../gqlkit.js";
|
|
108
|
+
import type { Post } from "./post.js";
|
|
109
|
+
|
|
110
|
+
export type User = InferSelectModel<typeof usersTable>;
|
|
111
|
+
|
|
112
|
+
export const allUsers = defineQuery<NoArgs, User[]>(
|
|
113
|
+
async (_root, _args, ctx) => {
|
|
114
|
+
return ctx.db.select().from(usersTable);
|
|
115
|
+
},
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
export const user = defineQuery<{ id: string }, User | null>(
|
|
119
|
+
async (_root, args, ctx) => {
|
|
120
|
+
const result = await ctx.db
|
|
121
|
+
.select()
|
|
122
|
+
.from(usersTable)
|
|
123
|
+
.where(eq(usersTable.id, args.id));
|
|
124
|
+
return result[0] ?? null;
|
|
125
|
+
},
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
export const createUser = defineMutation<
|
|
129
|
+
{ input: Omit<InferInsertModel<typeof usersTable>, "id" | "createdAt"> },
|
|
130
|
+
User
|
|
131
|
+
>(async (_root, args, ctx) => {
|
|
132
|
+
const result = await ctx.db.insert(usersTable).values(args.input).returning();
|
|
133
|
+
return result[0]!;
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
export const posts = defineField<User, NoArgs, Post[]>(
|
|
137
|
+
async (parent, _args, ctx) => {
|
|
138
|
+
return ctx.db
|
|
139
|
+
.select()
|
|
140
|
+
.from(postsTable)
|
|
141
|
+
.where(eq(postsTable.authorId, parent.id));
|
|
142
|
+
},
|
|
143
|
+
);
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Context with Database
|
|
147
|
+
|
|
148
|
+
Set up the context type to include your database instance:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// src/db/db.ts
|
|
152
|
+
import { drizzle } from "drizzle-orm/postgres-js";
|
|
153
|
+
import postgres from "postgres";
|
|
154
|
+
import * as schema from "./schema.js";
|
|
155
|
+
|
|
156
|
+
const client = postgres(process.env.DATABASE_URL!);
|
|
157
|
+
export const db = drizzle(client, { schema, casing: "snake_case" });
|
|
158
|
+
export type Database = typeof db;
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// src/gqlkit/context.ts
|
|
163
|
+
import type { Database } from "../db/db.js";
|
|
164
|
+
|
|
165
|
+
export type Context = {
|
|
166
|
+
db: Database;
|
|
167
|
+
};
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// src/gqlkit/gqlkit.ts
|
|
172
|
+
import { createGqlkitApis } from "@gqlkit-ts/runtime";
|
|
173
|
+
import type { Context } from "./context.js";
|
|
174
|
+
|
|
175
|
+
export const { defineQuery, defineMutation, defineField } =
|
|
176
|
+
createGqlkitApis<Context>();
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Complete Example
|
|
180
|
+
|
|
181
|
+
See the [examples/with-drizzle](https://github.com/gqlkit/gqlkit/tree/main/examples/with-drizzle) directory for a complete working example with:
|
|
182
|
+
|
|
183
|
+
- PostgreSQL tables with DateTime scalar
|
|
184
|
+
- Enum types using both `pgEnum()` and `text({ enum: [...] })`
|
|
185
|
+
- User and Post types with relationships
|
|
186
|
+
- Query, Mutation, and Field resolvers
|
|
187
|
+
|
|
188
|
+
## Further Reading
|
|
189
|
+
|
|
190
|
+
- [Drizzle ORM Documentation](https://orm.drizzle.team/docs/overview)
|
|
191
|
+
- [Drizzle with PostgreSQL](https://orm.drizzle.team/docs/get-started/postgresql-new)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# graphql-yoga
|
|
2
|
+
|
|
3
|
+
[graphql-yoga](https://the-guild.dev/graphql/yoga-server) is a batteries-included GraphQL server that works in any JavaScript runtime.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh filename="npm"
|
|
8
|
+
npm install graphql-yoga
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```sh filename="pnpm"
|
|
12
|
+
pnpm add graphql-yoga
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```sh filename="yarn"
|
|
16
|
+
yarn add graphql-yoga
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Creating the Schema
|
|
20
|
+
|
|
21
|
+
First, create an executable schema using `makeExecutableSchema`:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// src/schema.ts
|
|
25
|
+
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
26
|
+
import { typeDefs } from "./gqlkit/__generated__/schema";
|
|
27
|
+
import { resolvers } from "./gqlkit/__generated__/resolvers";
|
|
28
|
+
|
|
29
|
+
export const schema = makeExecutableSchema({ typeDefs, resolvers });
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Basic Server
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// src/server.ts
|
|
36
|
+
import { createServer } from "node:http";
|
|
37
|
+
import { createYoga } from "graphql-yoga";
|
|
38
|
+
import { schema } from "./schema";
|
|
39
|
+
|
|
40
|
+
const yoga = createYoga({ schema });
|
|
41
|
+
const server = createServer(yoga);
|
|
42
|
+
|
|
43
|
+
server.listen(4000, () => {
|
|
44
|
+
console.log("Server is running on http://localhost:4000/graphql");
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## With Context
|
|
49
|
+
|
|
50
|
+
If your resolvers use a context type, provide a context factory:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// src/gqlkit/context.ts
|
|
54
|
+
export type Context = {
|
|
55
|
+
currentUser: User | null;
|
|
56
|
+
db: Database;
|
|
57
|
+
};
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// src/gqlkit/gqlkit.ts
|
|
62
|
+
import { createGqlkitApis } from "@gqlkit-ts/runtime";
|
|
63
|
+
import type { Context } from "./context";
|
|
64
|
+
|
|
65
|
+
export const { defineQuery, defineMutation, defineField } =
|
|
66
|
+
createGqlkitApis<Context>();
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// src/gqlkit/schema/query.ts
|
|
71
|
+
import { defineQuery } from "../gqlkit";
|
|
72
|
+
import type { NoArgs } from "@gqlkit-ts/runtime";
|
|
73
|
+
import type { User } from "./user";
|
|
74
|
+
|
|
75
|
+
export const me = defineQuery<NoArgs, User | null>(
|
|
76
|
+
(_root, _args, ctx) => ctx.currentUser
|
|
77
|
+
);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// src/server.ts
|
|
82
|
+
import { createServer } from "node:http";
|
|
83
|
+
import { createYoga } from "graphql-yoga";
|
|
84
|
+
import { schema } from "./schema";
|
|
85
|
+
import type { Context } from "./gqlkit/context";
|
|
86
|
+
|
|
87
|
+
const yoga = createYoga<{}, Context>({
|
|
88
|
+
schema,
|
|
89
|
+
context: async ({ request }) => {
|
|
90
|
+
const user = await getUserFromRequest(request);
|
|
91
|
+
return {
|
|
92
|
+
currentUser: user,
|
|
93
|
+
db: database,
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const server = createServer(yoga);
|
|
99
|
+
|
|
100
|
+
server.listen(4000, () => {
|
|
101
|
+
console.log("Server is running on http://localhost:4000/graphql");
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Further Reading
|
|
106
|
+
|
|
107
|
+
- [graphql-yoga Documentation](https://the-guild.dev/graphql/yoga-server/docs)
|
|
108
|
+
- [Envelop Plugins](https://the-guild.dev/graphql/envelop/plugins)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Abstract Type Resolution
|
|
2
|
+
|
|
3
|
+
GraphQL abstract types (unions and interfaces) require runtime type resolution to determine the concrete type of returned values. gqlkit provides `defineResolveType` and `defineIsTypeOf` to handle this.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
When a GraphQL query returns an abstract type, the server needs to determine which concrete type to use. There are two approaches:
|
|
8
|
+
|
|
9
|
+
| Approach | Defined On | Returns | Use Case |
|
|
10
|
+
|----------|------------|---------|----------|
|
|
11
|
+
| `resolveType` | Abstract type (union/interface) | Type name string | Single resolver decides the type |
|
|
12
|
+
| `isTypeOf` | Object type | Boolean | Each type checks if value matches |
|
|
13
|
+
|
|
14
|
+
## Using resolveType
|
|
15
|
+
|
|
16
|
+
Define a `resolveType` resolver on a union or interface type to determine the concrete type.
|
|
17
|
+
|
|
18
|
+
### Union Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { defineResolveType } from "../gqlkit";
|
|
22
|
+
|
|
23
|
+
export interface User {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface Post {
|
|
29
|
+
id: string;
|
|
30
|
+
title: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type SearchResult = User | Post;
|
|
34
|
+
|
|
35
|
+
export const searchResultResolveType = defineResolveType<SearchResult>(
|
|
36
|
+
(value) => {
|
|
37
|
+
if ("name" in value) {
|
|
38
|
+
return "User";
|
|
39
|
+
}
|
|
40
|
+
return "Post";
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Interface Example
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { defineResolveType } from "../gqlkit";
|
|
49
|
+
import { type GqlInterface, type IDString } from "@gqlkit-ts/runtime";
|
|
50
|
+
|
|
51
|
+
export type Node = GqlInterface<{
|
|
52
|
+
id: IDString;
|
|
53
|
+
}>;
|
|
54
|
+
|
|
55
|
+
export const nodeResolveType = defineResolveType<Node>((value) => {
|
|
56
|
+
if ("name" in value) {
|
|
57
|
+
return "User";
|
|
58
|
+
}
|
|
59
|
+
if ("title" in value) {
|
|
60
|
+
return "Post";
|
|
61
|
+
}
|
|
62
|
+
throw new Error("Unknown Node type");
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Resolver Function Signature
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
(value: TAbstract, context: TContext, info: GraphQLResolveInfo) => string | Promise<string>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
| Argument | Description |
|
|
73
|
+
|----------|-------------|
|
|
74
|
+
| `value` | The resolved value to determine the type of |
|
|
75
|
+
| `context` | The context object |
|
|
76
|
+
| `info` | GraphQL resolve info |
|
|
77
|
+
|
|
78
|
+
### Type Parameters
|
|
79
|
+
|
|
80
|
+
`defineResolveType<TAbstract>`:
|
|
81
|
+
|
|
82
|
+
| Parameter | Description |
|
|
83
|
+
|-----------|-------------|
|
|
84
|
+
| `TAbstract` | The abstract type (union or interface) to resolve |
|
|
85
|
+
|
|
86
|
+
## Using isTypeOf
|
|
87
|
+
|
|
88
|
+
Define an `isTypeOf` resolver on an object type to check if a value is of that type.
|
|
89
|
+
|
|
90
|
+
### Basic Usage
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { defineIsTypeOf } from "../gqlkit";
|
|
94
|
+
|
|
95
|
+
export interface Dog {
|
|
96
|
+
kind: string;
|
|
97
|
+
name: string;
|
|
98
|
+
breed: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface Cat {
|
|
102
|
+
kind: string;
|
|
103
|
+
name: string;
|
|
104
|
+
indoor: boolean;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export type Animal = Dog | Cat;
|
|
108
|
+
|
|
109
|
+
export const dogIsTypeOf = defineIsTypeOf<Dog>((value) => {
|
|
110
|
+
return (
|
|
111
|
+
typeof value === "object" &&
|
|
112
|
+
value !== null &&
|
|
113
|
+
"kind" in value &&
|
|
114
|
+
value.kind === "dog"
|
|
115
|
+
);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
export const catIsTypeOf = defineIsTypeOf<Cat>((value) => {
|
|
119
|
+
return (
|
|
120
|
+
typeof value === "object" &&
|
|
121
|
+
value !== null &&
|
|
122
|
+
"kind" in value &&
|
|
123
|
+
value.kind === "cat"
|
|
124
|
+
);
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Resolver Function Signature
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
(value: unknown, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
| Argument | Description |
|
|
135
|
+
|----------|-------------|
|
|
136
|
+
| `value` | The value to check (typed as `unknown`) |
|
|
137
|
+
| `context` | The context object |
|
|
138
|
+
| `info` | GraphQL resolve info |
|
|
139
|
+
|
|
140
|
+
### Type Parameters
|
|
141
|
+
|
|
142
|
+
`defineIsTypeOf<TObject>`:
|
|
143
|
+
|
|
144
|
+
| Parameter | Description |
|
|
145
|
+
|-----------|-------------|
|
|
146
|
+
| `TObject` | The object type to check against |
|