@baeta/plugin-graphql 0.0.25 → 0.0.27
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 +22 -0
- package/dist/index.cjs +15 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/package.json +20 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @baeta/plugin-graphql
|
|
2
2
|
|
|
3
|
+
## 0.0.27
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#121](https://github.com/andreisergiu98/baeta/pull/121) [`ceae50d`](https://github.com/andreisergiu98/baeta/commit/ceae50d88e4e59b22c603637620f4fc6b28b2454) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Update Node to v20
|
|
8
|
+
|
|
9
|
+
- [`5ab9740`](https://github.com/andreisergiu98/baeta/commit/5ab97405bbdeac3d9baa59cfe9502cdbff101163) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - fix type definition of union
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`ceae50d`](https://github.com/andreisergiu98/baeta/commit/ceae50d88e4e59b22c603637620f4fc6b28b2454), [`d94ee47`](https://github.com/andreisergiu98/baeta/commit/d94ee47bc485c541ff011290c4ac6ef0c145c83f)]:
|
|
12
|
+
- @baeta/generator-sdk@0.0.12
|
|
13
|
+
- @baeta/util-path@0.0.4
|
|
14
|
+
|
|
15
|
+
## 0.0.26
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#119](https://github.com/andreisergiu98/baeta/pull/119) [`643a2eb`](https://github.com/andreisergiu98/baeta/commit/643a2eb17c2789cd25361ddeede149a0e459e68a) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [[`18db339`](https://github.com/andreisergiu98/baeta/commit/18db339719aa309c619372d2161c5fdbc08fa316), [`643a2eb`](https://github.com/andreisergiu98/baeta/commit/643a2eb17c2789cd25361ddeede149a0e459e68a)]:
|
|
22
|
+
- @baeta/generator-sdk@0.0.11
|
|
23
|
+
- @baeta/util-path@0.0.3
|
|
24
|
+
|
|
3
25
|
## 0.0.25
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -595,6 +595,9 @@ ${body}
|
|
|
595
595
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
596
596
|
return `DefinedEnumValues['${typeName}']`;
|
|
597
597
|
}
|
|
598
|
+
if (defined.unions.includes(typeName) && picks.unions[typeName]) {
|
|
599
|
+
return `${picks.unions[typeName].join(" | ")};`;
|
|
600
|
+
}
|
|
598
601
|
if (defined.objects.includes(typeName) && picks.objects[typeName]) {
|
|
599
602
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
600
603
|
}
|
|
@@ -634,6 +637,17 @@ ${body}
|
|
|
634
637
|
}
|
|
635
638
|
}
|
|
636
639
|
}
|
|
640
|
+
function collectUnionTypes(node) {
|
|
641
|
+
const name2 = node.name.value;
|
|
642
|
+
if (node.types) {
|
|
643
|
+
if (!picks.unions[name2]) {
|
|
644
|
+
picks.unions[name2] = [];
|
|
645
|
+
}
|
|
646
|
+
for (const type of node.types) {
|
|
647
|
+
picks.unions[name2].push(type.name.value);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
637
651
|
function collectTypeDefinition(node) {
|
|
638
652
|
const name2 = node.name.value;
|
|
639
653
|
switch (node.kind) {
|
|
@@ -662,6 +676,7 @@ ${body}
|
|
|
662
676
|
break;
|
|
663
677
|
}
|
|
664
678
|
case _graphql.Kind.UNION_TYPE_DEFINITION: {
|
|
679
|
+
collectUnionTypes(node);
|
|
665
680
|
defined.unions.push(name2);
|
|
666
681
|
break;
|
|
667
682
|
}
|
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","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 } 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 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 { DocumentNode, ObjectTypeDefinitionNode, concatAST, isScalarType } 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\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 for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n }\n\n return `\\nexport type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\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 visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${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 `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function 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 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 '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","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 } 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 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 { DocumentNode, ObjectTypeDefinitionNode, concatAST, isScalarType } 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\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 for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n }\n\n return `\\nexport type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\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 printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${picks.unions[typeName].join(' | ')};`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n collectUnionTypes(node);\n defined.unions.push(name);\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
|
@@ -131,7 +131,7 @@ import { DEFAULT_SCALARS, wrapTypeWithModifiers } from "@graphql-codegen/visitor
|
|
|
131
131
|
import {
|
|
132
132
|
Kind
|
|
133
133
|
} from "graphql";
|
|
134
|
-
import { platform } from "os";
|
|
134
|
+
import { platform } from "node:os";
|
|
135
135
|
import parse from "parse-filepath";
|
|
136
136
|
var sep = "/";
|
|
137
137
|
function collectUsedTypes(doc) {
|
|
@@ -595,6 +595,9 @@ ${body}
|
|
|
595
595
|
if (defined.enums.includes(typeName) && picks.enums[typeName]) {
|
|
596
596
|
return `DefinedEnumValues['${typeName}']`;
|
|
597
597
|
}
|
|
598
|
+
if (defined.unions.includes(typeName) && picks.unions[typeName]) {
|
|
599
|
+
return `${picks.unions[typeName].join(" | ")};`;
|
|
600
|
+
}
|
|
598
601
|
if (defined.objects.includes(typeName) && picks.objects[typeName]) {
|
|
599
602
|
return `Pick<${coreType}, DefinedFields['${typeName}']>`;
|
|
600
603
|
}
|
|
@@ -634,6 +637,17 @@ ${body}
|
|
|
634
637
|
}
|
|
635
638
|
}
|
|
636
639
|
}
|
|
640
|
+
function collectUnionTypes(node) {
|
|
641
|
+
const name2 = node.name.value;
|
|
642
|
+
if (node.types) {
|
|
643
|
+
if (!picks.unions[name2]) {
|
|
644
|
+
picks.unions[name2] = [];
|
|
645
|
+
}
|
|
646
|
+
for (const type of node.types) {
|
|
647
|
+
picks.unions[name2].push(type.name.value);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
637
651
|
function collectTypeDefinition(node) {
|
|
638
652
|
const name2 = node.name.value;
|
|
639
653
|
switch (node.kind) {
|
|
@@ -662,6 +676,7 @@ ${body}
|
|
|
662
676
|
break;
|
|
663
677
|
}
|
|
664
678
|
case Kind2.UNION_TYPE_DEFINITION: {
|
|
679
|
+
collectUnionTypes(node);
|
|
665
680
|
defined.unions.push(name2);
|
|
666
681
|
break;
|
|
667
682
|
}
|
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 } 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 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 { DocumentNode, ObjectTypeDefinitionNode, concatAST, isScalarType } 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\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 for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n }\n\n return `\\nexport type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\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 visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${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 `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function 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 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 '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","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 } 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 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 { DocumentNode, ObjectTypeDefinitionNode, concatAST, isScalarType } 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\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 for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n }\n\n return `\\nexport type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\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 printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${picks.unions[typeName].join(' | ')};`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n collectUnionTypes(node);\n defined.unions.push(name);\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","result"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baeta/plugin-graphql",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"baeta",
|
|
6
6
|
"graphql",
|
|
@@ -45,22 +45,22 @@
|
|
|
45
45
|
"types": "tsc --noEmit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@baeta/generator-sdk": "^0.0.
|
|
49
|
-
"@baeta/util-path": "^0.0.
|
|
50
|
-
"@graphql-codegen/core": "^4.0.
|
|
51
|
-
"@graphql-codegen/plugin-helpers": "^5.0.
|
|
52
|
-
"@graphql-codegen/typescript": "^4.0.
|
|
53
|
-
"@graphql-codegen/visitor-plugin-common": "
|
|
54
|
-
"@graphql-tools/apollo-engine-loader": "^8.0.
|
|
55
|
-
"@graphql-tools/code-file-loader": "^8.1.
|
|
56
|
-
"@graphql-tools/git-loader": "^8.0.
|
|
57
|
-
"@graphql-tools/github-loader": "^8.0.
|
|
58
|
-
"@graphql-tools/graphql-file-loader": "^8.0.
|
|
59
|
-
"@graphql-tools/json-file-loader": "^8.0.
|
|
60
|
-
"@graphql-tools/load": "^8.0.
|
|
61
|
-
"@graphql-tools/prisma-loader": "^8.0.
|
|
62
|
-
"@graphql-tools/url-loader": "^8.0.
|
|
63
|
-
"@graphql-tools/utils": "^10.
|
|
48
|
+
"@baeta/generator-sdk": "^0.0.12",
|
|
49
|
+
"@baeta/util-path": "^0.0.4",
|
|
50
|
+
"@graphql-codegen/core": "^4.0.2",
|
|
51
|
+
"@graphql-codegen/plugin-helpers": "^5.0.3",
|
|
52
|
+
"@graphql-codegen/typescript": "^4.0.6",
|
|
53
|
+
"@graphql-codegen/visitor-plugin-common": "5.1.0",
|
|
54
|
+
"@graphql-tools/apollo-engine-loader": "^8.0.1",
|
|
55
|
+
"@graphql-tools/code-file-loader": "^8.1.1",
|
|
56
|
+
"@graphql-tools/git-loader": "^8.0.5",
|
|
57
|
+
"@graphql-tools/github-loader": "^8.0.1",
|
|
58
|
+
"@graphql-tools/graphql-file-loader": "^8.0.1",
|
|
59
|
+
"@graphql-tools/json-file-loader": "^8.0.1",
|
|
60
|
+
"@graphql-tools/load": "^8.0.2",
|
|
61
|
+
"@graphql-tools/prisma-loader": "^8.0.3",
|
|
62
|
+
"@graphql-tools/url-loader": "^8.0.2",
|
|
63
|
+
"@graphql-tools/utils": "^10.1.3",
|
|
64
64
|
"auto-bind": "^5.0.1",
|
|
65
65
|
"change-case-all": "2.1.0",
|
|
66
66
|
"parse-filepath": "^1.0.2"
|
|
@@ -68,16 +68,16 @@
|
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@baeta/builder": "^0.0.0",
|
|
70
70
|
"@baeta/tsconfig": "^0.0.0",
|
|
71
|
-
"@types/node": "^
|
|
71
|
+
"@types/node": "^20.12.7",
|
|
72
72
|
"@types/parse-filepath": "1.0.2",
|
|
73
73
|
"graphql": "^16.8.1",
|
|
74
|
-
"typescript": "^5.
|
|
74
|
+
"typescript": "^5.4.5"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"graphql": "^16.6.0"
|
|
78
78
|
},
|
|
79
79
|
"engines": {
|
|
80
|
-
"node": ">=
|
|
80
|
+
"node": ">=20.0.0"
|
|
81
81
|
},
|
|
82
82
|
"publishConfig": {
|
|
83
83
|
"access": "public"
|