@baeta/plugin-graphql 0.0.31 → 0.0.33
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 +21 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -13
- 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.33
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`966e1b7`](https://github.com/andreisergiu98/baeta/commit/966e1b7697090b1de5a3ed1638aee474b48088c3) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Fix union withouth extension pick
|
|
8
|
+
|
|
9
|
+
## 0.0.32
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`5d22b52`](https://github.com/andreisergiu98/baeta/commit/5d22b520e0181ee44111f6438036380050d140c3) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Fix type for unions and interfaces when the name is not pascal case
|
|
14
|
+
|
|
3
15
|
## 0.0.31
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -639,25 +639,25 @@ ${body}
|
|
|
639
639
|
if (schema && _graphql.isScalarType.call(void 0, schema.getType(typeName))) {
|
|
640
640
|
return `${importNamespace}.Scalars['${typeName}']`;
|
|
641
641
|
}
|
|
642
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
642
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
643
643
|
}
|
|
644
644
|
if (external.unions.includes(typeName)) {
|
|
645
|
-
return `${importNamespace}.DefinedUnionsWithoutExtensions["${
|
|
645
|
+
return `${importNamespace}.DefinedUnionsWithoutExtensions["${typeName}"]`;
|
|
646
646
|
}
|
|
647
647
|
if (external.interfaces.includes(typeName)) {
|
|
648
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
648
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
649
649
|
}
|
|
650
650
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
651
651
|
return `DefinedEnumValues['${typeName}']`;
|
|
652
652
|
}
|
|
653
653
|
if (defined.unions.includes(typeName) && picks.unions[typeName]) {
|
|
654
|
-
return `${importNamespace}.DefinedUnionsWithoutExtensions["${
|
|
654
|
+
return `${importNamespace}.DefinedUnionsWithoutExtensions["${typeName}"]`;
|
|
655
655
|
}
|
|
656
656
|
if (defined.objects.includes(typeName) && picks.objects[typeName]) {
|
|
657
657
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
658
658
|
}
|
|
659
659
|
if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {
|
|
660
|
-
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${
|
|
660
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${typeName}"]`;
|
|
661
661
|
}
|
|
662
662
|
if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {
|
|
663
663
|
return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;
|
|
@@ -667,9 +667,9 @@ ${body}
|
|
|
667
667
|
}
|
|
668
668
|
const node = _optionalChain([schema, 'optionalAccess', _14 => _14.getType, 'call', _15 => _15(typeName), 'optionalAccess', _16 => _16.astNode]);
|
|
669
669
|
if (_optionalChain([node, 'optionalAccess', _17 => _17.kind]) === _graphql.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
670
|
-
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${
|
|
670
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${typeName}"]`;
|
|
671
671
|
}
|
|
672
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
672
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
673
673
|
}
|
|
674
674
|
function printExportType(typeName) {
|
|
675
675
|
return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;
|
|
@@ -902,9 +902,13 @@ var preset = {
|
|
|
902
902
|
unionResults.push(` ${unionName}: null;`);
|
|
903
903
|
continue;
|
|
904
904
|
}
|
|
905
|
-
const typePicks2 = types.map(
|
|
906
|
-
|
|
907
|
-
|
|
905
|
+
const typePicks2 = types.map((t) => {
|
|
906
|
+
const normalizedTypeName = baseVisitor.convertName(t, {
|
|
907
|
+
useTypesSuffix: true,
|
|
908
|
+
useTypesPrefix: true
|
|
909
|
+
});
|
|
910
|
+
return `Pick<${normalizedTypeName}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`;
|
|
911
|
+
});
|
|
908
912
|
const resultPicks = types.map((t) => `"${t}"`);
|
|
909
913
|
unionPicks.push(` ${unionName}: ${typePicks2.join(" | ")};`);
|
|
910
914
|
unionResults.push(` ${unionName}: ${resultPicks.join(" | ")} | null;`);
|
|
@@ -916,9 +920,13 @@ var preset = {
|
|
|
916
920
|
interfaceResults.push(` ${interfaceName}: null;`);
|
|
917
921
|
continue;
|
|
918
922
|
}
|
|
919
|
-
const typePicks2 = types.map(
|
|
920
|
-
|
|
921
|
-
|
|
923
|
+
const typePicks2 = types.map((t) => {
|
|
924
|
+
const normalizedTypeName = baseVisitor.convertName(t, {
|
|
925
|
+
useTypesSuffix: true,
|
|
926
|
+
useTypesPrefix: true
|
|
927
|
+
});
|
|
928
|
+
return `Pick<${normalizedTypeName}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`;
|
|
929
|
+
});
|
|
922
930
|
const resultPicks = types.map((t) => `"${t}"`);
|
|
923
931
|
interfacePicks.push(` ${interfaceName}: ${typePicks2.join(" | ")};`);
|
|
924
932
|
interfaceResults.push(` ${interfaceName}: ${resultPicks.join(" | ")} | null;`);
|
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","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"]}
|
|
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((t) => {\n const normalizedTypeName = baseVisitor.convertName(t, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n return `Pick<${normalizedTypeName}, 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((t) => {\n const normalizedTypeName = baseVisitor.convertName(t, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n return `Pick<${normalizedTypeName}, 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[\"${typeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${typeName}\"]`;\n }\n\n if (external.interfaces.includes(typeName)) {\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${typeName}\"]>`;\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[\"${typeName}\"]`;\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[\"${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 const node = schema?.getType(typeName)?.astNode;\n\n if (node?.kind === Kind.INTERFACE_TYPE_DEFINITION) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${typeName}\"]`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${typeName}\"]>`;\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
|
@@ -639,25 +639,25 @@ ${body}
|
|
|
639
639
|
if (schema && isScalarType(schema.getType(typeName))) {
|
|
640
640
|
return `${importNamespace}.Scalars['${typeName}']`;
|
|
641
641
|
}
|
|
642
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
642
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
643
643
|
}
|
|
644
644
|
if (external.unions.includes(typeName)) {
|
|
645
|
-
return `${importNamespace}.DefinedUnionsWithoutExtensions["${
|
|
645
|
+
return `${importNamespace}.DefinedUnionsWithoutExtensions["${typeName}"]`;
|
|
646
646
|
}
|
|
647
647
|
if (external.interfaces.includes(typeName)) {
|
|
648
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
648
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
649
649
|
}
|
|
650
650
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
651
651
|
return `DefinedEnumValues['${typeName}']`;
|
|
652
652
|
}
|
|
653
653
|
if (defined.unions.includes(typeName) && picks.unions[typeName]) {
|
|
654
|
-
return `${importNamespace}.DefinedUnionsWithoutExtensions["${
|
|
654
|
+
return `${importNamespace}.DefinedUnionsWithoutExtensions["${typeName}"]`;
|
|
655
655
|
}
|
|
656
656
|
if (defined.objects.includes(typeName) && picks.objects[typeName]) {
|
|
657
657
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
658
658
|
}
|
|
659
659
|
if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {
|
|
660
|
-
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${
|
|
660
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${typeName}"]`;
|
|
661
661
|
}
|
|
662
662
|
if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {
|
|
663
663
|
return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;
|
|
@@ -667,9 +667,9 @@ ${body}
|
|
|
667
667
|
}
|
|
668
668
|
const node = schema?.getType(typeName)?.astNode;
|
|
669
669
|
if (node?.kind === Kind2.INTERFACE_TYPE_DEFINITION) {
|
|
670
|
-
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${
|
|
670
|
+
return `${importNamespace}.DefinedInterfacesWithoutExtensions["${typeName}"]`;
|
|
671
671
|
}
|
|
672
|
-
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${
|
|
672
|
+
return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${typeName}"]>`;
|
|
673
673
|
}
|
|
674
674
|
function printExportType(typeName) {
|
|
675
675
|
return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;
|
|
@@ -902,9 +902,13 @@ var preset = {
|
|
|
902
902
|
unionResults.push(` ${unionName}: null;`);
|
|
903
903
|
continue;
|
|
904
904
|
}
|
|
905
|
-
const typePicks2 = types.map(
|
|
906
|
-
|
|
907
|
-
|
|
905
|
+
const typePicks2 = types.map((t) => {
|
|
906
|
+
const normalizedTypeName = baseVisitor.convertName(t, {
|
|
907
|
+
useTypesSuffix: true,
|
|
908
|
+
useTypesPrefix: true
|
|
909
|
+
});
|
|
910
|
+
return `Pick<${normalizedTypeName}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`;
|
|
911
|
+
});
|
|
908
912
|
const resultPicks = types.map((t) => `"${t}"`);
|
|
909
913
|
unionPicks.push(` ${unionName}: ${typePicks2.join(" | ")};`);
|
|
910
914
|
unionResults.push(` ${unionName}: ${resultPicks.join(" | ")} | null;`);
|
|
@@ -916,9 +920,13 @@ var preset = {
|
|
|
916
920
|
interfaceResults.push(` ${interfaceName}: null;`);
|
|
917
921
|
continue;
|
|
918
922
|
}
|
|
919
|
-
const typePicks2 = types.map(
|
|
920
|
-
|
|
921
|
-
|
|
923
|
+
const typePicks2 = types.map((t) => {
|
|
924
|
+
const normalizedTypeName = baseVisitor.convertName(t, {
|
|
925
|
+
useTypesSuffix: true,
|
|
926
|
+
useTypesPrefix: true
|
|
927
|
+
});
|
|
928
|
+
return `Pick<${normalizedTypeName}, DefinedFieldsWithoutExtensions["${t}"] | "__typename">`;
|
|
929
|
+
});
|
|
922
930
|
const resultPicks = types.map((t) => `"${t}"`);
|
|
923
931
|
interfacePicks.push(` ${interfaceName}: ${typePicks2.join(" | ")};`);
|
|
924
932
|
interfaceResults.push(` ${interfaceName}: ${resultPicks.join(" | ")} | null;`);
|
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 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"]}
|
|
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((t) => {\n const normalizedTypeName = baseVisitor.convertName(t, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n return `Pick<${normalizedTypeName}, 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((t) => {\n const normalizedTypeName = baseVisitor.convertName(t, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n return `Pick<${normalizedTypeName}, 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[\"${typeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${typeName}\"]`;\n }\n\n if (external.interfaces.includes(typeName)) {\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${typeName}\"]>`;\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[\"${typeName}\"]`;\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[\"${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 const node = schema?.getType(typeName)?.astNode;\n\n if (node?.kind === Kind.INTERFACE_TYPE_DEFINITION) {\n return `${importNamespace}.DefinedInterfacesWithoutExtensions[\"${typeName}\"]`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${typeName}\"]>`;\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"]}
|