@baeta/plugin-graphql 0.0.29 → 0.0.31
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/CHANGELOG.md +12 -0
- package/dist/index.cjs +109 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +99 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @baeta/plugin-graphql
|
|
2
2
|
|
|
3
|
+
## 0.0.31
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#133](https://github.com/andreisergiu98/baeta/pull/133) [`325f623`](https://github.com/andreisergiu98/baeta/commit/325f623caa9aab2d6ae45258f214be1d7518396a) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - add support for type resolver for interfaces and unions
|
|
8
|
+
|
|
9
|
+
## 0.0.30
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`0896994`](https://github.com/andreisergiu98/baeta/commit/089699451b41dbbe92d96bb4b9987e13893e7501) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - add typename to union
|
|
14
|
+
|
|
3
15
|
## 0.0.29
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -547,6 +547,41 @@ ${contentBody}
|
|
|
547
547
|
${content2}
|
|
548
548
|
},`;
|
|
549
549
|
}
|
|
550
|
+
function printTypenameResolverBuilder(name2, resultNamespace, valueNamespace) {
|
|
551
|
+
const resultType = `${importNamespace}.${resultNamespace}["${name2}"]`;
|
|
552
|
+
const valueType = `${importNamespace}.${valueNamespace}["${name2}"]`;
|
|
553
|
+
const contextType = getContextType();
|
|
554
|
+
const resolver = `$resolveType: module.createResolveType<${resultType}, ${valueType}, ${contextType}>("${name2}"),`;
|
|
555
|
+
return `${name2}: {
|
|
556
|
+
${indent(2)(resolver)}
|
|
557
|
+
},`;
|
|
558
|
+
}
|
|
559
|
+
function printInterfaceBuilder() {
|
|
560
|
+
const interfaces = defined.interfaces;
|
|
561
|
+
if (interfaces.length === 0) {
|
|
562
|
+
return "";
|
|
563
|
+
}
|
|
564
|
+
return interfaces.map(
|
|
565
|
+
(interfaceName) => printTypenameResolverBuilder(
|
|
566
|
+
interfaceName,
|
|
567
|
+
"DefinedInterfacesResults",
|
|
568
|
+
"DefinedInterfacesWithoutExtensions"
|
|
569
|
+
)
|
|
570
|
+
).join("\n");
|
|
571
|
+
}
|
|
572
|
+
function printUnionBuilder() {
|
|
573
|
+
const unions = defined.unions;
|
|
574
|
+
if (unions.length === 0) {
|
|
575
|
+
return "";
|
|
576
|
+
}
|
|
577
|
+
return unions.map(
|
|
578
|
+
(unionName) => printTypenameResolverBuilder(
|
|
579
|
+
unionName,
|
|
580
|
+
"DefinedUnionsResults",
|
|
581
|
+
"DefinedUnionsWithoutExtensions"
|
|
582
|
+
)
|
|
583
|
+
).join("\n");
|
|
584
|
+
}
|
|
550
585
|
function printBaetaManager() {
|
|
551
586
|
const objects = visited.objects.filter((type) => type !== "Subscription").map((typeName) => printObjectResolverBuilder(typeName, picks.objects)).filter(Boolean);
|
|
552
587
|
const contextType = getContextType();
|
|
@@ -555,7 +590,9 @@ ${content2}
|
|
|
555
590
|
...addons,
|
|
556
591
|
...objects,
|
|
557
592
|
printScalarBuilder(),
|
|
558
|
-
printSubscriptionObjectBuilder()
|
|
593
|
+
printSubscriptionObjectBuilder(),
|
|
594
|
+
printInterfaceBuilder(),
|
|
595
|
+
printUnionBuilder()
|
|
559
596
|
];
|
|
560
597
|
const body = bodyFields.filter(Boolean).map(indent(6)).join("\n");
|
|
561
598
|
const content2 = `{
|
|
@@ -607,6 +644,9 @@ ${body}
|
|
|
607
644
|
if (external.unions.includes(typeName)) {
|
|
608
645
|
return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
|
|
609
646
|
}
|
|
647
|
+
if (external.interfaces.includes(typeName)) {
|
|
648
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
|
|
649
|
+
}
|
|
610
650
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
611
651
|
return `DefinedEnumValues['${typeName}']`;
|
|
612
652
|
}
|
|
@@ -617,7 +657,7 @@ ${body}
|
|
|
617
657
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
618
658
|
}
|
|
619
659
|
if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {
|
|
620
|
-
return
|
|
660
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${normalizedTypeName}"]`;
|
|
621
661
|
}
|
|
622
662
|
if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {
|
|
623
663
|
return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;
|
|
@@ -625,6 +665,10 @@ ${body}
|
|
|
625
665
|
if (_graphql.isScalarType.call(void 0, _optionalChain([schema, 'optionalAccess', _12 => _12.getType, 'call', _13 => _13(typeName)]))) {
|
|
626
666
|
return coreType;
|
|
627
667
|
}
|
|
668
|
+
const node = _optionalChain([schema, 'optionalAccess', _14 => _14.getType, 'call', _15 => _15(typeName), 'optionalAccess', _16 => _16.astNode]);
|
|
669
|
+
if (_optionalChain([node, 'optionalAccess', _17 => _17.kind]) === _graphql.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
670
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${normalizedTypeName}"]`;
|
|
671
|
+
}
|
|
628
672
|
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
|
|
629
673
|
}
|
|
630
674
|
function printExportType(typeName) {
|
|
@@ -737,10 +781,10 @@ ${body}
|
|
|
737
781
|
return type;
|
|
738
782
|
}
|
|
739
783
|
function getResultType(type, field) {
|
|
740
|
-
return _optionalChain([fieldTypes, 'optionalAccess',
|
|
784
|
+
return _optionalChain([fieldTypes, 'optionalAccess', _18 => _18[type], 'optionalAccess', _19 => _19[field]]) || "{}";
|
|
741
785
|
}
|
|
742
786
|
function getArgsType(type, field) {
|
|
743
|
-
const hasArgs = _nullishCoalesce(_optionalChain([fieldArguments, 'optionalAccess',
|
|
787
|
+
const hasArgs = _nullishCoalesce(_optionalChain([fieldArguments, 'optionalAccess', _20 => _20[type], 'optionalAccess', _21 => _21[field]]), () => ( false));
|
|
744
788
|
if (!hasArgs) {
|
|
745
789
|
return "{}";
|
|
746
790
|
}
|
|
@@ -757,7 +801,7 @@ var preset = {
|
|
|
757
801
|
buildGeneratesSection: (options) => {
|
|
758
802
|
const { baseOutputDir } = options;
|
|
759
803
|
const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;
|
|
760
|
-
const requireRootResolvers = _visitorplugincommon.getConfigValue.call(void 0, _optionalChain([options, 'optionalAccess',
|
|
804
|
+
const requireRootResolvers = _visitorplugincommon.getConfigValue.call(void 0, _optionalChain([options, 'optionalAccess', _22 => _22.presetConfig, 'access', _23 => _23.requireRootResolvers]), false);
|
|
761
805
|
const cwd = _utilpath.resolve.call(void 0, options.presetConfig.cwd || process.cwd());
|
|
762
806
|
const importTypesNamespace = options.presetConfig.importTypesNamespace || "Types";
|
|
763
807
|
if (!baseTypesPath) {
|
|
@@ -765,11 +809,11 @@ var preset = {
|
|
|
765
809
|
`Preset "graphql-modules" requires you to specify "baseTypesPath" configuration and point it to your base types file (generated by "typescript" plugin)!`
|
|
766
810
|
);
|
|
767
811
|
}
|
|
768
|
-
if (!_optionalChain([options, 'access',
|
|
812
|
+
if (!_optionalChain([options, 'access', _24 => _24.schemaAst, 'optionalAccess', _25 => _25.extensions, 'access', _26 => _26.sources])) {
|
|
769
813
|
throw new Error(`Preset "graphql-modules" requires to use GraphQL SDL`);
|
|
770
814
|
}
|
|
771
|
-
const extensions = _optionalChain([options, 'access',
|
|
772
|
-
const sources = _nullishCoalesce(_optionalChain([extensions, 'optionalAccess',
|
|
815
|
+
const extensions = _optionalChain([options, 'access', _27 => _27.schemaAst, 'optionalAccess', _28 => _28.extensions]);
|
|
816
|
+
const sources = _nullishCoalesce(_optionalChain([extensions, 'optionalAccess', _29 => _29.extendedSources]), () => ( []));
|
|
773
817
|
const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);
|
|
774
818
|
const modules = Object.keys(sourcesByModuleMap);
|
|
775
819
|
const baseVisitor = new (0, _visitorplugincommon.BaseVisitor)(options.config, {});
|
|
@@ -805,7 +849,11 @@ var preset = {
|
|
|
805
849
|
plugin: (schema) => {
|
|
806
850
|
const typePicks = [];
|
|
807
851
|
const unionPicks = [];
|
|
852
|
+
const unionResults = [];
|
|
853
|
+
const interfacePicks = [];
|
|
854
|
+
const interfaceResults = [];
|
|
808
855
|
const unionTypesMap = {};
|
|
856
|
+
const interfacesTypesMap = {};
|
|
809
857
|
for (const moduleName of modules) {
|
|
810
858
|
const sources2 = sourcesByModuleMap[moduleName];
|
|
811
859
|
const documents = sources2.map((source) => source.document);
|
|
@@ -822,6 +870,13 @@ var preset = {
|
|
|
822
870
|
const unions = [...unionsDefinition2, ...unionsExtensions];
|
|
823
871
|
for (const type of types) {
|
|
824
872
|
const name = type.name.value;
|
|
873
|
+
for (const interfaceNode of _nullishCoalesce(type.interfaces, () => ( []))) {
|
|
874
|
+
const interfaceName = interfaceNode.name.value;
|
|
875
|
+
if (interfacesTypesMap[interfaceName] == null) {
|
|
876
|
+
interfacesTypesMap[interfaceName] = [];
|
|
877
|
+
}
|
|
878
|
+
_optionalChain([interfacesTypesMap, 'access', _30 => _30[interfaceName], 'optionalAccess', _31 => _31.push, 'call', _32 => _32(name)]);
|
|
879
|
+
}
|
|
825
880
|
if (name === "Query" || name === "Mutation" || name === "Subscription") {
|
|
826
881
|
continue;
|
|
827
882
|
}
|
|
@@ -833,21 +888,40 @@ var preset = {
|
|
|
833
888
|
typePicks.push(` ${name}: ${fieldNames};`);
|
|
834
889
|
}
|
|
835
890
|
for (const union of unions) {
|
|
836
|
-
const types2 = _nullishCoalesce(_optionalChain([union, 'access',
|
|
837
|
-
const mappedTypes = types2.map((t) => `DefinedFieldsWithoutExtensions["${t}"]`);
|
|
891
|
+
const types2 = _nullishCoalesce(_optionalChain([union, 'access', _33 => _33.types, 'optionalAccess', _34 => _34.map, 'call', _35 => _35((t) => t.name.value)]), () => ( []));
|
|
838
892
|
if (unionTypesMap[union.name.value] == null) {
|
|
839
893
|
unionTypesMap[union.name.value] = [];
|
|
840
894
|
}
|
|
841
|
-
_optionalChain([unionTypesMap, 'access',
|
|
895
|
+
_optionalChain([unionTypesMap, 'access', _36 => _36[union.name.value], 'optionalAccess', _37 => _37.push, 'call', _38 => _38(...types2)]);
|
|
842
896
|
}
|
|
843
897
|
}
|
|
844
898
|
for (const unionName in unionTypesMap) {
|
|
845
899
|
const types = unionTypesMap[unionName];
|
|
846
900
|
if (types == null || types.length === 0) {
|
|
847
901
|
unionPicks.push(` ${unionName}: never;`);
|
|
902
|
+
unionResults.push(` ${unionName}: null;`);
|
|
848
903
|
continue;
|
|
849
904
|
}
|
|
850
|
-
|
|
905
|
+
const typePicks2 = types.map(
|
|
906
|
+
(t) => `Pick<${t}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`
|
|
907
|
+
);
|
|
908
|
+
const resultPicks = types.map((t) => `"${t}"`);
|
|
909
|
+
unionPicks.push(` ${unionName}: ${typePicks2.join(" | ")};`);
|
|
910
|
+
unionResults.push(` ${unionName}: ${resultPicks.join(" | ")} | null;`);
|
|
911
|
+
}
|
|
912
|
+
for (const interfaceName in interfacesTypesMap) {
|
|
913
|
+
const types = interfacesTypesMap[interfaceName];
|
|
914
|
+
if (types == null || types.length === 0) {
|
|
915
|
+
interfacePicks.push(` ${interfaceName}: never;`);
|
|
916
|
+
interfaceResults.push(` ${interfaceName}: null;`);
|
|
917
|
+
continue;
|
|
918
|
+
}
|
|
919
|
+
const typePicks2 = types.map(
|
|
920
|
+
(t) => `Pick<${t}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`
|
|
921
|
+
);
|
|
922
|
+
const resultPicks = types.map((t) => `"${t}"`);
|
|
923
|
+
interfacePicks.push(` ${interfaceName}: ${typePicks2.join(" | ")};`);
|
|
924
|
+
interfaceResults.push(` ${interfaceName}: ${resultPicks.join(" | ")} | null;`);
|
|
851
925
|
}
|
|
852
926
|
const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {
|
|
853
927
|
${typePicks.join("\n")}
|
|
@@ -855,10 +929,27 @@ ${typePicks.join("\n")}
|
|
|
855
929
|
const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {
|
|
856
930
|
${unionPicks.join("\n")}
|
|
857
931
|
};`;
|
|
932
|
+
const unionsResultsDefinition = `export type DefinedUnionsResults = {
|
|
933
|
+
${unionResults.join("\n")}
|
|
934
|
+
};`;
|
|
935
|
+
const interfacesDefinition = `export type DefinedInterfacesWithoutExtensions = {
|
|
936
|
+
${interfacePicks.join("\n")}
|
|
937
|
+
};`;
|
|
938
|
+
const interfacesResultsDefinition = `export type DefinedInterfacesResults = {
|
|
939
|
+
${interfaceResults.join(
|
|
940
|
+
"\n"
|
|
941
|
+
)}
|
|
942
|
+
};`;
|
|
943
|
+
const result = [
|
|
944
|
+
fieldsDefinition,
|
|
945
|
+
unionsDefinition,
|
|
946
|
+
unionsResultsDefinition,
|
|
947
|
+
interfacesDefinition,
|
|
948
|
+
interfacesResultsDefinition
|
|
949
|
+
].join("\n\n");
|
|
858
950
|
return `
|
|
859
|
-
${
|
|
860
|
-
|
|
861
|
-
${unionsDefinition}`;
|
|
951
|
+
${result}
|
|
952
|
+
`;
|
|
862
953
|
}
|
|
863
954
|
}
|
|
864
955
|
},
|
|
@@ -905,9 +996,9 @@ ${unionsDefinition}`;
|
|
|
905
996
|
fieldArguments,
|
|
906
997
|
extensionsPath,
|
|
907
998
|
rootTypes: [
|
|
908
|
-
_optionalChain([schema, 'access',
|
|
909
|
-
_optionalChain([schema, 'access',
|
|
910
|
-
_optionalChain([schema, 'access',
|
|
999
|
+
_optionalChain([schema, 'access', _39 => _39.getQueryType, 'call', _40 => _40(), 'optionalAccess', _41 => _41.name]) || "",
|
|
1000
|
+
_optionalChain([schema, 'access', _42 => _42.getMutationType, 'call', _43 => _43(), 'optionalAccess', _44 => _44.name]) || "",
|
|
1001
|
+
_optionalChain([schema, 'access', _45 => _45.getSubscriptionType, 'call', _46 => _46(), 'optionalAccess', _47 => _47.name]) || ""
|
|
911
1002
|
].filter(Boolean)
|
|
912
1003
|
})
|
|
913
1004
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"names":["getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","sources","unionsDefinition","types","result"],"mappings":"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","sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n const mappedTypes = types.map((t) => `DefinedFieldsWithoutExtensions[\"${t}\"]`);\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...mappedTypes);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n continue;\n }\n\n unionPicks.push(` ${unionName}: ${types.join(' | ')};`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n\n return `\\n${fieldsDefinition}\\n\\n${unionsDefinition}`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"names":["getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","sources","unionsDefinition","types","typePicks","result"],"mappings":"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","sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n const unionResults: string[] = [];\n const interfacePicks: string[] = [];\n const interfaceResults: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n const interfacesTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n for (const interfaceNode of type.interfaces ?? []) {\n const interfaceName = interfaceNode.name.value;\n\n if (interfacesTypesMap[interfaceName] == null) {\n interfacesTypesMap[interfaceName] = [];\n }\n\n interfacesTypesMap[interfaceName]?.push(name);\n }\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...types);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n unionResults.push(` ${unionName}: null;`);\n continue;\n }\n\n const typePicks = types.map(\n (t) => `Pick<${t}, DefinedFieldsWithoutExtensions[\"${t}\"] | \"__typename\">`,\n );\n\n const resultPicks = types.map((t) => `\"${t}\"`);\n\n unionPicks.push(` ${unionName}: ${typePicks.join(' | ')};`);\n unionResults.push(` ${unionName}: ${resultPicks.join(' | ')} | null;`);\n }\n\n for (const interfaceName in interfacesTypesMap) {\n const types = interfacesTypesMap[interfaceName];\n\n if (types == null || types.length === 0) {\n interfacePicks.push(` ${interfaceName}: never;`);\n interfaceResults.push(` ${interfaceName}: null;`);\n continue;\n }\n\n const typePicks = types.map(\n (t) => `Pick<${t}, DefinedFieldsWithoutExtensions[\"${t}\"] | \"__typename\">`,\n );\n\n const resultPicks = types.map((t) => `\"${t}\"`);\n\n interfacePicks.push(` ${interfaceName}: ${typePicks.join(' | ')};`);\n interfaceResults.push(` ${interfaceName}: ${resultPicks.join(' | ')} | null;`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n const unionsResultsDefinition = `export type DefinedUnionsResults = {\\n${unionResults.join('\\n')}\\n};`;\n const interfacesDefinition = `export type DefinedInterfacesWithoutExtensions = {\\n${interfacePicks.join('\\n')}\\n};`;\n const interfacesResultsDefinition = `export type DefinedInterfacesResults = {\\n${interfaceResults.join(\n '\\n',\n )}\\n};`;\n\n const result = [\n fieldsDefinition,\n unionsDefinition,\n unionsResultsDefinition,\n interfacesDefinition,\n interfacesResultsDefinition,\n ].join('\\n\\n');\n\n return `\\n${result}\\n`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printTypenameResolverBuilder(\n name: string,\n resultNamespace: string,\n valueNamespace: string,\n ) {\n const resultType = `${importNamespace}.${resultNamespace}[\"${name}\"]`;\n const valueType = `${importNamespace}.${valueNamespace}[\"${name}\"]`;\n const contextType = getContextType();\n const resolver = `$resolveType: module.createResolveType<${resultType}, ${valueType}, ${contextType}>(\"${name}\"),`;\n return `${name}: {\\n${indent(2)(resolver)}\\n},`;\n }\n\n function printInterfaceBuilder() {\n const interfaces = defined.interfaces;\n\n if (interfaces.length === 0) {\n return '';\n }\n\n return interfaces\n .map((interfaceName) =>\n printTypenameResolverBuilder(\n interfaceName,\n 'DefinedInterfacesResults',\n 'DefinedInterfacesWithoutExtensions',\n ),\n )\n .join('\\n');\n }\n\n function printUnionBuilder() {\n const unions = defined.unions;\n\n if (unions.length === 0) {\n return '';\n }\n\n return unions\n .map((unionName) =>\n printTypenameResolverBuilder(\n unionName,\n 'DefinedUnionsResults',\n 'DefinedUnionsWithoutExtensions',\n ),\n )\n .join('\\n');\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n printInterfaceBuilder(),\n printUnionBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (external.interfaces.includes(typeName)) {\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n const node = schema?.getType(typeName)?.astNode;\n\n if (node?.kind === Kind.INTERFACE_TYPE_DEFINITION) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -547,6 +547,41 @@ ${contentBody}
|
|
|
547
547
|
${content2}
|
|
548
548
|
},`;
|
|
549
549
|
}
|
|
550
|
+
function printTypenameResolverBuilder(name2, resultNamespace, valueNamespace) {
|
|
551
|
+
const resultType = `${importNamespace}.${resultNamespace}["${name2}"]`;
|
|
552
|
+
const valueType = `${importNamespace}.${valueNamespace}["${name2}"]`;
|
|
553
|
+
const contextType = getContextType();
|
|
554
|
+
const resolver = `$resolveType: module.createResolveType<${resultType}, ${valueType}, ${contextType}>("${name2}"),`;
|
|
555
|
+
return `${name2}: {
|
|
556
|
+
${indent(2)(resolver)}
|
|
557
|
+
},`;
|
|
558
|
+
}
|
|
559
|
+
function printInterfaceBuilder() {
|
|
560
|
+
const interfaces = defined.interfaces;
|
|
561
|
+
if (interfaces.length === 0) {
|
|
562
|
+
return "";
|
|
563
|
+
}
|
|
564
|
+
return interfaces.map(
|
|
565
|
+
(interfaceName) => printTypenameResolverBuilder(
|
|
566
|
+
interfaceName,
|
|
567
|
+
"DefinedInterfacesResults",
|
|
568
|
+
"DefinedInterfacesWithoutExtensions"
|
|
569
|
+
)
|
|
570
|
+
).join("\n");
|
|
571
|
+
}
|
|
572
|
+
function printUnionBuilder() {
|
|
573
|
+
const unions = defined.unions;
|
|
574
|
+
if (unions.length === 0) {
|
|
575
|
+
return "";
|
|
576
|
+
}
|
|
577
|
+
return unions.map(
|
|
578
|
+
(unionName) => printTypenameResolverBuilder(
|
|
579
|
+
unionName,
|
|
580
|
+
"DefinedUnionsResults",
|
|
581
|
+
"DefinedUnionsWithoutExtensions"
|
|
582
|
+
)
|
|
583
|
+
).join("\n");
|
|
584
|
+
}
|
|
550
585
|
function printBaetaManager() {
|
|
551
586
|
const objects = visited.objects.filter((type) => type !== "Subscription").map((typeName) => printObjectResolverBuilder(typeName, picks.objects)).filter(Boolean);
|
|
552
587
|
const contextType = getContextType();
|
|
@@ -555,7 +590,9 @@ ${content2}
|
|
|
555
590
|
...addons,
|
|
556
591
|
...objects,
|
|
557
592
|
printScalarBuilder(),
|
|
558
|
-
printSubscriptionObjectBuilder()
|
|
593
|
+
printSubscriptionObjectBuilder(),
|
|
594
|
+
printInterfaceBuilder(),
|
|
595
|
+
printUnionBuilder()
|
|
559
596
|
];
|
|
560
597
|
const body = bodyFields.filter(Boolean).map(indent(6)).join("\n");
|
|
561
598
|
const content2 = `{
|
|
@@ -607,6 +644,9 @@ ${body}
|
|
|
607
644
|
if (external.unions.includes(typeName)) {
|
|
608
645
|
return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
|
|
609
646
|
}
|
|
647
|
+
if (external.interfaces.includes(typeName)) {
|
|
648
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
|
|
649
|
+
}
|
|
610
650
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
611
651
|
return `DefinedEnumValues['${typeName}']`;
|
|
612
652
|
}
|
|
@@ -617,7 +657,7 @@ ${body}
|
|
|
617
657
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
618
658
|
}
|
|
619
659
|
if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {
|
|
620
|
-
return
|
|
660
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${normalizedTypeName}"]`;
|
|
621
661
|
}
|
|
622
662
|
if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {
|
|
623
663
|
return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;
|
|
@@ -625,6 +665,10 @@ ${body}
|
|
|
625
665
|
if (isScalarType(schema?.getType(typeName))) {
|
|
626
666
|
return coreType;
|
|
627
667
|
}
|
|
668
|
+
const node = schema?.getType(typeName)?.astNode;
|
|
669
|
+
if (node?.kind === Kind2.INTERFACE_TYPE_DEFINITION) {
|
|
670
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${normalizedTypeName}"]`;
|
|
671
|
+
}
|
|
628
672
|
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
|
|
629
673
|
}
|
|
630
674
|
function printExportType(typeName) {
|
|
@@ -805,7 +849,11 @@ var preset = {
|
|
|
805
849
|
plugin: (schema) => {
|
|
806
850
|
const typePicks = [];
|
|
807
851
|
const unionPicks = [];
|
|
852
|
+
const unionResults = [];
|
|
853
|
+
const interfacePicks = [];
|
|
854
|
+
const interfaceResults = [];
|
|
808
855
|
const unionTypesMap = {};
|
|
856
|
+
const interfacesTypesMap = {};
|
|
809
857
|
for (const moduleName of modules) {
|
|
810
858
|
const sources2 = sourcesByModuleMap[moduleName];
|
|
811
859
|
const documents = sources2.map((source) => source.document);
|
|
@@ -822,6 +870,13 @@ var preset = {
|
|
|
822
870
|
const unions = [...unionsDefinition2, ...unionsExtensions];
|
|
823
871
|
for (const type of types) {
|
|
824
872
|
const name = type.name.value;
|
|
873
|
+
for (const interfaceNode of type.interfaces ?? []) {
|
|
874
|
+
const interfaceName = interfaceNode.name.value;
|
|
875
|
+
if (interfacesTypesMap[interfaceName] == null) {
|
|
876
|
+
interfacesTypesMap[interfaceName] = [];
|
|
877
|
+
}
|
|
878
|
+
interfacesTypesMap[interfaceName]?.push(name);
|
|
879
|
+
}
|
|
825
880
|
if (name === "Query" || name === "Mutation" || name === "Subscription") {
|
|
826
881
|
continue;
|
|
827
882
|
}
|
|
@@ -834,20 +889,39 @@ var preset = {
|
|
|
834
889
|
}
|
|
835
890
|
for (const union of unions) {
|
|
836
891
|
const types2 = union.types?.map((t) => t.name.value) ?? [];
|
|
837
|
-
const mappedTypes = types2.map((t) => `DefinedFieldsWithoutExtensions["${t}"]`);
|
|
838
892
|
if (unionTypesMap[union.name.value] == null) {
|
|
839
893
|
unionTypesMap[union.name.value] = [];
|
|
840
894
|
}
|
|
841
|
-
unionTypesMap[union.name.value]?.push(...
|
|
895
|
+
unionTypesMap[union.name.value]?.push(...types2);
|
|
842
896
|
}
|
|
843
897
|
}
|
|
844
898
|
for (const unionName in unionTypesMap) {
|
|
845
899
|
const types = unionTypesMap[unionName];
|
|
846
900
|
if (types == null || types.length === 0) {
|
|
847
901
|
unionPicks.push(` ${unionName}: never;`);
|
|
902
|
+
unionResults.push(` ${unionName}: null;`);
|
|
848
903
|
continue;
|
|
849
904
|
}
|
|
850
|
-
|
|
905
|
+
const typePicks2 = types.map(
|
|
906
|
+
(t) => `Pick<${t}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`
|
|
907
|
+
);
|
|
908
|
+
const resultPicks = types.map((t) => `"${t}"`);
|
|
909
|
+
unionPicks.push(` ${unionName}: ${typePicks2.join(" | ")};`);
|
|
910
|
+
unionResults.push(` ${unionName}: ${resultPicks.join(" | ")} | null;`);
|
|
911
|
+
}
|
|
912
|
+
for (const interfaceName in interfacesTypesMap) {
|
|
913
|
+
const types = interfacesTypesMap[interfaceName];
|
|
914
|
+
if (types == null || types.length === 0) {
|
|
915
|
+
interfacePicks.push(` ${interfaceName}: never;`);
|
|
916
|
+
interfaceResults.push(` ${interfaceName}: null;`);
|
|
917
|
+
continue;
|
|
918
|
+
}
|
|
919
|
+
const typePicks2 = types.map(
|
|
920
|
+
(t) => `Pick<${t}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`
|
|
921
|
+
);
|
|
922
|
+
const resultPicks = types.map((t) => `"${t}"`);
|
|
923
|
+
interfacePicks.push(` ${interfaceName}: ${typePicks2.join(" | ")};`);
|
|
924
|
+
interfaceResults.push(` ${interfaceName}: ${resultPicks.join(" | ")} | null;`);
|
|
851
925
|
}
|
|
852
926
|
const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {
|
|
853
927
|
${typePicks.join("\n")}
|
|
@@ -855,10 +929,27 @@ ${typePicks.join("\n")}
|
|
|
855
929
|
const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {
|
|
856
930
|
${unionPicks.join("\n")}
|
|
857
931
|
};`;
|
|
932
|
+
const unionsResultsDefinition = `export type DefinedUnionsResults = {
|
|
933
|
+
${unionResults.join("\n")}
|
|
934
|
+
};`;
|
|
935
|
+
const interfacesDefinition = `export type DefinedInterfacesWithoutExtensions = {
|
|
936
|
+
${interfacePicks.join("\n")}
|
|
937
|
+
};`;
|
|
938
|
+
const interfacesResultsDefinition = `export type DefinedInterfacesResults = {
|
|
939
|
+
${interfaceResults.join(
|
|
940
|
+
"\n"
|
|
941
|
+
)}
|
|
942
|
+
};`;
|
|
943
|
+
const result = [
|
|
944
|
+
fieldsDefinition,
|
|
945
|
+
unionsDefinition,
|
|
946
|
+
unionsResultsDefinition,
|
|
947
|
+
interfacesDefinition,
|
|
948
|
+
interfacesResultsDefinition
|
|
949
|
+
].join("\n\n");
|
|
858
950
|
return `
|
|
859
|
-
${
|
|
860
|
-
|
|
861
|
-
${unionsDefinition}`;
|
|
951
|
+
${result}
|
|
952
|
+
`;
|
|
862
953
|
}
|
|
863
954
|
}
|
|
864
955
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n const mappedTypes = types.map((t) => `DefinedFieldsWithoutExtensions[\"${t}\"]`);\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...mappedTypes);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n continue;\n }\n\n unionPicks.push(` ${unionName}: ${types.join(' | ')};`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n\n return `\\n${fieldsDefinition}\\n\\n${unionsDefinition}`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"],"mappings":"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","names":["getCachedDocumentNodeFromSchema","getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","Kind","isScalarType","sources","unionsDefinition","types","result"]}
|
|
1
|
+
{"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n const unionResults: string[] = [];\n const interfacePicks: string[] = [];\n const interfaceResults: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n const interfacesTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n for (const interfaceNode of type.interfaces ?? []) {\n const interfaceName = interfaceNode.name.value;\n\n if (interfacesTypesMap[interfaceName] == null) {\n interfacesTypesMap[interfaceName] = [];\n }\n\n interfacesTypesMap[interfaceName]?.push(name);\n }\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...types);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n unionResults.push(` ${unionName}: null;`);\n continue;\n }\n\n const typePicks = types.map(\n (t) => `Pick<${t}, DefinedFieldsWithoutExtensions[\"${t}\"] | \"__typename\">`,\n );\n\n const resultPicks = types.map((t) => `\"${t}\"`);\n\n unionPicks.push(` ${unionName}: ${typePicks.join(' | ')};`);\n unionResults.push(` ${unionName}: ${resultPicks.join(' | ')} | null;`);\n }\n\n for (const interfaceName in interfacesTypesMap) {\n const types = interfacesTypesMap[interfaceName];\n\n if (types == null || types.length === 0) {\n interfacePicks.push(` ${interfaceName}: never;`);\n interfaceResults.push(` ${interfaceName}: null;`);\n continue;\n }\n\n const typePicks = types.map(\n (t) => `Pick<${t}, DefinedFieldsWithoutExtensions[\"${t}\"] | \"__typename\">`,\n );\n\n const resultPicks = types.map((t) => `\"${t}\"`);\n\n interfacePicks.push(` ${interfaceName}: ${typePicks.join(' | ')};`);\n interfaceResults.push(` ${interfaceName}: ${resultPicks.join(' | ')} | null;`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n const unionsResultsDefinition = `export type DefinedUnionsResults = {\\n${unionResults.join('\\n')}\\n};`;\n const interfacesDefinition = `export type DefinedInterfacesWithoutExtensions = {\\n${interfacePicks.join('\\n')}\\n};`;\n const interfacesResultsDefinition = `export type DefinedInterfacesResults = {\\n${interfaceResults.join(\n '\\n',\n )}\\n};`;\n\n const result = [\n fieldsDefinition,\n unionsDefinition,\n unionsResultsDefinition,\n interfacesDefinition,\n interfacesResultsDefinition,\n ].join('\\n\\n');\n\n return `\\n${result}\\n`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printTypenameResolverBuilder(\n name: string,\n resultNamespace: string,\n valueNamespace: string,\n ) {\n const resultType = `${importNamespace}.${resultNamespace}[\"${name}\"]`;\n const valueType = `${importNamespace}.${valueNamespace}[\"${name}\"]`;\n const contextType = getContextType();\n const resolver = `$resolveType: module.createResolveType<${resultType}, ${valueType}, ${contextType}>(\"${name}\"),`;\n return `${name}: {\\n${indent(2)(resolver)}\\n},`;\n }\n\n function printInterfaceBuilder() {\n const interfaces = defined.interfaces;\n\n if (interfaces.length === 0) {\n return '';\n }\n\n return interfaces\n .map((interfaceName) =>\n printTypenameResolverBuilder(\n interfaceName,\n 'DefinedInterfacesResults',\n 'DefinedInterfacesWithoutExtensions',\n ),\n )\n .join('\\n');\n }\n\n function printUnionBuilder() {\n const unions = defined.unions;\n\n if (unions.length === 0) {\n return '';\n }\n\n return unions\n .map((unionName) =>\n printTypenameResolverBuilder(\n unionName,\n 'DefinedUnionsResults',\n 'DefinedUnionsWithoutExtensions',\n ),\n )\n .join('\\n');\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n printInterfaceBuilder(),\n printUnionBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (external.interfaces.includes(typeName)) {\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n const node = schema?.getType(typeName)?.astNode;\n\n if (node?.kind === Kind.INTERFACE_TYPE_DEFINITION) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"],"mappings":"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","names":["getCachedDocumentNodeFromSchema","getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","Kind","isScalarType","sources","unionsDefinition","types","typePicks","result"]}
|