@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output configuration for generated files.
|
|
3
|
+
* All paths are relative to project root.
|
|
4
|
+
*/
|
|
5
|
+
export interface OutputConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Output path for resolver map file.
|
|
8
|
+
* - If relative, resolved from project root
|
|
9
|
+
* - If null, suppresses resolvers output
|
|
10
|
+
* - If undefined, uses default path
|
|
11
|
+
* @default "src/gqlkit/__generated__/resolvers.ts"
|
|
12
|
+
*/
|
|
13
|
+
readonly resolversPath?: string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Output path for GraphQL schema AST (DocumentNode).
|
|
16
|
+
* - If relative, resolved from project root
|
|
17
|
+
* - If null, suppresses AST output
|
|
18
|
+
* - If undefined, uses default path
|
|
19
|
+
* @default "src/gqlkit/__generated__/typeDefs.ts"
|
|
20
|
+
*/
|
|
21
|
+
readonly typeDefsPath?: string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Output path for GraphQL schema SDL.
|
|
24
|
+
* - If relative, resolved from project root
|
|
25
|
+
* - If null, suppresses SDL output
|
|
26
|
+
* - If undefined, uses default path
|
|
27
|
+
* @default "src/gqlkit/__generated__/schema.graphql"
|
|
28
|
+
*/
|
|
29
|
+
readonly schemaPath?: string | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Hook configuration for lifecycle events.
|
|
33
|
+
*/
|
|
34
|
+
export interface HooksConfig {
|
|
35
|
+
/**
|
|
36
|
+
* Commands to execute after all files are written.
|
|
37
|
+
* Each command receives all written file paths as arguments.
|
|
38
|
+
* Commands are executed sequentially in order.
|
|
39
|
+
*/
|
|
40
|
+
readonly afterAllFileWrite?: string | ReadonlyArray<string>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Type definition for gqlkit configuration file.
|
|
44
|
+
* Used in `gqlkit.config.ts`.
|
|
45
|
+
*/
|
|
46
|
+
export interface GqlkitConfig {
|
|
47
|
+
/**
|
|
48
|
+
* Source directory to scan for types and resolvers.
|
|
49
|
+
* All TypeScript files (.ts, .cts, .mts) under this directory will be scanned.
|
|
50
|
+
* @default "src/gqlkit/schema"
|
|
51
|
+
*/
|
|
52
|
+
readonly sourceDir?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Glob patterns to exclude from source scanning.
|
|
55
|
+
* Patterns are matched against file paths relative to sourceDir.
|
|
56
|
+
* @default []
|
|
57
|
+
*/
|
|
58
|
+
readonly sourceIgnoreGlobs?: ReadonlyArray<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Output configuration for generated files.
|
|
61
|
+
*/
|
|
62
|
+
readonly output?: OutputConfig;
|
|
63
|
+
/**
|
|
64
|
+
* Custom scalar mapping definitions.
|
|
65
|
+
* Configures the mapping between TypeScript types and GraphQL scalars.
|
|
66
|
+
*/
|
|
67
|
+
readonly scalars?: ReadonlyArray<ScalarMappingConfig>;
|
|
68
|
+
/**
|
|
69
|
+
* Path to TypeScript configuration file.
|
|
70
|
+
* - If relative, resolved from config file
|
|
71
|
+
* - Absolute paths are also supported
|
|
72
|
+
* - If unspecified, automatically searches for tsconfig.json in project root
|
|
73
|
+
*/
|
|
74
|
+
readonly tsconfigPath?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Hook configuration for lifecycle events.
|
|
77
|
+
*/
|
|
78
|
+
readonly hooks?: HooksConfig;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Custom scalar mapping configuration.
|
|
82
|
+
* Maps TypeScript types to GraphQL scalar types.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* // Global type (e.g., Date)
|
|
86
|
+
* { name: "DateTime", tsType: { name: "Date" } }
|
|
87
|
+
*
|
|
88
|
+
* // Module type
|
|
89
|
+
* { name: "DateTime", tsType: { name: "DateTimeString", from: "./src/types" } }
|
|
90
|
+
*
|
|
91
|
+
* // With usage constraint
|
|
92
|
+
* { name: "DateTime", tsType: { name: "Date" }, only: "input" }
|
|
93
|
+
*
|
|
94
|
+
* // With description
|
|
95
|
+
* { name: "DateTime", tsType: { name: "Date" }, description: "ISO 8601 format" }
|
|
96
|
+
*/
|
|
97
|
+
export interface ScalarMappingConfig {
|
|
98
|
+
/**
|
|
99
|
+
* GraphQL scalar name.
|
|
100
|
+
* Example: "DateTime", "UUID", "URL"
|
|
101
|
+
*/
|
|
102
|
+
readonly name: string;
|
|
103
|
+
/**
|
|
104
|
+
* TypeScript type information to map.
|
|
105
|
+
*/
|
|
106
|
+
readonly tsType: {
|
|
107
|
+
/**
|
|
108
|
+
* TypeScript type name.
|
|
109
|
+
* Example: "Date", "DateTime", "UUID"
|
|
110
|
+
*/
|
|
111
|
+
readonly name: string;
|
|
112
|
+
/**
|
|
113
|
+
* Import path for the type. If omitted, treated as a global type.
|
|
114
|
+
* Example: "./src/types/scalars", "@my-lib/scalars"
|
|
115
|
+
*/
|
|
116
|
+
readonly from?: string;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Usage constraint for the scalar type.
|
|
120
|
+
* - "input": Only use this type for input positions (arguments, input type fields)
|
|
121
|
+
* - "output": Only use this type for output positions (return types, object type fields)
|
|
122
|
+
* - undefined: Use for both input and output positions
|
|
123
|
+
*/
|
|
124
|
+
readonly only?: "input" | "output";
|
|
125
|
+
/**
|
|
126
|
+
* Description for the scalar type.
|
|
127
|
+
* Will be included in the generated GraphQL schema.
|
|
128
|
+
*/
|
|
129
|
+
readonly description?: string;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7D;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAE/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE;QACf;;;WAGG;QACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { type LoadConfigOptions, type LoadConfigResult, loadConfig, type ResolvedConfig, type ResolvedHooksConfig, type ResolvedOutputConfig, type ResolvedScalarMapping, } from "./loader.js";
|
|
2
|
+
export type { ValidateConfigOptions, ValidateConfigResult, } from "./validator.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config-loader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config-loader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,GAKX,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Diagnostic } from "../type-extractor/types/index.js";
|
|
2
|
+
export interface LoadConfigOptions {
|
|
3
|
+
readonly cwd: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ResolvedScalarMapping {
|
|
6
|
+
readonly graphqlName: string;
|
|
7
|
+
readonly typeName: string;
|
|
8
|
+
readonly importPath: string | null;
|
|
9
|
+
readonly only: "input" | "output" | null;
|
|
10
|
+
readonly description: string | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolved output configuration.
|
|
14
|
+
* Undefined values are resolved to defaults.
|
|
15
|
+
*/
|
|
16
|
+
export interface ResolvedOutputConfig {
|
|
17
|
+
/** Resolver map output path. Null suppresses output */
|
|
18
|
+
readonly resolversPath: string | null;
|
|
19
|
+
/** Schema AST (typeDefs) output path. Null suppresses output */
|
|
20
|
+
readonly typeDefsPath: string | null;
|
|
21
|
+
/** Schema SDL output path. Null suppresses output */
|
|
22
|
+
readonly schemaPath: string | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolved hook configuration.
|
|
26
|
+
* Commands are normalized to array format.
|
|
27
|
+
*/
|
|
28
|
+
export interface ResolvedHooksConfig {
|
|
29
|
+
/** Normalized to array (empty if not configured) */
|
|
30
|
+
readonly afterAllFileWrite: ReadonlyArray<string>;
|
|
31
|
+
}
|
|
32
|
+
export interface ResolvedConfig {
|
|
33
|
+
readonly sourceDir: string;
|
|
34
|
+
readonly sourceIgnoreGlobs: ReadonlyArray<string>;
|
|
35
|
+
readonly output: ResolvedOutputConfig;
|
|
36
|
+
readonly scalars: ReadonlyArray<ResolvedScalarMapping>;
|
|
37
|
+
readonly tsconfigPath: string | null;
|
|
38
|
+
readonly hooks: ResolvedHooksConfig;
|
|
39
|
+
}
|
|
40
|
+
export interface LoadConfigResult {
|
|
41
|
+
readonly config: ResolvedConfig;
|
|
42
|
+
readonly configPath: string | undefined;
|
|
43
|
+
readonly diagnostics: ReadonlyArray<Diagnostic>;
|
|
44
|
+
}
|
|
45
|
+
export declare const DEFAULT_SOURCE_DIR = "src/gqlkit/schema";
|
|
46
|
+
export declare const DEFAULT_RESOLVERS_PATH = "src/gqlkit/__generated__/resolvers.ts";
|
|
47
|
+
export declare const DEFAULT_TYPEDEFS_PATH = "src/gqlkit/__generated__/typeDefs.ts";
|
|
48
|
+
export declare const DEFAULT_SCHEMA_PATH = "src/gqlkit/__generated__/schema.graphql";
|
|
49
|
+
export declare function loadConfig(options: LoadConfigOptions): Promise<LoadConfigResult>;
|
|
50
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config-loader/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAGnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACvD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAID,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,sBAAsB,0CAA0C,CAAC;AAC9E,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAC5E,eAAO,MAAM,mBAAmB,4CAA4C,CAAC;AAqB7E,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA2D3B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createJiti } from "jiti";
|
|
4
|
+
import { validateConfig } from "./validator.js";
|
|
5
|
+
const CONFIG_FILE_NAME = "gqlkit.config.ts";
|
|
6
|
+
export const DEFAULT_SOURCE_DIR = "src/gqlkit/schema";
|
|
7
|
+
export const DEFAULT_RESOLVERS_PATH = "src/gqlkit/__generated__/resolvers.ts";
|
|
8
|
+
export const DEFAULT_TYPEDEFS_PATH = "src/gqlkit/__generated__/typeDefs.ts";
|
|
9
|
+
export const DEFAULT_SCHEMA_PATH = "src/gqlkit/__generated__/schema.graphql";
|
|
10
|
+
const DEFAULT_OUTPUT_CONFIG = {
|
|
11
|
+
resolversPath: DEFAULT_RESOLVERS_PATH,
|
|
12
|
+
typeDefsPath: DEFAULT_TYPEDEFS_PATH,
|
|
13
|
+
schemaPath: DEFAULT_SCHEMA_PATH,
|
|
14
|
+
};
|
|
15
|
+
const DEFAULT_HOOKS_CONFIG = {
|
|
16
|
+
afterAllFileWrite: [],
|
|
17
|
+
};
|
|
18
|
+
const DEFAULT_RESOLVED_CONFIG = {
|
|
19
|
+
sourceDir: DEFAULT_SOURCE_DIR,
|
|
20
|
+
sourceIgnoreGlobs: [],
|
|
21
|
+
output: DEFAULT_OUTPUT_CONFIG,
|
|
22
|
+
scalars: [],
|
|
23
|
+
tsconfigPath: null,
|
|
24
|
+
hooks: DEFAULT_HOOKS_CONFIG,
|
|
25
|
+
};
|
|
26
|
+
export async function loadConfig(options) {
|
|
27
|
+
const configPath = join(options.cwd, CONFIG_FILE_NAME);
|
|
28
|
+
if (!existsSync(configPath)) {
|
|
29
|
+
return {
|
|
30
|
+
config: DEFAULT_RESOLVED_CONFIG,
|
|
31
|
+
configPath: undefined,
|
|
32
|
+
diagnostics: [],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const jiti = createJiti(options.cwd, {
|
|
36
|
+
interopDefault: true,
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
const loadedModule = await jiti.import(configPath);
|
|
40
|
+
const rawConfig = loadedModule.default ?? loadedModule;
|
|
41
|
+
const validationResult = validateConfig({
|
|
42
|
+
config: rawConfig,
|
|
43
|
+
configPath,
|
|
44
|
+
});
|
|
45
|
+
if (!validationResult.valid || !validationResult.resolvedConfig) {
|
|
46
|
+
return {
|
|
47
|
+
config: DEFAULT_RESOLVED_CONFIG,
|
|
48
|
+
configPath,
|
|
49
|
+
diagnostics: validationResult.diagnostics,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
config: validationResult.resolvedConfig,
|
|
54
|
+
configPath,
|
|
55
|
+
diagnostics: [],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : "Unknown error occurred";
|
|
60
|
+
return {
|
|
61
|
+
config: DEFAULT_RESOLVED_CONFIG,
|
|
62
|
+
configPath,
|
|
63
|
+
diagnostics: [
|
|
64
|
+
{
|
|
65
|
+
code: "CONFIG_SYNTAX_ERROR",
|
|
66
|
+
message: `Failed to load config file: ${message}`,
|
|
67
|
+
severity: "error",
|
|
68
|
+
location: {
|
|
69
|
+
file: configPath,
|
|
70
|
+
line: 1,
|
|
71
|
+
column: 1,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config-loader/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmDhD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uCAAuC,CAAC;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,yCAAyC,CAAC;AAE7E,MAAM,qBAAqB,GAAyB;IAClD,aAAa,EAAE,sBAAsB;IACrC,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,mBAAmB;CAChC,CAAC;AAEF,MAAM,oBAAoB,GAAwB;IAChD,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,MAAM,uBAAuB,GAAmB;IAC9C,SAAS,EAAE,kBAAkB;IAC7B,iBAAiB,EAAE,EAAE;IACrB,MAAM,EAAE,qBAAqB;IAC7B,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,oBAAoB;CAC5B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA0B;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,GACZ,YAAsC,CAAC,OAAO,IAAI,YAAY,CAAC;QAElE,MAAM,gBAAgB,GAAG,cAAc,CAAC;YACtC,MAAM,EAAE,SAAS;YACjB,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YAChE,OAAO;gBACL,MAAM,EAAE,uBAAuB;gBAC/B,UAAU;gBACV,WAAW,EAAE,gBAAgB,CAAC,WAAW;aAC1C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,gBAAgB,CAAC,cAAc;YACvC,UAAU;YACV,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAEpE,OAAO;YACL,MAAM,EAAE,uBAAuB;YAC/B,UAAU;YACV,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,+BAA+B,OAAO,EAAE;oBACjD,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE;wBACR,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,CAAC;qBACV;iBACF;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../src/config-loader/loader.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { loadConfig } from "./loader.js";
|
|
6
|
+
describe("ConfigLoader", () => {
|
|
7
|
+
let tempDir;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "config-loader-test-"));
|
|
10
|
+
});
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
fs.rmSync(tempDir, { recursive: true });
|
|
13
|
+
});
|
|
14
|
+
describe("loadConfig", () => {
|
|
15
|
+
it("should return default config when gqlkit.config.ts does not exist", async () => {
|
|
16
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
17
|
+
expect(result.configPath).toBe(undefined);
|
|
18
|
+
expect(result.config).toEqual({
|
|
19
|
+
sourceDir: "src/gqlkit/schema",
|
|
20
|
+
sourceIgnoreGlobs: [],
|
|
21
|
+
output: {
|
|
22
|
+
resolversPath: "src/gqlkit/__generated__/resolvers.ts",
|
|
23
|
+
typeDefsPath: "src/gqlkit/__generated__/typeDefs.ts",
|
|
24
|
+
schemaPath: "src/gqlkit/__generated__/schema.graphql",
|
|
25
|
+
},
|
|
26
|
+
scalars: [],
|
|
27
|
+
tsconfigPath: null,
|
|
28
|
+
hooks: {
|
|
29
|
+
afterAllFileWrite: [],
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
expect(result.diagnostics.length).toBe(0);
|
|
33
|
+
});
|
|
34
|
+
it("should load config from gqlkit.config.ts", async () => {
|
|
35
|
+
const configContent = `
|
|
36
|
+
export default {
|
|
37
|
+
scalars: [
|
|
38
|
+
{
|
|
39
|
+
graphqlName: "DateTime",
|
|
40
|
+
type: { from: "./src/scalars", name: "DateTime" },
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
`;
|
|
45
|
+
fs.writeFileSync(path.join(tempDir, "gqlkit.config.ts"), configContent);
|
|
46
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
47
|
+
expect(result.configPath).toBe(path.join(tempDir, "gqlkit.config.ts"));
|
|
48
|
+
expect(result.config.scalars.length).toBe(1);
|
|
49
|
+
expect(result.config.scalars[0]?.graphqlName).toBe("DateTime");
|
|
50
|
+
expect(result.config.scalars[0]?.typeName).toBe("DateTime");
|
|
51
|
+
expect(result.config.scalars[0]?.importPath).toBe("./src/scalars");
|
|
52
|
+
expect(result.diagnostics.length).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
it("should load config with multiple scalar mappings", async () => {
|
|
55
|
+
const configContent = `
|
|
56
|
+
export default {
|
|
57
|
+
scalars: [
|
|
58
|
+
{ graphqlName: "DateTime", type: { from: "./src/scalars", name: "DateTime" } },
|
|
59
|
+
{ graphqlName: "UUID", type: { from: "./src/scalars", name: "UUID" } },
|
|
60
|
+
{ graphqlName: "URL", type: { from: "@my-lib/types", name: "URL" } },
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
`;
|
|
64
|
+
fs.writeFileSync(path.join(tempDir, "gqlkit.config.ts"), configContent);
|
|
65
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
66
|
+
expect(result.config.scalars.length).toBe(3);
|
|
67
|
+
expect(result.config.scalars[0]?.graphqlName).toBe("DateTime");
|
|
68
|
+
expect(result.config.scalars[1]?.graphqlName).toBe("UUID");
|
|
69
|
+
expect(result.config.scalars[2]?.graphqlName).toBe("URL");
|
|
70
|
+
expect(result.config.scalars[2]?.importPath).toBe("@my-lib/types");
|
|
71
|
+
});
|
|
72
|
+
it("should return error diagnostic for syntax error", async () => {
|
|
73
|
+
const configContent = `
|
|
74
|
+
export default {
|
|
75
|
+
scalars: [
|
|
76
|
+
{ graphqlName: "DateTime", type: { from: "./src/scalars", name: "DateTime" }
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
`;
|
|
80
|
+
fs.writeFileSync(path.join(tempDir, "gqlkit.config.ts"), configContent);
|
|
81
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
82
|
+
expect(result.diagnostics.length).toBe(1);
|
|
83
|
+
expect(result.diagnostics[0]?.code).toBe("CONFIG_SYNTAX_ERROR");
|
|
84
|
+
expect(result.diagnostics[0]?.severity).toBe("error");
|
|
85
|
+
});
|
|
86
|
+
it("should load config without defineConfig wrapper", async () => {
|
|
87
|
+
const configContent = `
|
|
88
|
+
export default {
|
|
89
|
+
scalars: [
|
|
90
|
+
{ graphqlName: "DateTime", type: { from: "./src/scalars", name: "DateTime" } },
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
`;
|
|
94
|
+
fs.writeFileSync(path.join(tempDir, "gqlkit.config.ts"), configContent);
|
|
95
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
96
|
+
expect(result.config.scalars.length).toBe(1);
|
|
97
|
+
expect(result.config.scalars[0]?.graphqlName).toBe("DateTime");
|
|
98
|
+
});
|
|
99
|
+
it("should handle empty config object", async () => {
|
|
100
|
+
const configContent = `
|
|
101
|
+
export default {};
|
|
102
|
+
`;
|
|
103
|
+
fs.writeFileSync(path.join(tempDir, "gqlkit.config.ts"), configContent);
|
|
104
|
+
const result = await loadConfig({ cwd: tempDir });
|
|
105
|
+
expect(result.config).toEqual({
|
|
106
|
+
sourceDir: "src/gqlkit/schema",
|
|
107
|
+
sourceIgnoreGlobs: [],
|
|
108
|
+
output: {
|
|
109
|
+
resolversPath: "src/gqlkit/__generated__/resolvers.ts",
|
|
110
|
+
typeDefsPath: "src/gqlkit/__generated__/typeDefs.ts",
|
|
111
|
+
schemaPath: "src/gqlkit/__generated__/schema.graphql",
|
|
112
|
+
},
|
|
113
|
+
scalars: [],
|
|
114
|
+
tsconfigPath: null,
|
|
115
|
+
hooks: {
|
|
116
|
+
afterAllFileWrite: [],
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
expect(result.diagnostics.length).toBe(0);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=loader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/config-loader/loader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Diagnostic } from "../type-extractor/types/index.js";
|
|
2
|
+
import { type ResolvedConfig } from "./loader.js";
|
|
3
|
+
export interface ValidateConfigOptions {
|
|
4
|
+
readonly config: unknown;
|
|
5
|
+
readonly configPath: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ValidateConfigResult {
|
|
8
|
+
readonly valid: boolean;
|
|
9
|
+
readonly resolvedConfig: ResolvedConfig | undefined;
|
|
10
|
+
readonly diagnostics: ReadonlyArray<Diagnostic>;
|
|
11
|
+
}
|
|
12
|
+
export declare function validateConfig(options: ValidateConfigOptions): ValidateConfigResult;
|
|
13
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/config-loader/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAKL,KAAK,cAAc,EAIpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAohBD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAoHtB"}
|