@gqlkit-ts/cli 0.1.0 → 0.3.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/dist/auto-type-generator/auto-type-generator.d.ts +26 -4
- package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -1
- package/dist/auto-type-generator/auto-type-generator.js +846 -152
- package/dist/auto-type-generator/auto-type-generator.js.map +1 -1
- package/dist/auto-type-generator/index.d.ts +9 -2
- package/dist/auto-type-generator/index.d.ts.map +1 -1
- package/dist/auto-type-generator/index.js +3 -0
- package/dist/auto-type-generator/index.js.map +1 -1
- package/dist/auto-type-generator/inline-enum-collector.d.ts +39 -0
- package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-enum-collector.js +193 -0
- package/dist/auto-type-generator/inline-enum-collector.js.map +1 -0
- package/dist/auto-type-generator/inline-object-traverser.d.ts +20 -0
- package/dist/auto-type-generator/inline-object-traverser.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-object-traverser.js +22 -0
- package/dist/auto-type-generator/inline-object-traverser.js.map +1 -0
- package/dist/auto-type-generator/inline-union-collector.d.ts +29 -0
- package/dist/auto-type-generator/inline-union-collector.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-union-collector.js +216 -0
- package/dist/auto-type-generator/inline-union-collector.js.map +1 -0
- package/dist/auto-type-generator/inline-union-types.d.ts +29 -0
- package/dist/auto-type-generator/inline-union-types.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-union-types.js +2 -0
- package/dist/auto-type-generator/inline-union-types.js.map +1 -0
- package/dist/auto-type-generator/inline-union-validator.d.ts +76 -0
- package/dist/auto-type-generator/inline-union-validator.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-union-validator.js +329 -0
- package/dist/auto-type-generator/inline-union-validator.js.map +1 -0
- package/dist/auto-type-generator/naming-convention.d.ts +22 -1
- package/dist/auto-type-generator/naming-convention.d.ts.map +1 -1
- package/dist/auto-type-generator/naming-convention.js +24 -0
- package/dist/auto-type-generator/naming-convention.js.map +1 -1
- package/dist/auto-type-generator/resolve-type-generator.d.ts +20 -0
- package/dist/auto-type-generator/resolve-type-generator.d.ts.map +1 -0
- package/dist/auto-type-generator/resolve-type-generator.js +2 -0
- package/dist/auto-type-generator/resolve-type-generator.js.map +1 -0
- package/dist/auto-type-generator/resolver-field-iterator.d.ts +13 -0
- package/dist/auto-type-generator/resolver-field-iterator.d.ts.map +1 -0
- package/dist/auto-type-generator/resolver-field-iterator.js +22 -0
- package/dist/auto-type-generator/resolver-field-iterator.js.map +1 -0
- package/dist/auto-type-generator/typename-extractor.d.ts +26 -0
- package/dist/auto-type-generator/typename-extractor.d.ts.map +1 -0
- package/dist/auto-type-generator/typename-extractor.js +142 -0
- package/dist/auto-type-generator/typename-extractor.js.map +1 -0
- package/dist/auto-type-generator/typename-resolve-type-generator.d.ts +35 -0
- package/dist/auto-type-generator/typename-resolve-type-generator.d.ts.map +1 -0
- package/dist/auto-type-generator/typename-resolve-type-generator.js +177 -0
- package/dist/auto-type-generator/typename-resolve-type-generator.js.map +1 -0
- package/dist/auto-type-generator/typename-types.d.ts +43 -0
- package/dist/auto-type-generator/typename-types.d.ts.map +1 -0
- package/dist/auto-type-generator/typename-types.js +37 -0
- package/dist/auto-type-generator/typename-types.js.map +1 -0
- package/dist/auto-type-generator/typename-validator.d.ts +37 -0
- package/dist/auto-type-generator/typename-validator.d.ts.map +1 -0
- package/dist/auto-type-generator/typename-validator.js +206 -0
- package/dist/auto-type-generator/typename-validator.js.map +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/docs.d.ts +51 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +154 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/gen-orchestrator/orchestrator.js +119 -14
- package/dist/gen-orchestrator/orchestrator.js.map +1 -1
- package/dist/resolver-extractor/extract-resolvers.d.ts +28 -1
- package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -1
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +16 -1
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -1
- package/dist/resolver-extractor/extractor/define-api-extractor.js +86 -309
- package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -1
- package/dist/resolver-extractor/index.d.ts +0 -1
- package/dist/resolver-extractor/index.d.ts.map +1 -1
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +1 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -1
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js +9 -5
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -1
- package/dist/schema-generator/emitter/code-emitter.d.ts +10 -2
- package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -1
- package/dist/schema-generator/emitter/code-emitter.js +39 -4
- package/dist/schema-generator/emitter/code-emitter.js.map +1 -1
- package/dist/schema-generator/generate-schema.d.ts +1 -0
- package/dist/schema-generator/generate-schema.d.ts.map +1 -1
- package/dist/schema-generator/generate-schema.js +90 -4
- package/dist/schema-generator/generate-schema.js.map +1 -1
- package/dist/schema-generator/integrator/result-integrator.d.ts +34 -2
- package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -1
- package/dist/schema-generator/integrator/result-integrator.js +96 -1
- package/dist/schema-generator/integrator/result-integrator.js.map +1 -1
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +2 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -1
- package/dist/schema-generator/resolver-collector/resolver-collector.js +22 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -1
- package/dist/shared/constants.d.ts +0 -16
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +0 -19
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/directive-detector.d.ts.map +1 -1
- package/dist/shared/directive-detector.js +8 -15
- package/dist/shared/directive-detector.js.map +1 -1
- package/dist/shared/enum-prefix-detector.d.ts +63 -0
- package/dist/shared/enum-prefix-detector.d.ts.map +1 -0
- package/dist/shared/enum-prefix-detector.js +80 -0
- package/dist/shared/enum-prefix-detector.js.map +1 -0
- package/dist/shared/file-scanner.d.ts.map +1 -1
- package/dist/shared/file-scanner.js +5 -3
- package/dist/shared/file-scanner.js.map +1 -1
- package/dist/shared/ignore-fields-detector.d.ts +26 -0
- package/dist/shared/ignore-fields-detector.d.ts.map +1 -0
- package/dist/shared/ignore-fields-detector.js +83 -0
- package/dist/shared/ignore-fields-detector.js.map +1 -0
- package/dist/shared/ignore-fields-validator.d.ts +29 -0
- package/dist/shared/ignore-fields-validator.d.ts.map +1 -0
- package/dist/shared/ignore-fields-validator.js +43 -0
- package/dist/shared/ignore-fields-validator.js.map +1 -0
- package/dist/shared/index.d.ts +3 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -3
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/interface-detector.d.ts +3 -2
- package/dist/shared/interface-detector.d.ts.map +1 -1
- package/dist/shared/interface-detector.js +54 -11
- package/dist/shared/interface-detector.js.map +1 -1
- 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/source-location.d.ts +5 -0
- package/dist/shared/source-location.d.ts.map +1 -1
- package/dist/shared/source-location.js +7 -0
- package/dist/shared/source-location.js.map +1 -1
- package/dist/shared/type-converter.d.ts.map +1 -1
- package/dist/shared/type-converter.js +11 -0
- package/dist/shared/type-converter.js.map +1 -1
- package/dist/shared/typescript-utils.d.ts +34 -7
- package/dist/shared/typescript-utils.d.ts.map +1 -1
- package/dist/shared/typescript-utils.js +72 -24
- package/dist/shared/typescript-utils.js.map +1 -1
- package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -1
- package/dist/type-extractor/collector/scalar-collector.js +4 -14
- package/dist/type-extractor/collector/scalar-collector.js.map +1 -1
- package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -1
- package/dist/type-extractor/converter/graphql-converter.js +57 -4
- package/dist/type-extractor/converter/graphql-converter.js.map +1 -1
- 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 +433 -0
- package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -0
- package/dist/type-extractor/extractor/type-extractor.d.ts +12 -3
- package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor/extractor/type-extractor.js +260 -229
- package/dist/type-extractor/extractor/type-extractor.js.map +1 -1
- 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/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 +1 -1
- package/dist/type-extractor/types/diagnostics.d.ts.map +1 -1
- package/dist/type-extractor/types/graphql.d.ts +2 -0
- package/dist/type-extractor/types/graphql.d.ts.map +1 -1
- package/dist/type-extractor/types/index.d.ts +2 -1
- package/dist/type-extractor/types/index.d.ts.map +1 -1
- package/dist/type-extractor/types/index.js +1 -1
- package/dist/type-extractor/types/index.js.map +1 -1
- package/dist/type-extractor/types/ts-type-reference-factory.d.ts +47 -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 +75 -0
- package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -0
- package/dist/type-extractor/types/typescript.d.ts +25 -1
- package/dist/type-extractor/types/typescript.d.ts.map +1 -1
- package/dist/type-extractor/validator/type-validator.js +1 -1
- package/dist/type-extractor/validator/type-validator.js.map +1 -1
- package/docs/coding-agents.md +64 -0
- package/docs/configuration.md +6 -20
- package/docs/getting-started.md +15 -12
- package/docs/index.md +36 -21
- package/docs/integration/apollo.md +8 -40
- package/docs/integration/drizzle.md +187 -0
- package/docs/integration/prisma.md +196 -0
- package/docs/integration/yoga.md +8 -40
- package/docs/schema/abstract-resolvers.md +117 -0
- package/docs/schema/directives.md +5 -0
- package/docs/schema/documentation.md +5 -0
- package/docs/schema/enums.md +307 -0
- package/docs/schema/fields.md +66 -0
- package/docs/schema/index.md +21 -0
- package/docs/schema/inputs.md +117 -15
- package/docs/schema/interfaces.md +31 -1
- package/docs/schema/objects.md +42 -0
- package/docs/schema/queries-mutations.md +138 -22
- package/docs/schema/scalars.md +5 -0
- package/docs/schema/unions.md +208 -1
- package/docs/what-is-gqlkit.md +13 -8
- package/package.json +14 -5
- package/src/auto-type-generator/auto-type-generator.ts +1670 -0
- package/src/auto-type-generator/index.ts +63 -0
- package/src/auto-type-generator/inline-enum-collector.ts +338 -0
- package/src/auto-type-generator/inline-object-traverser.ts +49 -0
- package/src/auto-type-generator/inline-union-collector.ts +402 -0
- package/src/auto-type-generator/inline-union-types.ts +33 -0
- package/src/auto-type-generator/inline-union-validator.ts +482 -0
- package/src/auto-type-generator/name-collision-validator.ts +119 -0
- package/src/auto-type-generator/naming-convention.ts +163 -0
- package/src/auto-type-generator/resolve-type-generator.ts +21 -0
- package/src/auto-type-generator/resolver-field-iterator.ts +39 -0
- package/src/auto-type-generator/typename-extractor.ts +230 -0
- package/src/auto-type-generator/typename-resolve-type-generator.ts +281 -0
- package/src/auto-type-generator/typename-types.ts +66 -0
- package/src/auto-type-generator/typename-validator.ts +326 -0
- package/src/cli.ts +13 -0
- package/src/commands/docs.ts +211 -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 +798 -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 +82 -0
- package/src/resolver-extractor/extractor/define-api-extractor.ts +740 -0
- package/src/resolver-extractor/index.ts +13 -0
- package/src/resolver-extractor/validator/abstract-resolver-validator.ts +259 -0
- package/src/schema-generator/builder/ast-builder.ts +706 -0
- package/src/schema-generator/emitter/code-emitter.ts +385 -0
- package/src/schema-generator/emitter/sdl-emitter.ts +13 -0
- package/src/schema-generator/generate-schema.ts +267 -0
- package/src/schema-generator/index.ts +19 -0
- package/src/schema-generator/integrator/result-integrator.ts +759 -0
- package/src/schema-generator/pruner/schema-pruner.ts +112 -0
- package/src/schema-generator/resolver-collector/resolver-collector.ts +157 -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/enum-prefix-detector.ts +99 -0
- package/src/shared/file-scanner.ts +170 -0
- package/src/shared/ignore-fields-detector.ts +109 -0
- package/src/shared/ignore-fields-validator.ts +66 -0
- package/src/shared/index.ts +34 -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 +38 -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 +483 -0
- package/src/type-extractor/extract-types.ts +1 -0
- package/src/type-extractor/extractor/field-type-resolver.ts +614 -0
- package/src/type-extractor/extractor/type-extractor.ts +1644 -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 +109 -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 +150 -0
- package/src/type-extractor/types/typescript.ts +137 -0
- package/src/type-extractor/validator/type-validator.ts +77 -0
- package/dist/auto-type-generator/auto-type-generator.test.d.ts +0 -2
- package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +0 -1
- package/dist/auto-type-generator/auto-type-generator.test.js +0 -613
- package/dist/auto-type-generator/auto-type-generator.test.js.map +0 -1
- package/dist/auto-type-generator/name-collision-validator.test.d.ts +0 -2
- package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +0 -1
- package/dist/auto-type-generator/name-collision-validator.test.js +0 -358
- package/dist/auto-type-generator/name-collision-validator.test.js.map +0 -1
- package/dist/auto-type-generator/naming-convention.test.d.ts +0 -2
- package/dist/auto-type-generator/naming-convention.test.d.ts.map +0 -1
- package/dist/auto-type-generator/naming-convention.test.js +0 -132
- package/dist/auto-type-generator/naming-convention.test.js.map +0 -1
- package/dist/commands/gen.test.d.ts +0 -2
- package/dist/commands/gen.test.d.ts.map +0 -1
- package/dist/commands/gen.test.js +0 -226
- package/dist/commands/gen.test.js.map +0 -1
- package/dist/config-loader/loader.test.d.ts +0 -2
- package/dist/config-loader/loader.test.d.ts.map +0 -1
- package/dist/config-loader/loader.test.js +0 -123
- package/dist/config-loader/loader.test.js.map +0 -1
- package/dist/config-loader/validator.test.d.ts +0 -2
- package/dist/config-loader/validator.test.d.ts.map +0 -1
- package/dist/config-loader/validator.test.js +0 -846
- package/dist/config-loader/validator.test.js.map +0 -1
- package/dist/gen-orchestrator/golden.test.d.ts +0 -2
- package/dist/gen-orchestrator/golden.test.d.ts.map +0 -1
- package/dist/gen-orchestrator/golden.test.js +0 -102
- package/dist/gen-orchestrator/golden.test.js.map +0 -1
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts +0 -2
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +0 -1
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +0 -167
- package/dist/gen-orchestrator/hook-executor/hook-executor.test.js.map +0 -1
- package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts +0 -2
- package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +0 -1
- package/dist/gen-orchestrator/reporter/progress-reporter.test.js +0 -74
- package/dist/gen-orchestrator/reporter/progress-reporter.test.js.map +0 -1
- package/dist/resolver-extractor/validator/only-validator.d.ts +0 -61
- package/dist/resolver-extractor/validator/only-validator.d.ts.map +0 -1
- package/dist/resolver-extractor/validator/only-validator.js +0 -76
- package/dist/resolver-extractor/validator/only-validator.js.map +0 -1
- package/dist/resolver-extractor/validator/only-validator.test.d.ts +0 -8
- package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +0 -1
- package/dist/resolver-extractor/validator/only-validator.test.js +0 -352
- package/dist/resolver-extractor/validator/only-validator.test.js.map +0 -1
- package/dist/schema-generator/builder/ast-builder.test.d.ts +0 -2
- package/dist/schema-generator/builder/ast-builder.test.d.ts.map +0 -1
- package/dist/schema-generator/builder/ast-builder.test.js +0 -469
- package/dist/schema-generator/builder/ast-builder.test.js.map +0 -1
- package/dist/shared/file-scanner.test.d.ts +0 -2
- package/dist/shared/file-scanner.test.d.ts.map +0 -1
- package/dist/shared/file-scanner.test.js +0 -138
- package/dist/shared/file-scanner.test.js.map +0 -1
- package/dist/shared/interface-validator.test.d.ts +0 -2
- package/dist/shared/interface-validator.test.d.ts.map +0 -1
- package/dist/shared/interface-validator.test.js +0 -145
- package/dist/shared/interface-validator.test.js.map +0 -1
- package/dist/type-extractor/types/typescript.test.d.ts +0 -2
- package/dist/type-extractor/types/typescript.test.d.ts.map +0 -1
- package/dist/type-extractor/types/typescript.test.js +0 -287
- package/dist/type-extractor/types/typescript.test.js.map +0 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export {
|
|
2
|
+
type AutoGeneratedEnumValue,
|
|
3
|
+
type AutoGeneratedField,
|
|
4
|
+
type AutoGeneratedType,
|
|
5
|
+
type AutoTypeGeneratorInput,
|
|
6
|
+
type AutoTypeGeneratorResult,
|
|
7
|
+
type GeneratedFromInfo,
|
|
8
|
+
generateAutoTypes,
|
|
9
|
+
} from "./auto-type-generator.js";
|
|
10
|
+
export type {
|
|
11
|
+
InlineUnionMemberInfo,
|
|
12
|
+
InlineUnionWithContext,
|
|
13
|
+
} from "./inline-union-types.js";
|
|
14
|
+
export type {
|
|
15
|
+
ValidateOneOfMembersParams,
|
|
16
|
+
ValidateUnionMembersParams,
|
|
17
|
+
ValidateUnionResult,
|
|
18
|
+
} from "./inline-union-validator.js";
|
|
19
|
+
export {
|
|
20
|
+
type NameCollisionValidatorInput,
|
|
21
|
+
type NameCollisionValidatorResult,
|
|
22
|
+
type UserDefinedTypeInfo,
|
|
23
|
+
validateNameCollisions,
|
|
24
|
+
} from "./name-collision-validator.js";
|
|
25
|
+
export type {
|
|
26
|
+
AutoTypeNameContext,
|
|
27
|
+
InputFieldContext,
|
|
28
|
+
ObjectFieldContext,
|
|
29
|
+
ResolverArgContext,
|
|
30
|
+
ResolverPayloadContext,
|
|
31
|
+
} from "./naming-convention.js";
|
|
32
|
+
export type {
|
|
33
|
+
AutoGeneratedResolveType,
|
|
34
|
+
ResolveTypeFieldPattern,
|
|
35
|
+
} from "./resolve-type-generator.js";
|
|
36
|
+
export {
|
|
37
|
+
type CollectTypenameExtractionsParams,
|
|
38
|
+
collectTypenameExtractions,
|
|
39
|
+
type ExtractTypenamesParams,
|
|
40
|
+
type MemberTypenameInfo,
|
|
41
|
+
type TypenameExtractionResult,
|
|
42
|
+
} from "./typename-extractor.js";
|
|
43
|
+
export {
|
|
44
|
+
type CollectTypenameResolveTypesParams,
|
|
45
|
+
type CollectTypenameResolveTypesResult,
|
|
46
|
+
collectTypenameResolveTypes,
|
|
47
|
+
type GeneratedInlineObjectType,
|
|
48
|
+
type ResolveTypePattern,
|
|
49
|
+
type TypenameAutoResolveTypeInfo,
|
|
50
|
+
} from "./typename-resolve-type-generator.js";
|
|
51
|
+
export type {
|
|
52
|
+
TypenameFieldInfo,
|
|
53
|
+
TypenameFieldName,
|
|
54
|
+
TypenameFieldNameSet,
|
|
55
|
+
} from "./typename-types.js";
|
|
56
|
+
export {
|
|
57
|
+
type ValidateSchemaTypenamesParams,
|
|
58
|
+
type ValidateSchemaTypenamesResult,
|
|
59
|
+
type ValidateTypenamesParams,
|
|
60
|
+
type ValidateTypenamesResult,
|
|
61
|
+
validateSchemaTypenames,
|
|
62
|
+
validateTypenames,
|
|
63
|
+
} from "./typename-validator.js";
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import type ts from "typescript";
|
|
2
|
+
import type { ExtractResolversResult } from "../resolver-extractor/index.js";
|
|
3
|
+
import { getSourceLocationOrDefault } from "../shared/source-location.js";
|
|
4
|
+
import type { DeprecationInfo } from "../shared/tsdoc-parser.js";
|
|
5
|
+
import type {
|
|
6
|
+
ExtractedTypeInfo,
|
|
7
|
+
FieldDefinition,
|
|
8
|
+
InlineEnumMemberInfo,
|
|
9
|
+
InlineObjectPropertyDef,
|
|
10
|
+
SourceLocation,
|
|
11
|
+
} from "../type-extractor/types/index.js";
|
|
12
|
+
import { traverseInlineObjectProperties } from "./inline-object-traverser.js";
|
|
13
|
+
import {
|
|
14
|
+
type AutoTypeNameContext,
|
|
15
|
+
buildFieldContext,
|
|
16
|
+
isInputTypeName,
|
|
17
|
+
} from "./naming-convention.js";
|
|
18
|
+
import {
|
|
19
|
+
forEachResolverField,
|
|
20
|
+
type ResolverFieldInfo,
|
|
21
|
+
type ResolverType,
|
|
22
|
+
} from "./resolver-field-iterator.js";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Inline enum with context information for naming and generation.
|
|
26
|
+
*/
|
|
27
|
+
export interface InlineEnumWithContext {
|
|
28
|
+
readonly members: ReadonlyArray<InlineEnumMemberInfo>;
|
|
29
|
+
readonly context: AutoTypeNameContext;
|
|
30
|
+
readonly sourceLocation: SourceLocation;
|
|
31
|
+
readonly nullable: boolean;
|
|
32
|
+
/** External TypeScript enum symbol for deduplication (null for string literal unions) */
|
|
33
|
+
readonly externalEnumSymbol: ts.Symbol | null;
|
|
34
|
+
/** TSDoc description from the external enum type itself (null for string literal unions) */
|
|
35
|
+
readonly externalEnumDescription: string | null;
|
|
36
|
+
/** @deprecated tag from the external enum type itself (null for string literal unions) */
|
|
37
|
+
readonly externalEnumDeprecated: DeprecationInfo | null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Collect inline enums from ExtractedTypeInfo by traversing type fields.
|
|
42
|
+
*/
|
|
43
|
+
export function collectInlineEnumsFromTypes(
|
|
44
|
+
extractedTypes: ReadonlyArray<ExtractedTypeInfo>,
|
|
45
|
+
): InlineEnumWithContext[] {
|
|
46
|
+
const results: InlineEnumWithContext[] = [];
|
|
47
|
+
|
|
48
|
+
for (const typeInfo of extractedTypes) {
|
|
49
|
+
const isInput = isInputTypeName(typeInfo.metadata.name);
|
|
50
|
+
|
|
51
|
+
for (const field of typeInfo.fields) {
|
|
52
|
+
collectInlineEnumsFromField(
|
|
53
|
+
field,
|
|
54
|
+
typeInfo.metadata.name,
|
|
55
|
+
[],
|
|
56
|
+
isInput,
|
|
57
|
+
typeInfo.metadata.sourceFile,
|
|
58
|
+
results,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return results;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function collectInlineEnumsFromField(
|
|
67
|
+
field: FieldDefinition,
|
|
68
|
+
parentTypeName: string,
|
|
69
|
+
parentPath: ReadonlyArray<string>,
|
|
70
|
+
isInput: boolean,
|
|
71
|
+
sourceFile: string,
|
|
72
|
+
results: InlineEnumWithContext[],
|
|
73
|
+
): void {
|
|
74
|
+
const tsType = field.tsType;
|
|
75
|
+
const fieldPath = [...parentPath, field.name];
|
|
76
|
+
|
|
77
|
+
if (tsType.kind === "inlineEnum" && tsType.inlineEnumMembers) {
|
|
78
|
+
results.push({
|
|
79
|
+
members: tsType.inlineEnumMembers,
|
|
80
|
+
context: buildFieldContext(parentTypeName, fieldPath, isInput),
|
|
81
|
+
sourceLocation: getSourceLocationOrDefault(
|
|
82
|
+
field.sourceLocation,
|
|
83
|
+
sourceFile,
|
|
84
|
+
),
|
|
85
|
+
nullable: tsType.nullable,
|
|
86
|
+
externalEnumSymbol: tsType.externalEnumSymbol,
|
|
87
|
+
externalEnumDescription: tsType.externalEnumDescription,
|
|
88
|
+
externalEnumDeprecated: tsType.externalEnumDeprecated,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (
|
|
93
|
+
tsType.kind === "array" &&
|
|
94
|
+
tsType.elementType?.kind === "inlineEnum" &&
|
|
95
|
+
tsType.elementType.inlineEnumMembers
|
|
96
|
+
) {
|
|
97
|
+
results.push({
|
|
98
|
+
members: tsType.elementType.inlineEnumMembers,
|
|
99
|
+
context: buildFieldContext(parentTypeName, fieldPath, isInput),
|
|
100
|
+
sourceLocation: getSourceLocationOrDefault(
|
|
101
|
+
field.sourceLocation,
|
|
102
|
+
sourceFile,
|
|
103
|
+
),
|
|
104
|
+
nullable: tsType.elementType.nullable,
|
|
105
|
+
externalEnumSymbol: tsType.elementType.externalEnumSymbol,
|
|
106
|
+
externalEnumDescription: tsType.elementType.externalEnumDescription,
|
|
107
|
+
externalEnumDeprecated: tsType.elementType.externalEnumDeprecated,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (tsType.kind === "inlineObject" && tsType.inlineObjectProperties) {
|
|
112
|
+
traverseInlineObjectProperties(
|
|
113
|
+
{ properties: tsType.inlineObjectProperties, parentPath: fieldPath },
|
|
114
|
+
(prop, propPath) => {
|
|
115
|
+
const propTsType = prop.tsType;
|
|
116
|
+
if (propTsType.kind === "inlineEnum" && propTsType.inlineEnumMembers) {
|
|
117
|
+
results.push({
|
|
118
|
+
members: propTsType.inlineEnumMembers,
|
|
119
|
+
context: buildFieldContext(parentTypeName, propPath, isInput),
|
|
120
|
+
sourceLocation: getSourceLocationOrDefault(
|
|
121
|
+
prop.sourceLocation,
|
|
122
|
+
sourceFile,
|
|
123
|
+
),
|
|
124
|
+
nullable: propTsType.nullable,
|
|
125
|
+
externalEnumSymbol: propTsType.externalEnumSymbol,
|
|
126
|
+
externalEnumDescription: propTsType.externalEnumDescription,
|
|
127
|
+
externalEnumDeprecated: propTsType.externalEnumDeprecated,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface CollectInlineEnumsFromResolversParams {
|
|
136
|
+
readonly resolversResult: ExtractResolversResult;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Collect inline enums from ExtractResolversResult by traversing resolver args.
|
|
141
|
+
*/
|
|
142
|
+
export function collectInlineEnumsFromResolvers(
|
|
143
|
+
params: CollectInlineEnumsFromResolversParams,
|
|
144
|
+
): InlineEnumWithContext[] {
|
|
145
|
+
const { resolversResult } = params;
|
|
146
|
+
const results: InlineEnumWithContext[] = [];
|
|
147
|
+
|
|
148
|
+
forEachResolverField(resolversResult, (info) => {
|
|
149
|
+
collectInlineEnumsFromResolverArgs(info, results);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
return results;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function collectInlineEnumsFromResolverArgs(
|
|
156
|
+
info: ResolverFieldInfo,
|
|
157
|
+
results: InlineEnumWithContext[],
|
|
158
|
+
): void {
|
|
159
|
+
const { field, resolverType, parentTypeName } = info;
|
|
160
|
+
if (!field.args) return;
|
|
161
|
+
|
|
162
|
+
for (const arg of field.args) {
|
|
163
|
+
if (arg.inlineEnumMembers) {
|
|
164
|
+
const context: AutoTypeNameContext = {
|
|
165
|
+
kind: "resolverArg",
|
|
166
|
+
resolverType,
|
|
167
|
+
fieldName: field.name,
|
|
168
|
+
argName: arg.name,
|
|
169
|
+
parentTypeName,
|
|
170
|
+
fieldPath: [],
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
results.push({
|
|
174
|
+
members: arg.inlineEnumMembers,
|
|
175
|
+
context,
|
|
176
|
+
sourceLocation: field.sourceLocation,
|
|
177
|
+
nullable: arg.type.nullable,
|
|
178
|
+
externalEnumSymbol: arg.externalEnumSymbol,
|
|
179
|
+
externalEnumDescription: arg.externalEnumDescription,
|
|
180
|
+
externalEnumDeprecated: arg.externalEnumDeprecated,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (arg.inlineObjectProperties) {
|
|
185
|
+
collectInlineEnumsFromResolverProperties({
|
|
186
|
+
properties: arg.inlineObjectProperties,
|
|
187
|
+
resolverType,
|
|
188
|
+
fieldName: field.name,
|
|
189
|
+
parentTypeName,
|
|
190
|
+
parentPath: [],
|
|
191
|
+
sourceLocation: field.sourceLocation,
|
|
192
|
+
contextKind: "resolverArg",
|
|
193
|
+
argName: arg.name,
|
|
194
|
+
results,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
interface CollectInlineEnumsFromResolverPropertiesBaseParams {
|
|
201
|
+
readonly properties: ReadonlyArray<InlineObjectPropertyDef>;
|
|
202
|
+
readonly resolverType: ResolverType;
|
|
203
|
+
readonly fieldName: string;
|
|
204
|
+
readonly parentTypeName: string | null;
|
|
205
|
+
readonly parentPath: ReadonlyArray<string>;
|
|
206
|
+
readonly sourceLocation: SourceLocation;
|
|
207
|
+
readonly results: InlineEnumWithContext[];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
interface CollectInlineEnumsFromResolverArgPropertiesParams
|
|
211
|
+
extends CollectInlineEnumsFromResolverPropertiesBaseParams {
|
|
212
|
+
readonly contextKind: "resolverArg";
|
|
213
|
+
readonly argName: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
interface CollectInlineEnumsFromResolverPayloadPropertiesParams
|
|
217
|
+
extends CollectInlineEnumsFromResolverPropertiesBaseParams {
|
|
218
|
+
readonly contextKind: "resolverPayload";
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
type CollectInlineEnumsFromResolverPropertiesParams =
|
|
222
|
+
| CollectInlineEnumsFromResolverArgPropertiesParams
|
|
223
|
+
| CollectInlineEnumsFromResolverPayloadPropertiesParams;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Unified function for collecting inline enums from nested object properties
|
|
227
|
+
* in both resolver args and payload return types.
|
|
228
|
+
*/
|
|
229
|
+
function collectInlineEnumsFromResolverProperties(
|
|
230
|
+
params: CollectInlineEnumsFromResolverPropertiesParams,
|
|
231
|
+
): void {
|
|
232
|
+
const {
|
|
233
|
+
properties,
|
|
234
|
+
resolverType,
|
|
235
|
+
fieldName,
|
|
236
|
+
parentTypeName,
|
|
237
|
+
parentPath,
|
|
238
|
+
sourceLocation,
|
|
239
|
+
results,
|
|
240
|
+
} = params;
|
|
241
|
+
|
|
242
|
+
traverseInlineObjectProperties(
|
|
243
|
+
{ properties, parentPath },
|
|
244
|
+
(prop, propPath) => {
|
|
245
|
+
const tsType = prop.tsType;
|
|
246
|
+
|
|
247
|
+
if (tsType.kind === "inlineEnum" && tsType.inlineEnumMembers) {
|
|
248
|
+
const context: AutoTypeNameContext =
|
|
249
|
+
params.contextKind === "resolverArg"
|
|
250
|
+
? {
|
|
251
|
+
kind: "resolverArg",
|
|
252
|
+
resolverType,
|
|
253
|
+
fieldName,
|
|
254
|
+
argName: params.argName,
|
|
255
|
+
parentTypeName,
|
|
256
|
+
fieldPath: propPath,
|
|
257
|
+
}
|
|
258
|
+
: {
|
|
259
|
+
kind: "resolverPayload",
|
|
260
|
+
resolverType,
|
|
261
|
+
fieldName,
|
|
262
|
+
parentTypeName,
|
|
263
|
+
fieldPath: propPath,
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
results.push({
|
|
267
|
+
members: tsType.inlineEnumMembers,
|
|
268
|
+
context,
|
|
269
|
+
sourceLocation: prop.sourceLocation ?? sourceLocation,
|
|
270
|
+
nullable: tsType.nullable,
|
|
271
|
+
externalEnumSymbol: tsType.externalEnumSymbol,
|
|
272
|
+
externalEnumDescription: tsType.externalEnumDescription,
|
|
273
|
+
externalEnumDeprecated: tsType.externalEnumDeprecated,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export interface CollectInlineEnumsFromPayloadsParams {
|
|
281
|
+
readonly resolversResult: ExtractResolversResult;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Collect inline enums from resolver return types (Payload types).
|
|
286
|
+
*/
|
|
287
|
+
export function collectInlineEnumsFromPayloads(
|
|
288
|
+
params: CollectInlineEnumsFromPayloadsParams,
|
|
289
|
+
): InlineEnumWithContext[] {
|
|
290
|
+
const { resolversResult } = params;
|
|
291
|
+
const results: InlineEnumWithContext[] = [];
|
|
292
|
+
|
|
293
|
+
forEachResolverField(resolversResult, (info) => {
|
|
294
|
+
collectInlineEnumsFromPayloadReturnType(info, results);
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
return results;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
function collectInlineEnumsFromPayloadReturnType(
|
|
301
|
+
info: ResolverFieldInfo,
|
|
302
|
+
results: InlineEnumWithContext[],
|
|
303
|
+
): void {
|
|
304
|
+
const { field, resolverType, parentTypeName } = info;
|
|
305
|
+
|
|
306
|
+
if (field.returnTypeInlineEnumMembers) {
|
|
307
|
+
const context: AutoTypeNameContext = {
|
|
308
|
+
kind: "resolverPayload",
|
|
309
|
+
resolverType,
|
|
310
|
+
fieldName: field.name,
|
|
311
|
+
parentTypeName,
|
|
312
|
+
fieldPath: [],
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
results.push({
|
|
316
|
+
members: field.returnTypeInlineEnumMembers,
|
|
317
|
+
context,
|
|
318
|
+
sourceLocation: field.sourceLocation,
|
|
319
|
+
nullable: field.type.nullable,
|
|
320
|
+
externalEnumSymbol: field.returnTypeExternalEnumSymbol,
|
|
321
|
+
externalEnumDescription: field.returnTypeExternalEnumDescription,
|
|
322
|
+
externalEnumDeprecated: field.returnTypeExternalEnumDeprecated,
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (field.returnTypeInlineObjectProperties) {
|
|
327
|
+
collectInlineEnumsFromResolverProperties({
|
|
328
|
+
properties: field.returnTypeInlineObjectProperties,
|
|
329
|
+
resolverType,
|
|
330
|
+
fieldName: field.name,
|
|
331
|
+
parentTypeName,
|
|
332
|
+
parentPath: [],
|
|
333
|
+
sourceLocation: field.sourceLocation,
|
|
334
|
+
contextKind: "resolverPayload",
|
|
335
|
+
results,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { InlineObjectPropertyDef } from "../type-extractor/types/index.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Visitor callback for each property in an inline object hierarchy.
|
|
5
|
+
* @param prop The property being visited
|
|
6
|
+
* @param propPath Full path from the root to this property (including the property name)
|
|
7
|
+
*/
|
|
8
|
+
export type PropertyVisitor = (
|
|
9
|
+
prop: InlineObjectPropertyDef,
|
|
10
|
+
propPath: ReadonlyArray<string>,
|
|
11
|
+
) => void;
|
|
12
|
+
|
|
13
|
+
export interface TraverseInlineObjectPropertiesParams {
|
|
14
|
+
readonly properties: ReadonlyArray<InlineObjectPropertyDef>;
|
|
15
|
+
readonly parentPath: ReadonlyArray<string>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Traverses inline object properties recursively, calling the visitor for each property.
|
|
20
|
+
* Handles nested inlineObject properties automatically.
|
|
21
|
+
*
|
|
22
|
+
* This utility eliminates the duplicated traversal logic in inline-enum-collector
|
|
23
|
+
* and inline-union-collector.
|
|
24
|
+
*/
|
|
25
|
+
export function traverseInlineObjectProperties(
|
|
26
|
+
params: TraverseInlineObjectPropertiesParams,
|
|
27
|
+
visitor: PropertyVisitor,
|
|
28
|
+
): void {
|
|
29
|
+
const { properties, parentPath } = params;
|
|
30
|
+
|
|
31
|
+
for (const prop of properties) {
|
|
32
|
+
const propPath = [...parentPath, prop.name];
|
|
33
|
+
|
|
34
|
+
visitor(prop, propPath);
|
|
35
|
+
|
|
36
|
+
if (
|
|
37
|
+
prop.tsType.kind === "inlineObject" &&
|
|
38
|
+
prop.tsType.inlineObjectProperties
|
|
39
|
+
) {
|
|
40
|
+
traverseInlineObjectProperties(
|
|
41
|
+
{
|
|
42
|
+
properties: prop.tsType.inlineObjectProperties,
|
|
43
|
+
parentPath: propPath,
|
|
44
|
+
},
|
|
45
|
+
visitor,
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|