@gqlkit-ts/cli 0.0.1 → 0.1.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 +46 -0
- package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -0
- package/dist/auto-type-generator/auto-type-generator.js +353 -0
- package/dist/auto-type-generator/auto-type-generator.js.map +1 -0
- package/dist/auto-type-generator/auto-type-generator.test.d.ts +2 -0
- package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +1 -0
- package/dist/auto-type-generator/auto-type-generator.test.js +613 -0
- package/dist/auto-type-generator/auto-type-generator.test.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/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/name-collision-validator.test.d.ts +2 -0
- package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +1 -0
- package/dist/auto-type-generator/name-collision-validator.test.js +358 -0
- package/dist/auto-type-generator/name-collision-validator.test.js.map +1 -0
- package/dist/auto-type-generator/naming-convention.d.ts +40 -0
- package/dist/auto-type-generator/naming-convention.d.ts.map +1 -0
- package/dist/auto-type-generator/naming-convention.js +59 -0
- package/dist/auto-type-generator/naming-convention.js.map +1 -0
- package/dist/auto-type-generator/naming-convention.test.d.ts +2 -0
- package/dist/auto-type-generator/naming-convention.test.d.ts.map +1 -0
- package/dist/auto-type-generator/naming-convention.test.js +132 -0
- package/dist/auto-type-generator/naming-convention.test.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/gen.test.d.ts +2 -0
- package/dist/commands/gen.test.d.ts.map +1 -0
- package/dist/commands/gen.test.js +226 -0
- package/dist/commands/gen.test.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/loader.test.d.ts +2 -0
- package/dist/config-loader/loader.test.d.ts.map +1 -0
- package/dist/config-loader/loader.test.js +123 -0
- package/dist/config-loader/loader.test.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/config-loader/validator.test.d.ts +2 -0
- package/dist/config-loader/validator.test.d.ts.map +1 -0
- package/dist/config-loader/validator.test.js +846 -0
- package/dist/config-loader/validator.test.js.map +1 -0
- package/dist/gen-orchestrator/golden.test.d.ts +2 -0
- package/dist/gen-orchestrator/golden.test.d.ts.map +1 -0
- package/dist/gen-orchestrator/golden.test.js +102 -0
- package/dist/gen-orchestrator/golden.test.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/hook-executor/hook-executor.test.d.ts +2 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +1 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +167 -0
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.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 +407 -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/reporter/progress-reporter.test.d.ts +2 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +1 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.test.js +74 -0
- package/dist/gen-orchestrator/reporter/progress-reporter.test.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 +40 -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 +50 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.js +685 -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/resolver-extractor/validator/only-validator.test.d.ts +8 -0
- package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +1 -0
- package/dist/resolver-extractor/validator/only-validator.test.js +352 -0
- package/dist/resolver-extractor/validator/only-validator.test.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/builder/ast-builder.test.d.ts +2 -0
- package/dist/schema-generator/builder/ast-builder.test.d.ts.map +1 -0
- package/dist/schema-generator/builder/ast-builder.test.js +469 -0
- package/dist/schema-generator/builder/ast-builder.test.js.map +1 -0
- package/dist/schema-generator/emitter/code-emitter.d.ts +7 -0
- package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -0
- package/dist/schema-generator/emitter/code-emitter.js +201 -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 +76 -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 +93 -0
- package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -0
- package/dist/schema-generator/integrator/result-integrator.js +396 -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 +70 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +128 -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 +422 -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 +99 -0
- package/dist/shared/file-scanner.js.map +1 -0
- package/dist/shared/file-scanner.test.d.ts +2 -0
- package/dist/shared/file-scanner.test.d.ts.map +1 -0
- package/dist/shared/file-scanner.test.js +138 -0
- package/dist/shared/file-scanner.test.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 +8 -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 +22 -0
- package/dist/shared/interface-detector.d.ts.map +1 -0
- package/dist/shared/interface-detector.js +90 -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/interface-validator.test.d.ts +2 -0
- package/dist/shared/interface-validator.test.d.ts.map +1 -0
- package/dist/shared/interface-validator.test.js +145 -0
- package/dist/shared/interface-validator.test.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/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 +72 -0
- package/dist/shared/type-converter.js.map +1 -0
- package/dist/shared/typescript-utils.d.ts +55 -0
- package/dist/shared/typescript-utils.d.ts.map +1 -0
- package/dist/shared/typescript-utils.js +149 -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 +133 -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 +299 -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/type-extractor.d.ts +27 -0
- package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -0
- package/dist/type-extractor/extractor/type-extractor.js +1116 -0
- package/dist/type-extractor/extractor/type-extractor.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/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 +40 -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 +5 -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/typescript.d.ts +86 -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/types/typescript.test.d.ts +2 -0
- package/dist/type-extractor/types/typescript.test.d.ts.map +1 -0
- package/dist/type-extractor/types/typescript.test.js +287 -0
- package/dist/type-extractor/types/typescript.test.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 +32 -0
- package/docs/integration/apollo.md +109 -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 +162 -0
- package/docs/schema/fields.md +184 -0
- package/docs/schema/index.md +38 -0
- package/docs/schema/inputs.md +277 -0
- package/docs/schema/interfaces.md +178 -0
- package/docs/schema/objects.md +186 -0
- package/docs/schema/queries-mutations.md +205 -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 +59 -7
- package/README.md +0 -45
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Information about a detected scalar type from metadata detection.
|
|
3
|
+
*/
|
|
4
|
+
export interface ScalarMetadataInfo {
|
|
5
|
+
/** The GraphQL scalar name */
|
|
6
|
+
readonly scalarName: string;
|
|
7
|
+
/** The TypeScript type name */
|
|
8
|
+
readonly typeName: string;
|
|
9
|
+
/** Usage constraint: "input", "output", or null for both */
|
|
10
|
+
readonly only: "input" | "output" | null;
|
|
11
|
+
/** Source file path */
|
|
12
|
+
readonly sourceFile: string;
|
|
13
|
+
/** Line number in source file */
|
|
14
|
+
readonly line: number;
|
|
15
|
+
/** TSDoc description if available */
|
|
16
|
+
readonly description: string | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Configuration scalar mapping information.
|
|
20
|
+
*/
|
|
21
|
+
export interface ConfigScalarMapping extends ScalarMetadataInfo {
|
|
22
|
+
/** Whether this mapping comes from config file */
|
|
23
|
+
readonly fromConfig: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reference to a scalar type.
|
|
27
|
+
*/
|
|
28
|
+
export interface ScalarTypeRef {
|
|
29
|
+
/** TypeScript type name */
|
|
30
|
+
readonly typeName: string;
|
|
31
|
+
/** Source file path */
|
|
32
|
+
readonly sourceFile: string;
|
|
33
|
+
/** Line number in source file */
|
|
34
|
+
readonly line: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Description source information.
|
|
38
|
+
*/
|
|
39
|
+
export interface DescriptionSource {
|
|
40
|
+
/** Description text */
|
|
41
|
+
readonly text: string;
|
|
42
|
+
/** Source file path */
|
|
43
|
+
readonly sourceFile: string;
|
|
44
|
+
/** Line number in source file */
|
|
45
|
+
readonly line: number;
|
|
46
|
+
/** Whether this description comes from config */
|
|
47
|
+
readonly fromConfig: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Collected scalar type with input/output type information.
|
|
51
|
+
*/
|
|
52
|
+
export interface CollectedScalarType {
|
|
53
|
+
/** GraphQL scalar name */
|
|
54
|
+
readonly scalarName: string;
|
|
55
|
+
/** Input type reference (exactly one required) */
|
|
56
|
+
readonly inputType: ScalarTypeRef | null;
|
|
57
|
+
/** Output type references (one or more required, union built from these) */
|
|
58
|
+
readonly outputTypes: ReadonlyArray<ScalarTypeRef>;
|
|
59
|
+
/** Description sources */
|
|
60
|
+
readonly descriptions: ReadonlyArray<DescriptionSource>;
|
|
61
|
+
/** Whether this is a custom scalar (not built-in) */
|
|
62
|
+
readonly isCustom: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Diagnostic error information.
|
|
66
|
+
*/
|
|
67
|
+
export interface ScalarCollectorDiagnostic {
|
|
68
|
+
readonly code: "MULTIPLE_INPUT_TYPES" | "MISSING_INPUT_TYPE" | "MISSING_OUTPUT_TYPE";
|
|
69
|
+
readonly message: string;
|
|
70
|
+
readonly severity: "error";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Result type for scalar collection.
|
|
74
|
+
*/
|
|
75
|
+
export type CollectScalarsResult = {
|
|
76
|
+
success: true;
|
|
77
|
+
data: ReadonlyArray<CollectedScalarType>;
|
|
78
|
+
} | {
|
|
79
|
+
success: false;
|
|
80
|
+
errors: ReadonlyArray<ScalarCollectorDiagnostic>;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Merges multiple descriptions into a single string with blank line separators.
|
|
84
|
+
* Descriptions are expected to be pre-sorted by file path alphabetically
|
|
85
|
+
* and by line number within the same file.
|
|
86
|
+
*
|
|
87
|
+
* @param descriptions - Array of description sources to merge
|
|
88
|
+
* @returns Merged description string, or null if no descriptions available
|
|
89
|
+
*/
|
|
90
|
+
export declare function mergeDescriptions(descriptions: ReadonlyArray<DescriptionSource>): string | null;
|
|
91
|
+
/**
|
|
92
|
+
* Options for scalar collection.
|
|
93
|
+
*/
|
|
94
|
+
export interface CollectScalarsOptions {
|
|
95
|
+
/** Root path for normalizing source file paths in error messages */
|
|
96
|
+
readonly sourceRoot?: string | null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Collects scalar definitions from types and config,
|
|
100
|
+
* validates constraints, and builds type parameters.
|
|
101
|
+
*
|
|
102
|
+
* @param scalarInfos - Scalar metadata from source files
|
|
103
|
+
* @param configScalars - Scalar mappings from config file
|
|
104
|
+
* @param options - Collection options
|
|
105
|
+
* @returns Result with collected scalars or diagnostics
|
|
106
|
+
*/
|
|
107
|
+
export declare function collectScalars(scalarInfos: ReadonlyArray<ScalarMetadataInfo>, configScalars: ReadonlyArray<ConfigScalarMapping>, options?: CollectScalarsOptions): CollectScalarsResult;
|
|
108
|
+
//# sourceMappingURL=scalar-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalar-collector.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/collector/scalar-collector.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,uBAAuB;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uBAAuB;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,0BAA0B;IAC1B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACxD,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EACT,sBAAsB,GACtB,oBAAoB,GACpB,qBAAqB,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CAAE,GAC3D;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAA;CAAE,CAAC;AAuCzE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAC7C,MAAM,GAAG,IAAI,CAKf;AAaD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,EACjD,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAqFtB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScalarCollector collects scalar definitions from types and config,
|
|
3
|
+
* validates input/output type constraints, and builds type parameters.
|
|
4
|
+
*/
|
|
5
|
+
import { isBuiltInScalar } from "../../shared/constants.js";
|
|
6
|
+
function createTypeRef(info) {
|
|
7
|
+
return {
|
|
8
|
+
typeName: info.typeName,
|
|
9
|
+
sourceFile: info.sourceFile,
|
|
10
|
+
line: info.line,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function createDescriptionSource(info, fromConfig) {
|
|
14
|
+
if (!info.description)
|
|
15
|
+
return null;
|
|
16
|
+
return {
|
|
17
|
+
text: info.description,
|
|
18
|
+
sourceFile: info.sourceFile,
|
|
19
|
+
line: info.line,
|
|
20
|
+
fromConfig,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function sortDescriptions(descriptions) {
|
|
24
|
+
return [...descriptions].sort((a, b) => {
|
|
25
|
+
const fileCompare = a.sourceFile.localeCompare(b.sourceFile);
|
|
26
|
+
if (fileCompare !== 0)
|
|
27
|
+
return fileCompare;
|
|
28
|
+
return a.line - b.line;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Merges multiple descriptions into a single string with blank line separators.
|
|
33
|
+
* Descriptions are expected to be pre-sorted by file path alphabetically
|
|
34
|
+
* and by line number within the same file.
|
|
35
|
+
*
|
|
36
|
+
* @param descriptions - Array of description sources to merge
|
|
37
|
+
* @returns Merged description string, or null if no descriptions available
|
|
38
|
+
*/
|
|
39
|
+
export function mergeDescriptions(descriptions) {
|
|
40
|
+
if (descriptions.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return descriptions.map((d) => d.text).join("\n\n");
|
|
44
|
+
}
|
|
45
|
+
function formatTypeLocation(ref, sourceRoot) {
|
|
46
|
+
const filePath = sourceRoot !== null
|
|
47
|
+
? ref.sourceFile.replace(sourceRoot, "").replace(/^[/\\]/, "")
|
|
48
|
+
: ref.sourceFile;
|
|
49
|
+
return `${filePath.replace(/\\/g, "/")}:${ref.line}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Collects scalar definitions from types and config,
|
|
53
|
+
* validates constraints, and builds type parameters.
|
|
54
|
+
*
|
|
55
|
+
* @param scalarInfos - Scalar metadata from source files
|
|
56
|
+
* @param configScalars - Scalar mappings from config file
|
|
57
|
+
* @param options - Collection options
|
|
58
|
+
* @returns Result with collected scalars or diagnostics
|
|
59
|
+
*/
|
|
60
|
+
export function collectScalars(scalarInfos, configScalars, options = {}) {
|
|
61
|
+
const sourceRoot = options.sourceRoot ?? null;
|
|
62
|
+
const scalarGroups = new Map();
|
|
63
|
+
const processInfo = (info, fromConfig) => {
|
|
64
|
+
if (isBuiltInScalar(info.scalarName)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
let group = scalarGroups.get(info.scalarName);
|
|
68
|
+
if (!group) {
|
|
69
|
+
group = { inputTypes: [], outputTypes: [], descriptions: [] };
|
|
70
|
+
scalarGroups.set(info.scalarName, group);
|
|
71
|
+
}
|
|
72
|
+
const typeRef = createTypeRef(info);
|
|
73
|
+
if (info.only === null || info.only === "input") {
|
|
74
|
+
group.inputTypes.push(typeRef);
|
|
75
|
+
}
|
|
76
|
+
if (info.only === null || info.only === "output") {
|
|
77
|
+
group.outputTypes.push(typeRef);
|
|
78
|
+
}
|
|
79
|
+
const descSource = createDescriptionSource(info, fromConfig);
|
|
80
|
+
if (descSource) {
|
|
81
|
+
group.descriptions.push(descSource);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
for (const info of scalarInfos) {
|
|
85
|
+
processInfo(info, false);
|
|
86
|
+
}
|
|
87
|
+
for (const info of configScalars) {
|
|
88
|
+
processInfo(info, info.fromConfig);
|
|
89
|
+
}
|
|
90
|
+
const diagnostics = [];
|
|
91
|
+
const collectedScalars = [];
|
|
92
|
+
for (const [scalarName, group] of scalarGroups) {
|
|
93
|
+
if (group.inputTypes.length > 1) {
|
|
94
|
+
const typeLocations = group.inputTypes
|
|
95
|
+
.map((t) => `'${t.typeName}' at ${formatTypeLocation(t, sourceRoot)}`)
|
|
96
|
+
.join(", ");
|
|
97
|
+
diagnostics.push({
|
|
98
|
+
code: "MULTIPLE_INPUT_TYPES",
|
|
99
|
+
message: `Custom scalar '${scalarName}' has multiple input types: ${typeLocations}. Only one input type is allowed per scalar.`,
|
|
100
|
+
severity: "error",
|
|
101
|
+
});
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (group.inputTypes.length === 0) {
|
|
105
|
+
diagnostics.push({
|
|
106
|
+
code: "MISSING_INPUT_TYPE",
|
|
107
|
+
message: `Custom scalar '${scalarName}' has no input type. Add a type without 'only' constraint or with 'only: "input"'.`,
|
|
108
|
+
severity: "error",
|
|
109
|
+
});
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (group.outputTypes.length === 0) {
|
|
113
|
+
diagnostics.push({
|
|
114
|
+
code: "MISSING_OUTPUT_TYPE",
|
|
115
|
+
message: `Custom scalar '${scalarName}' has no output type. Add a type without 'only' constraint or with 'only: "output"'.`,
|
|
116
|
+
severity: "error",
|
|
117
|
+
});
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
collectedScalars.push({
|
|
121
|
+
scalarName,
|
|
122
|
+
inputType: group.inputTypes[0] ?? null,
|
|
123
|
+
outputTypes: group.outputTypes,
|
|
124
|
+
descriptions: sortDescriptions(group.descriptions),
|
|
125
|
+
isCustom: true,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (diagnostics.length > 0) {
|
|
129
|
+
return { success: false, errors: diagnostics };
|
|
130
|
+
}
|
|
131
|
+
return { success: true, data: collectedScalars };
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=scalar-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalar-collector.js","sourceRoot":"","sources":["../../../src/type-extractor/collector/scalar-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field and enum value eligibility checks for GraphQL schema generation.
|
|
3
|
+
*
|
|
4
|
+
* These functions determine whether a field or enum value can be included
|
|
5
|
+
* in the generated GraphQL schema based on naming conventions and other rules.
|
|
6
|
+
*/
|
|
7
|
+
export type SkipReason = {
|
|
8
|
+
readonly code: "INVALID_NAME";
|
|
9
|
+
readonly message: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly code: "RESERVED_NAME";
|
|
12
|
+
readonly message: string;
|
|
13
|
+
};
|
|
14
|
+
export type EligibilityResult = {
|
|
15
|
+
readonly eligible: true;
|
|
16
|
+
readonly skipReason: null;
|
|
17
|
+
} | {
|
|
18
|
+
readonly eligible: false;
|
|
19
|
+
readonly skipReason: SkipReason;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Check if a field name is eligible to be included as a GraphQL object field.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isEligibleAsObjectField(fieldName: string): EligibilityResult;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a field name is eligible to be included as a GraphQL input object field.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isEligibleAsInputObjectField(fieldName: string): EligibilityResult;
|
|
29
|
+
/**
|
|
30
|
+
* Check if an enum value name is eligible to be included as a GraphQL enum value.
|
|
31
|
+
* Note: The name should be the converted (SCREAMING_SNAKE_CASE) name, not the original.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isEligibleAsEnumValue(convertedName: string, originalName: string): EligibilityResult;
|
|
34
|
+
//# sourceMappingURL=field-eligibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-eligibility.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/converter/field-eligibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAWlE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAsB5E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAsBnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,iBAAiB,CAsBnB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field and enum value eligibility checks for GraphQL schema generation.
|
|
3
|
+
*
|
|
4
|
+
* These functions determine whether a field or enum value can be included
|
|
5
|
+
* in the generated GraphQL schema based on naming conventions and other rules.
|
|
6
|
+
*/
|
|
7
|
+
const GRAPHQL_NAME_PATTERN = /^[_A-Za-z][_0-9A-Za-z]*$/;
|
|
8
|
+
function isValidGraphQLName(name) {
|
|
9
|
+
if (name.length === 0)
|
|
10
|
+
return false;
|
|
11
|
+
return GRAPHQL_NAME_PATTERN.test(name);
|
|
12
|
+
}
|
|
13
|
+
function isReservedName(name) {
|
|
14
|
+
return name.startsWith("__");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if a field name is eligible to be included as a GraphQL object field.
|
|
18
|
+
*/
|
|
19
|
+
export function isEligibleAsObjectField(fieldName) {
|
|
20
|
+
if (isReservedName(fieldName)) {
|
|
21
|
+
return {
|
|
22
|
+
eligible: false,
|
|
23
|
+
skipReason: {
|
|
24
|
+
code: "RESERVED_NAME",
|
|
25
|
+
message: `Field '${fieldName}' starts with '__' which is reserved for GraphQL introspection`,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (!isValidGraphQLName(fieldName)) {
|
|
30
|
+
return {
|
|
31
|
+
eligible: false,
|
|
32
|
+
skipReason: {
|
|
33
|
+
code: "INVALID_NAME",
|
|
34
|
+
message: `Field '${fieldName}' is not a valid GraphQL identifier (must match /^[_A-Za-z][_0-9A-Za-z]*$/)`,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return { eligible: true, skipReason: null };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if a field name is eligible to be included as a GraphQL input object field.
|
|
42
|
+
*/
|
|
43
|
+
export function isEligibleAsInputObjectField(fieldName) {
|
|
44
|
+
if (isReservedName(fieldName)) {
|
|
45
|
+
return {
|
|
46
|
+
eligible: false,
|
|
47
|
+
skipReason: {
|
|
48
|
+
code: "RESERVED_NAME",
|
|
49
|
+
message: `Input field '${fieldName}' starts with '__' which is reserved for GraphQL introspection`,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (!isValidGraphQLName(fieldName)) {
|
|
54
|
+
return {
|
|
55
|
+
eligible: false,
|
|
56
|
+
skipReason: {
|
|
57
|
+
code: "INVALID_NAME",
|
|
58
|
+
message: `Input field '${fieldName}' is not a valid GraphQL identifier (must match /^[_A-Za-z][_0-9A-Za-z]*$/)`,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { eligible: true, skipReason: null };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if an enum value name is eligible to be included as a GraphQL enum value.
|
|
66
|
+
* Note: The name should be the converted (SCREAMING_SNAKE_CASE) name, not the original.
|
|
67
|
+
*/
|
|
68
|
+
export function isEligibleAsEnumValue(convertedName, originalName) {
|
|
69
|
+
if (isReservedName(convertedName)) {
|
|
70
|
+
return {
|
|
71
|
+
eligible: false,
|
|
72
|
+
skipReason: {
|
|
73
|
+
code: "RESERVED_NAME",
|
|
74
|
+
message: `Enum member '${originalName}' converts to '${convertedName}' which starts with '__' (reserved for GraphQL introspection)`,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (!isValidGraphQLName(convertedName)) {
|
|
79
|
+
return {
|
|
80
|
+
eligible: false,
|
|
81
|
+
skipReason: {
|
|
82
|
+
code: "INVALID_NAME",
|
|
83
|
+
message: `Enum member '${originalName}' converts to '${convertedName}' which is not a valid GraphQL identifier`,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return { eligible: true, skipReason: null };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=field-eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-eligibility.js","sourceRoot":"","sources":["../../../src/type-extractor/converter/field-eligibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAUxD,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,UAAU,SAAS,gEAAgE;aAC7F;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,UAAU,SAAS,6EAA6E;aAC1G;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAiB;IAEjB,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,gBAAgB,SAAS,gEAAgE;aACnG;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,gBAAgB,SAAS,6EAA6E;aAChH;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,aAAqB,EACrB,YAAoB;IAEpB,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,gBAAgB,YAAY,kBAAkB,aAAa,+DAA+D;aACpI;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,gBAAgB,YAAY,kBAAkB,aAAa,2CAA2C;aAChH;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Diagnostic, ExtractedTypeInfo, GraphQLTypeInfo } from "../types/index.js";
|
|
2
|
+
export interface ConversionResult {
|
|
3
|
+
readonly types: ReadonlyArray<GraphQLTypeInfo>;
|
|
4
|
+
readonly diagnostics: ReadonlyArray<Diagnostic>;
|
|
5
|
+
}
|
|
6
|
+
export declare function convertToGraphQL(extractedTypes: ReadonlyArray<ExtractedTypeInfo>): ConversionResult;
|
|
7
|
+
//# sourceMappingURL=graphql-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-converter.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/converter/graphql-converter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EAGV,iBAAiB,EAEjB,eAAe,EAIhB,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAgOD,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAC/C,gBAAgB,CAsJlB"}
|