@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,39 @@
|
|
|
1
|
+
import type ts from "typescript";
|
|
2
|
+
import type { InlineEnumMemberInfo, InlineObjectPropertyDef, ScalarTypeInfo, TSTypeReference } from "./typescript.js";
|
|
3
|
+
interface CreateReferenceTypeParams {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly nullable: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function createReferenceType(params: CreateReferenceTypeParams): TSTypeReference;
|
|
8
|
+
interface CreatePrimitiveTypeParams {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly nullable: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function createPrimitiveType(params: CreatePrimitiveTypeParams): TSTypeReference;
|
|
13
|
+
export declare function createArrayType(elementType: TSTypeReference): TSTypeReference;
|
|
14
|
+
interface CreateUnionTypeParams {
|
|
15
|
+
readonly members: ReadonlyArray<TSTypeReference>;
|
|
16
|
+
readonly nullable: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function createUnionType(params: CreateUnionTypeParams): TSTypeReference;
|
|
19
|
+
export declare function createInlineObjectType(properties: ReadonlyArray<InlineObjectPropertyDef>): TSTypeReference;
|
|
20
|
+
interface CreateScalarTypeParams {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly scalarInfo: ScalarTypeInfo;
|
|
23
|
+
readonly nullable: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function createScalarType(params: CreateScalarTypeParams): TSTypeReference;
|
|
26
|
+
export declare function createLiteralType(name: string): TSTypeReference;
|
|
27
|
+
interface CreateInlineEnumTypeParams {
|
|
28
|
+
readonly members: ReadonlyArray<InlineEnumMemberInfo>;
|
|
29
|
+
readonly nullable: boolean;
|
|
30
|
+
/** External TypeScript enum symbol for deduplication (null for string literal unions) */
|
|
31
|
+
readonly externalEnumSymbol: ts.Symbol | null;
|
|
32
|
+
/** TSDoc description from the external enum type itself (null for string literal unions) */
|
|
33
|
+
readonly externalEnumDescription: string | null;
|
|
34
|
+
/** @deprecated tag from the external enum type itself (null for string literal unions) */
|
|
35
|
+
readonly externalEnumDeprecated: import("../../shared/tsdoc-parser.js").DeprecationInfo | null;
|
|
36
|
+
}
|
|
37
|
+
export declare function createInlineEnumType(params: CreateInlineEnumTypeParams): TSTypeReference;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=ts-type-reference-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-type-reference-factory.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/types/ts-type-reference-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EAChB,MAAM,iBAAiB,CAAC;AA0BzB,UAAU,yBAAyB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,GAChC,eAAe,CAKjB;AAED,UAAU,yBAAyB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,GAChC,eAAe,CAKjB;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,eAAe,CAE7E;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAKjB;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,aAAa,CAAC,uBAAuB,CAAC,GACjD,eAAe,CAKjB;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,GAC7B,eAAe,CASjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE/D;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IAC9C,4FAA4F;IAC5F,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,0FAA0F;IAC1F,QAAQ,CAAC,sBAAsB,EAC3B,OAAO,8BAA8B,EAAE,eAAe,GACtD,IAAI,CAAC;CACV;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,0BAA0B,GACjC,eAAe,CAWjB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
function createTSTypeReference(params) {
|
|
2
|
+
return {
|
|
3
|
+
kind: params.kind,
|
|
4
|
+
name: null,
|
|
5
|
+
elementType: null,
|
|
6
|
+
members: null,
|
|
7
|
+
nullable: false,
|
|
8
|
+
scalarInfo: null,
|
|
9
|
+
inlineObjectProperties: null,
|
|
10
|
+
inlineEnumMembers: null,
|
|
11
|
+
externalEnumSymbol: null,
|
|
12
|
+
externalEnumDescription: null,
|
|
13
|
+
externalEnumDeprecated: null,
|
|
14
|
+
...params.overrides,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function createReferenceType(params) {
|
|
18
|
+
return createTSTypeReference({
|
|
19
|
+
kind: "reference",
|
|
20
|
+
overrides: { name: params.name, nullable: params.nullable },
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function createPrimitiveType(params) {
|
|
24
|
+
return createTSTypeReference({
|
|
25
|
+
kind: "primitive",
|
|
26
|
+
overrides: { name: params.name, nullable: params.nullable },
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function createArrayType(elementType) {
|
|
30
|
+
return createTSTypeReference({ kind: "array", overrides: { elementType } });
|
|
31
|
+
}
|
|
32
|
+
export function createUnionType(params) {
|
|
33
|
+
return createTSTypeReference({
|
|
34
|
+
kind: "union",
|
|
35
|
+
overrides: { members: params.members, nullable: params.nullable },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function createInlineObjectType(properties) {
|
|
39
|
+
return createTSTypeReference({
|
|
40
|
+
kind: "inlineObject",
|
|
41
|
+
overrides: { inlineObjectProperties: properties },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export function createScalarType(params) {
|
|
45
|
+
return createTSTypeReference({
|
|
46
|
+
kind: "scalar",
|
|
47
|
+
overrides: {
|
|
48
|
+
name: params.name,
|
|
49
|
+
scalarInfo: params.scalarInfo,
|
|
50
|
+
nullable: params.nullable,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export function createLiteralType(name) {
|
|
55
|
+
return createTSTypeReference({ kind: "literal", overrides: { name } });
|
|
56
|
+
}
|
|
57
|
+
export function createInlineEnumType(params) {
|
|
58
|
+
return createTSTypeReference({
|
|
59
|
+
kind: "inlineEnum",
|
|
60
|
+
overrides: {
|
|
61
|
+
inlineEnumMembers: params.members,
|
|
62
|
+
nullable: params.nullable,
|
|
63
|
+
externalEnumSymbol: params.externalEnumSymbol,
|
|
64
|
+
externalEnumDescription: params.externalEnumDescription,
|
|
65
|
+
externalEnumDeprecated: params.externalEnumDeprecated,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ts-type-reference-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-type-reference-factory.js","sourceRoot":"","sources":["../../../src/type-extractor/types/ts-type-reference-factory.ts"],"names":[],"mappings":"AAaA,SAAS,qBAAqB,CAC5B,MAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,sBAAsB,EAAE,IAAI;QAC5B,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,uBAAuB,EAAE,IAAI;QAC7B,sBAAsB,EAAE,IAAI;QAC5B,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,MAAiC;IAEjC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,MAAiC;IAEjC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA4B;IAC1D,OAAO,qBAAqB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,MAA6B;IAE7B,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAClE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkD;IAElD,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,EAAE,sBAAsB,EAAE,UAAU,EAAE;KAClD,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAC9B,MAA8B;IAE9B,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAeD,MAAM,UAAU,oBAAoB,CAClC,MAAkC;IAElC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,iBAAiB,EAAE,MAAM,CAAC,OAAO;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;YACvD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;SACtD;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type ts from "typescript";
|
|
2
|
+
import type { DirectiveArgumentValue, DirectiveInfo } from "../../shared/directive-detector.js";
|
|
3
|
+
import type { DeprecationInfo } from "../../shared/tsdoc-parser.js";
|
|
4
|
+
import type { SourceLocation } from "./diagnostics.js";
|
|
5
|
+
export type TypeKind = "object" | "interface" | "union" | "enum" | "graphqlInterface";
|
|
6
|
+
/**
|
|
7
|
+
* Information about a detected scalar type.
|
|
8
|
+
*/
|
|
9
|
+
export interface ScalarTypeInfo {
|
|
10
|
+
/** The GraphQL scalar type name (ID, Int, Float, String, Boolean, or custom scalar name) */
|
|
11
|
+
readonly scalarName: string;
|
|
12
|
+
/** The TypeScript type name (e.g., "IDString", "Int", "DateTime") */
|
|
13
|
+
readonly typeName: string;
|
|
14
|
+
/** The underlying TypeScript primitive type (undefined for custom scalars) */
|
|
15
|
+
readonly baseType: "string" | "number" | undefined;
|
|
16
|
+
/** Whether this is a custom scalar */
|
|
17
|
+
readonly isCustom: boolean;
|
|
18
|
+
/** Usage constraint: "input" for input-only, "output" for output-only, null for both */
|
|
19
|
+
readonly only: "input" | "output" | null;
|
|
20
|
+
}
|
|
21
|
+
export interface TypeMetadata {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly kind: TypeKind;
|
|
24
|
+
readonly sourceFile: string;
|
|
25
|
+
readonly sourceLocation: SourceLocation;
|
|
26
|
+
readonly exportKind: "named" | "default";
|
|
27
|
+
readonly description: string | null;
|
|
28
|
+
readonly deprecated: DeprecationInfo | null;
|
|
29
|
+
readonly directives: ReadonlyArray<DirectiveInfo> | null;
|
|
30
|
+
}
|
|
31
|
+
export type TSTypeReferenceKind = "primitive" | "reference" | "array" | "union" | "literal" | "scalar" | "inlineObject" | "inlineEnum";
|
|
32
|
+
/**
|
|
33
|
+
* Information about an inline enum member (string literal union value).
|
|
34
|
+
*/
|
|
35
|
+
export interface InlineEnumMemberInfo {
|
|
36
|
+
/** Original value from TypeScript (e.g., "pendingReview") */
|
|
37
|
+
readonly value: string;
|
|
38
|
+
/** Description from TSDoc (if available) */
|
|
39
|
+
readonly description: string | null;
|
|
40
|
+
/** Deprecation info from @deprecated tag */
|
|
41
|
+
readonly deprecated: DeprecationInfo | null;
|
|
42
|
+
}
|
|
43
|
+
export interface TSTypeReference {
|
|
44
|
+
readonly kind: TSTypeReferenceKind;
|
|
45
|
+
readonly name: string | null;
|
|
46
|
+
readonly elementType: TSTypeReference | null;
|
|
47
|
+
readonly members: ReadonlyArray<TSTypeReference> | null;
|
|
48
|
+
readonly nullable: boolean;
|
|
49
|
+
readonly scalarInfo: ScalarTypeInfo | null;
|
|
50
|
+
readonly inlineObjectProperties: ReadonlyArray<InlineObjectPropertyDef> | null;
|
|
51
|
+
/** Inline enum members when kind is "inlineEnum" */
|
|
52
|
+
readonly inlineEnumMembers: ReadonlyArray<InlineEnumMemberInfo> | null;
|
|
53
|
+
/** External TypeScript enum symbol for deduplication (Requirement 5.2) */
|
|
54
|
+
readonly externalEnumSymbol: ts.Symbol | null;
|
|
55
|
+
/** TSDoc description from the external enum type itself (Requirement 6.1) */
|
|
56
|
+
readonly externalEnumDescription: string | null;
|
|
57
|
+
/** @deprecated tag from the external enum type itself (Requirement 6.3) */
|
|
58
|
+
readonly externalEnumDeprecated: DeprecationInfo | null;
|
|
59
|
+
}
|
|
60
|
+
export interface InlineObjectPropertyDef {
|
|
61
|
+
readonly name: string;
|
|
62
|
+
readonly tsType: TSTypeReference;
|
|
63
|
+
readonly optional: boolean;
|
|
64
|
+
readonly description: string | null;
|
|
65
|
+
readonly deprecated: DeprecationInfo | null;
|
|
66
|
+
readonly directives: ReadonlyArray<DirectiveInfo> | null;
|
|
67
|
+
readonly defaultValue: DirectiveArgumentValue | null;
|
|
68
|
+
readonly sourceLocation: SourceLocation | null;
|
|
69
|
+
}
|
|
70
|
+
export interface FieldDefinition {
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly tsType: TSTypeReference;
|
|
73
|
+
readonly optional: boolean;
|
|
74
|
+
readonly description: string | null;
|
|
75
|
+
readonly deprecated: DeprecationInfo | null;
|
|
76
|
+
readonly directives: ReadonlyArray<DirectiveInfo> | null;
|
|
77
|
+
readonly defaultValue: DirectiveArgumentValue | null;
|
|
78
|
+
readonly sourceLocation: SourceLocation | null;
|
|
79
|
+
}
|
|
80
|
+
export interface EnumMemberInfo {
|
|
81
|
+
readonly name: string;
|
|
82
|
+
readonly value: string;
|
|
83
|
+
/** Numeric value for numeric enums, null for string enums */
|
|
84
|
+
readonly numericValue: number | null;
|
|
85
|
+
readonly description: string | null;
|
|
86
|
+
readonly deprecated: DeprecationInfo | null;
|
|
87
|
+
readonly sourceLocation: SourceLocation | null;
|
|
88
|
+
}
|
|
89
|
+
export interface InlineObjectProperty {
|
|
90
|
+
readonly propertyName: string;
|
|
91
|
+
readonly propertyType: TSTypeReference;
|
|
92
|
+
readonly description: string | null;
|
|
93
|
+
readonly deprecated: DeprecationInfo | null;
|
|
94
|
+
}
|
|
95
|
+
export interface InlineObjectMember {
|
|
96
|
+
readonly properties: ReadonlyArray<InlineObjectProperty>;
|
|
97
|
+
}
|
|
98
|
+
export interface ExtractedTypeInfo {
|
|
99
|
+
readonly metadata: TypeMetadata;
|
|
100
|
+
readonly fields: ReadonlyArray<FieldDefinition>;
|
|
101
|
+
readonly unionMembers: ReadonlyArray<string> | null;
|
|
102
|
+
readonly inlineObjectMembers: ReadonlyArray<InlineObjectMember> | null;
|
|
103
|
+
readonly enumMembers: ReadonlyArray<EnumMemberInfo> | null;
|
|
104
|
+
readonly implementedInterfaces: ReadonlyArray<string> | null;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Diagnostic, GraphQLTypeInfo } from "../types/index.js";
|
|
2
|
+
export interface ValidationResult {
|
|
3
|
+
readonly valid: boolean;
|
|
4
|
+
readonly diagnostics: ReadonlyArray<Diagnostic>;
|
|
5
|
+
}
|
|
6
|
+
export interface ValidateTypesOptions {
|
|
7
|
+
readonly types: ReadonlyArray<GraphQLTypeInfo>;
|
|
8
|
+
readonly customScalarNames: ReadonlyArray<string> | null;
|
|
9
|
+
}
|
|
10
|
+
export declare function validateTypes(typesOrOptions: ReadonlyArray<GraphQLTypeInfo> | ValidateTypesOptions): ValidationResult;
|
|
11
|
+
//# sourceMappingURL=type-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-validator.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/validator/type-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1D;AASD,wBAAgB,aAAa,CAC3B,cAAc,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,oBAAoB,GACpE,gBAAgB,CAsDlB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BUILT_IN_SCALARS } from "../../shared/constants.js";
|
|
2
|
+
const PLACEHOLDER_TYPES = new Set(["__INLINE_OBJECT__", "__INLINE_ENUM__"]);
|
|
3
|
+
function isOptionsObject(arg) {
|
|
4
|
+
return !Array.isArray(arg) && "types" in arg;
|
|
5
|
+
}
|
|
6
|
+
export function validateTypes(typesOrOptions) {
|
|
7
|
+
const types = isOptionsObject(typesOrOptions)
|
|
8
|
+
? typesOrOptions.types
|
|
9
|
+
: typesOrOptions;
|
|
10
|
+
const customScalarNames = isOptionsObject(typesOrOptions)
|
|
11
|
+
? typesOrOptions.customScalarNames
|
|
12
|
+
: undefined;
|
|
13
|
+
const diagnostics = [];
|
|
14
|
+
const typeNames = new Set(types.map((t) => t.name));
|
|
15
|
+
const knownScalars = new Set([
|
|
16
|
+
...BUILT_IN_SCALARS,
|
|
17
|
+
...(customScalarNames ?? []),
|
|
18
|
+
]);
|
|
19
|
+
for (const type of types) {
|
|
20
|
+
if (type.kind === "Object" && type.fields) {
|
|
21
|
+
for (const field of type.fields) {
|
|
22
|
+
const typeName = field.type.typeName;
|
|
23
|
+
if (!typeNames.has(typeName) &&
|
|
24
|
+
!knownScalars.has(typeName) &&
|
|
25
|
+
!PLACEHOLDER_TYPES.has(typeName)) {
|
|
26
|
+
diagnostics.push({
|
|
27
|
+
code: "UNRESOLVED_REFERENCE",
|
|
28
|
+
message: `Field '${field.name}' references unresolved type '${typeName}'`,
|
|
29
|
+
severity: "error",
|
|
30
|
+
location: { file: type.sourceFile, line: 1, column: 1 },
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (type.kind === "Union" && type.unionMembers) {
|
|
36
|
+
for (const member of type.unionMembers) {
|
|
37
|
+
if (!typeNames.has(member) && !knownScalars.has(member)) {
|
|
38
|
+
diagnostics.push({
|
|
39
|
+
code: "UNRESOLVED_REFERENCE",
|
|
40
|
+
message: `Union '${type.name}' references unresolved type '${member}'`,
|
|
41
|
+
severity: "error",
|
|
42
|
+
location: { file: type.sourceFile, line: 1, column: 1 },
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
valid: diagnostics.length === 0,
|
|
50
|
+
diagnostics,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=type-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-validator.js","sourceRoot":"","sources":["../../../src/type-extractor/validator/type-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE5E,SAAS,eAAe,CACtB,GAA0D;IAE1D,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,cAAqE;IAErE,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC;QAC3C,CAAC,CAAC,cAAc,CAAC,KAAK;QACtB,CAAC,CAAC,cAAc,CAAC;IACnB,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC;QACvD,CAAC,CAAC,cAAc,CAAC,iBAAiB;QAClC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,GAAG,gBAAgB;QACnB,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;KAC7B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAErC,IACE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACxB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAC3B,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAChC,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,iCAAiC,QAAQ,GAAG;wBACzE,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,UAAU,IAAI,CAAC,IAAI,iCAAiC,MAAM,GAAG;wBACtE,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/B,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
gqlkit can be configured via `gqlkit.config.ts` in your project root.
|
|
4
|
+
|
|
5
|
+
## Basic Configuration
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
// gqlkit.config.ts
|
|
9
|
+
import { defineConfig } from "@gqlkit-ts/cli";
|
|
10
|
+
|
|
11
|
+
export default defineConfig({
|
|
12
|
+
// Source directory (default: "src/gqlkit/schema")
|
|
13
|
+
sourceDir: "src/gqlkit/schema",
|
|
14
|
+
|
|
15
|
+
// Glob patterns to exclude from scanning
|
|
16
|
+
sourceIgnoreGlobs: ["**/*.test.ts"],
|
|
17
|
+
|
|
18
|
+
// Custom scalar mappings (config-based approach)
|
|
19
|
+
scalars: [
|
|
20
|
+
{
|
|
21
|
+
name: "DateTime",
|
|
22
|
+
tsType: { from: "./src/gqlkit/schema/scalars", name: "DateTime" },
|
|
23
|
+
description: "ISO 8601 datetime",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "UUID",
|
|
27
|
+
tsType: { name: "string" }, // Global type
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
|
|
31
|
+
// Output paths
|
|
32
|
+
output: {
|
|
33
|
+
typeDefsPath: "src/gqlkit/__generated__/typeDefs.ts",
|
|
34
|
+
resolversPath: "src/gqlkit/__generated__/resolvers.ts",
|
|
35
|
+
schemaPath: "src/gqlkit/__generated__/schema.graphql",
|
|
36
|
+
// Set to null to disable output:
|
|
37
|
+
// schemaPath: null,
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
// Hooks
|
|
41
|
+
hooks: {
|
|
42
|
+
// Run after all files are written (e.g., formatting)
|
|
43
|
+
afterAllFileWrite: "prettier --write",
|
|
44
|
+
// Or multiple commands:
|
|
45
|
+
// afterAllFileWrite: ["prettier --write", "eslint --fix"],
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Custom Scalar Types
|
|
51
|
+
|
|
52
|
+
Map TypeScript types to GraphQL custom scalars via config:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
export default defineConfig({
|
|
56
|
+
scalars: [
|
|
57
|
+
{
|
|
58
|
+
name: "DateTime",
|
|
59
|
+
tsType: { from: "./src/gqlkit/schema/scalars", name: "DateTime" },
|
|
60
|
+
description: "ISO 8601 datetime string",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "UUID",
|
|
64
|
+
tsType: { name: "string" },
|
|
65
|
+
only: "input", // Input-only scalar
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Scalar Options
|
|
72
|
+
|
|
73
|
+
| Option | Type | Description |
|
|
74
|
+
|--------|------|-------------|
|
|
75
|
+
| `name` | `string` | The GraphQL scalar name |
|
|
76
|
+
| `tsType.name` | `string` | The TypeScript type name |
|
|
77
|
+
| `tsType.from` | `string` (optional) | Import path for the type (omit for global types) |
|
|
78
|
+
| `description` | `string` (optional) | Description for the GraphQL schema |
|
|
79
|
+
| `only` | `"input"` \| `"output"` (optional) | Restrict scalar to input or output positions |
|
|
80
|
+
|
|
81
|
+
> [!TIP]
|
|
82
|
+
>
|
|
83
|
+
> You can also define custom scalars using the `GqlScalar` utility type directly in your schema files. See [Scalars](/schema/scalars) for more details.
|
|
84
|
+
|
|
85
|
+
## Output Paths
|
|
86
|
+
|
|
87
|
+
Customize output file locations or disable specific outputs:
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
export default defineConfig({
|
|
91
|
+
output: {
|
|
92
|
+
typeDefsPath: "generated/schema.ts", // Custom path
|
|
93
|
+
resolversPath: "generated/resolvers.ts",
|
|
94
|
+
schemaPath: null, // Disable SDL output
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Output Options
|
|
100
|
+
|
|
101
|
+
| Option | Type | Default | Description |
|
|
102
|
+
|--------|------|---------|-------------|
|
|
103
|
+
| `typeDefsPath` | `string` \| `null` | `"src/gqlkit/__generated__/typeDefs.ts"` | Path for the TypeDefs output |
|
|
104
|
+
| `resolversPath` | `string` \| `null` | `"src/gqlkit/__generated__/resolvers.ts"` | Path for the resolvers output |
|
|
105
|
+
| `schemaPath` | `string` \| `null` | `"src/gqlkit/__generated__/schema.graphql"` | Path for the SDL output |
|
|
106
|
+
|
|
107
|
+
Set any path to `null` to disable that output.
|
|
108
|
+
|
|
109
|
+
## Hooks
|
|
110
|
+
|
|
111
|
+
Execute commands after file generation:
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
export default defineConfig({
|
|
115
|
+
hooks: {
|
|
116
|
+
// Single command
|
|
117
|
+
afterAllFileWrite: "prettier --write",
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
You can also specify multiple commands to run sequentially:
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
export default defineConfig({
|
|
126
|
+
hooks: {
|
|
127
|
+
// Multiple commands (executed sequentially)
|
|
128
|
+
afterAllFileWrite: ["prettier --write", "eslint --fix"],
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Available Hooks
|
|
134
|
+
|
|
135
|
+
| Hook | Description |
|
|
136
|
+
|------|-------------|
|
|
137
|
+
| `afterAllFileWrite` | Runs after all generated files are written. Receives the list of written file paths. |
|
|
138
|
+
|
|
139
|
+
## Source Directory
|
|
140
|
+
|
|
141
|
+
By default, gqlkit scans `src/gqlkit/schema` for types and resolvers.
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
export default defineConfig({
|
|
145
|
+
sourceDir: "src/graphql/schema", // Custom source directory
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
All TypeScript files (`.ts`, `.cts`, `.mts`) under this directory are scanned.
|
|
150
|
+
|
|
151
|
+
## Ignore Patterns
|
|
152
|
+
|
|
153
|
+
Exclude files from scanning using glob patterns:
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
export default defineConfig({
|
|
157
|
+
sourceIgnoreGlobs: [
|
|
158
|
+
"**/*.test.ts",
|
|
159
|
+
"**/*.spec.ts",
|
|
160
|
+
"**/testdata/**",
|
|
161
|
+
],
|
|
162
|
+
});
|
|
163
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
```sh filename="npm"
|
|
6
|
+
npm install @gqlkit-ts/runtime @graphql-tools/schema graphql
|
|
7
|
+
npm install -D @gqlkit-ts/cli
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
```sh filename="pnpm"
|
|
11
|
+
pnpm add @gqlkit-ts/runtime @graphql-tools/schema graphql
|
|
12
|
+
pnpm add -D @gqlkit-ts/cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```sh filename="yarn"
|
|
16
|
+
yarn add @gqlkit-ts/runtime @graphql-tools/schema graphql
|
|
17
|
+
yarn add -D @gqlkit-ts/cli
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Project Structure
|
|
21
|
+
|
|
22
|
+
gqlkit expects your types and resolvers to be in `src/gqlkit/schema/`:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
src/
|
|
26
|
+
└── gqlkit/
|
|
27
|
+
├── context.ts # Context type definition
|
|
28
|
+
├── gqlkit.ts # Resolver factories
|
|
29
|
+
└── schema/
|
|
30
|
+
├── user.ts # User type and resolvers
|
|
31
|
+
├── post.ts # Post type and resolvers
|
|
32
|
+
└── query.ts # Query resolvers
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Set Up Context and Resolver Factories
|
|
36
|
+
|
|
37
|
+
Create `src/gqlkit/context.ts` to define your context type:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
export type Context = {
|
|
41
|
+
currentUser: { id: string; name: string; email: string | null } | null;
|
|
42
|
+
};
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Create `src/gqlkit/gqlkit.ts` to export resolver factories:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { createGqlkitApis } from "@gqlkit-ts/runtime";
|
|
49
|
+
import type { Context } from "./context";
|
|
50
|
+
|
|
51
|
+
export const { defineQuery, defineMutation, defineField } =
|
|
52
|
+
createGqlkitApis<Context>();
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Define Your First Type
|
|
56
|
+
|
|
57
|
+
Create a simple User type in `src/gqlkit/schema/user.ts`:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
export type User = {
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
email: string | null;
|
|
64
|
+
};
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Define a Query
|
|
68
|
+
|
|
69
|
+
Create a query resolver in `src/gqlkit/schema/query.ts`:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { defineQuery } from "../gqlkit";
|
|
73
|
+
import type { NoArgs } from "@gqlkit-ts/runtime";
|
|
74
|
+
import type { User } from "./user";
|
|
75
|
+
|
|
76
|
+
export const me = defineQuery<NoArgs, User | null>(
|
|
77
|
+
(_root, _args, ctx) => ctx.currentUser
|
|
78
|
+
);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Generate Schema
|
|
82
|
+
|
|
83
|
+
Run the generator:
|
|
84
|
+
|
|
85
|
+
```sh filename="npm"
|
|
86
|
+
npm exec gqlkit gen
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```sh filename="pnpm"
|
|
90
|
+
pnpm gqlkit gen
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```sh filename="yarn"
|
|
94
|
+
yarn gqlkit gen
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
This will create files in `src/gqlkit/__generated__/`:
|
|
98
|
+
- `schema.ts` - GraphQL schema AST (DocumentNode)
|
|
99
|
+
- `resolvers.ts` - Resolver map
|
|
100
|
+
|
|
101
|
+
## Create GraphQL Schema
|
|
102
|
+
|
|
103
|
+
Use `@graphql-tools/schema` to combine the generated outputs into an executable schema:
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
107
|
+
import { typeDefs } from "./gqlkit/__generated__/schema";
|
|
108
|
+
import { resolvers } from "./gqlkit/__generated__/resolvers";
|
|
109
|
+
|
|
110
|
+
export const schema = makeExecutableSchema({ typeDefs, resolvers });
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Next Steps
|
|
114
|
+
|
|
115
|
+
- [HTTP Server Integration](./integration/yoga) - Connect your schema to graphql-yoga, Apollo Server, or other HTTP servers
|
|
116
|
+
- [Object Types](./schema/objects) - Learn more about defining types
|
|
117
|
+
- [Queries & Mutations](./schema/queries-mutations) - Advanced resolver patterns
|
package/docs/index.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# gqlkit
|
|
2
|
+
|
|
3
|
+
> gqlkit is a convention-driven code generator for GraphQL servers in TypeScript. Define GraphQL types and resolver signatures in TypeScript, then `gqlkit gen` generates GraphQL schema AST and a resolver map from your codebase.
|
|
4
|
+
|
|
5
|
+
## Documentation
|
|
6
|
+
|
|
7
|
+
- [What is gqlkit?](./what-is-gqlkit.md): gqlkit is a convention-driven code generator for GraphQL servers in TypeScript.
|
|
8
|
+
- [Getting Started](./getting-started.md): gqlkit expects your types and resolvers to be in `src/gqlkit/schema/`:
|
|
9
|
+
|
|
10
|
+
## Schema Definition
|
|
11
|
+
|
|
12
|
+
- [Schema Definition](./schema.md): gqlkit generates GraphQL schema from your TypeScript types. All exported types from `src/gqlkit/schema/` are automatically scanned and converted to GraphQL types.
|
|
13
|
+
- [Object Types](./schema/objects.md): Plain TypeScript type exports become GraphQL Object types.
|
|
14
|
+
- [Input Types](./schema/inputs.md): TypeScript types with `Input` suffix are treated as GraphQL input types.
|
|
15
|
+
- [Queries & Mutations](./schema/queries-mutations.md): Define Query and Mutation fields using the `@gqlkit-ts/runtime` API.
|
|
16
|
+
- [Field Resolvers](./schema/fields.md): Add computed fields to object types using `defineField`. Define them alongside the type.
|
|
17
|
+
- [Scalar Types](./schema/scalars.md): gqlkit provides built-in scalar types and supports custom scalar definitions.
|
|
18
|
+
- [Enum Types](./schema/enums.md): gqlkit converts TypeScript string literal unions and enums to GraphQL enum types.
|
|
19
|
+
- [Union Types](./schema/unions.md): TypeScript union types of object types are converted to GraphQL union types.
|
|
20
|
+
- [Interface Types](./schema/interfaces.md): Define GraphQL interface types using the `GqlInterface` utility type.
|
|
21
|
+
- [Abstract Type Resolution](./schema/abstract-resolvers.md): 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.
|
|
22
|
+
- [Documentation](./schema/documentation.md): gqlkit extracts TSDoc/JSDoc comments and converts them to GraphQL descriptions.
|
|
23
|
+
- [Custom Directives](./schema/directives.md): Define custom directives using the `GqlDirective` utility type and attach them using `GqlField` or `GqlObject`.
|
|
24
|
+
|
|
25
|
+
## Integration
|
|
26
|
+
|
|
27
|
+
- [graphql-yoga](./integration/yoga.md): [graphql-yoga](https://the-guild.dev/graphql/yoga-server) is a batteries-included GraphQL server that works in any JavaScript runtime.
|
|
28
|
+
- [Apollo Server](./integration/apollo.md): [Apollo Server](https://www.apollographql.com/docs/apollo-server/) is a popular GraphQL server with extensive features and ecosystem.
|
|
29
|
+
- [Drizzle ORM](./integration/drizzle.md): [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.
|
|
30
|
+
|
|
31
|
+
## Guides
|
|
32
|
+
|
|
33
|
+
- [Configuration](./configuration.md): gqlkit can be configured via `gqlkit.config.ts` in your project root.
|