@baeta/plugin-graphql 0.0.27 → 0.0.29

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @baeta/plugin-graphql
2
2
 
3
+ ## 0.0.29
4
+
5
+ ### Patch Changes
6
+
7
+ - [#128](https://github.com/andreisergiu98/baeta/pull/128) [`534917a`](https://github.com/andreisergiu98/baeta/commit/534917a18e7ed5d788a90a0335a5370d6af8f4a4) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
8
+
9
+ - Updated dependencies [[`534917a`](https://github.com/andreisergiu98/baeta/commit/534917a18e7ed5d788a90a0335a5370d6af8f4a4)]:
10
+ - @baeta/generator-sdk@0.0.13
11
+ - @baeta/util-path@0.0.5
12
+
13
+ ## 0.0.28
14
+
15
+ ### Patch Changes
16
+
17
+ - [`74a06d6`](https://github.com/andreisergiu98/baeta/commit/74a06d65345e1ae3bd454e9015ff70f7178b5ff2) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - feat: add validation errors when parsing schema
18
+ feat: improve union type generation
19
+
3
20
  ## 0.0.27
4
21
 
5
22
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -38,10 +38,11 @@ var _jsonfileloader = require('@graphql-tools/json-file-loader');
38
38
  var _load = require('@graphql-tools/load');
39
39
  var _prismaloader = require('@graphql-tools/prisma-loader');
40
40
  var _urlloader = require('@graphql-tools/url-loader');
41
+ var _graphql = require('graphql');
41
42
 
42
43
  // utils/hash.ts
43
44
 
44
- var _graphql = require('graphql');
45
+
45
46
  var _crypto = require('crypto');
46
47
  function hashContent(content) {
47
48
  return _crypto.createHash.call(void 0, "sha256").update(content).digest("hex");
@@ -66,6 +67,14 @@ async function loadSchema(schemaPointerMap, cwd) {
66
67
  cwd,
67
68
  includeSources: true
68
69
  });
70
+ const errors = _graphql.validateSchema.call(void 0, outputSchemaAst);
71
+ if (errors.length > 0) {
72
+ const messages = errors.map((e) => e.toString()).join("\n\n--------------------\n\n");
73
+ const subject = errors.length === 1 ? "error" : "errors";
74
+ throw new Error(`Invalid schema. Found ${errors.length} ${subject}:
75
+
76
+ ${messages}`);
77
+ }
69
78
  if (!outputSchemaAst.extensions) {
70
79
  outputSchemaAst.extensions = {};
71
80
  }
@@ -117,6 +126,9 @@ var _utilpath = require('@baeta/util-path');
117
126
 
118
127
 
119
128
 
129
+
130
+
131
+
120
132
  // lib/modules/builder.ts
121
133
  var _changecaseall = require('change-case-all');
122
134
 
@@ -592,11 +604,14 @@ ${body}
592
604
  }
593
605
  return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
594
606
  }
607
+ if (external.unions.includes(typeName)) {
608
+ return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
609
+ }
595
610
  if (defined.enums.includes(typeName) && picks.enums[typeName]) {
596
611
  return `DefinedEnumValues['${typeName}']`;
597
612
  }
598
613
  if (defined.unions.includes(typeName) && picks.unions[typeName]) {
599
- return `${picks.unions[typeName].join(" | ")};`;
614
+ return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
600
615
  }
601
616
  if (defined.objects.includes(typeName) && picks.objects[typeName]) {
602
617
  return `Pick<${coreType}, DefinedFields['${typeName}']>`;
@@ -676,8 +691,8 @@ ${body}
676
691
  break;
677
692
  }
678
693
  case _graphql.Kind.UNION_TYPE_DEFINITION: {
679
- collectUnionTypes(node);
680
694
  defined.unions.push(name2);
695
+ collectUnionTypes(node);
681
696
  break;
682
697
  }
683
698
  }
@@ -789,6 +804,8 @@ var preset = {
789
804
  "modules-exported-picks": {
790
805
  plugin: (schema) => {
791
806
  const typePicks = [];
807
+ const unionPicks = [];
808
+ const unionTypesMap = {};
792
809
  for (const moduleName of modules) {
793
810
  const sources2 = sourcesByModuleMap[moduleName];
794
811
  const documents = sources2.map((source) => source.document);
@@ -796,6 +813,13 @@ var preset = {
796
813
  const types = moduleDocument.definitions.filter(
797
814
  (def) => def.kind === "ObjectTypeDefinition"
798
815
  );
816
+ const unionsDefinition2 = moduleDocument.definitions.filter(
817
+ (def) => def.kind === "UnionTypeDefinition"
818
+ );
819
+ const unionsExtensions = moduleDocument.definitions.filter(
820
+ (def) => def.kind === "UnionTypeExtension"
821
+ );
822
+ const unions = [...unionsDefinition2, ...unionsExtensions];
799
823
  for (const type of types) {
800
824
  const name = type.name.value;
801
825
  if (name === "Query" || name === "Mutation" || name === "Subscription") {
@@ -808,11 +832,33 @@ var preset = {
808
832
  const fieldNames = fields.map((f) => `"${f.name.value}"`).join(" | ");
809
833
  typePicks.push(` ${name}: ${fieldNames};`);
810
834
  }
835
+ for (const union of unions) {
836
+ const types2 = _nullishCoalesce(_optionalChain([union, 'access', _26 => _26.types, 'optionalAccess', _27 => _27.map, 'call', _28 => _28((t) => t.name.value)]), () => ( []));
837
+ const mappedTypes = types2.map((t) => `DefinedFieldsWithoutExtensions["${t}"]`);
838
+ if (unionTypesMap[union.name.value] == null) {
839
+ unionTypesMap[union.name.value] = [];
840
+ }
841
+ _optionalChain([unionTypesMap, 'access', _29 => _29[union.name.value], 'optionalAccess', _30 => _30.push, 'call', _31 => _31(...mappedTypes)]);
842
+ }
811
843
  }
812
- return `
813
- export type DefinedFieldsWithoutExtensions = {
844
+ for (const unionName in unionTypesMap) {
845
+ const types = unionTypesMap[unionName];
846
+ if (types == null || types.length === 0) {
847
+ unionPicks.push(` ${unionName}: never;`);
848
+ continue;
849
+ }
850
+ unionPicks.push(` ${unionName}: ${types.join(" | ")};`);
851
+ }
852
+ const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {
814
853
  ${typePicks.join("\n")}
815
854
  };`;
855
+ const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {
856
+ ${unionPicks.join("\n")}
857
+ };`;
858
+ return `
859
+ ${fieldsDefinition}
860
+
861
+ ${unionsDefinition}`;
816
862
  }
817
863
  }
818
864
  },
@@ -859,9 +905,9 @@ ${typePicks.join("\n")}
859
905
  fieldArguments,
860
906
  extensionsPath,
861
907
  rootTypes: [
862
- _optionalChain([schema, 'access', _26 => _26.getQueryType, 'call', _27 => _27(), 'optionalAccess', _28 => _28.name]) || "",
863
- _optionalChain([schema, 'access', _29 => _29.getMutationType, 'call', _30 => _30(), 'optionalAccess', _31 => _31.name]) || "",
864
- _optionalChain([schema, 'access', _32 => _32.getSubscriptionType, 'call', _33 => _33(), 'optionalAccess', _34 => _34.name]) || ""
908
+ _optionalChain([schema, 'access', _32 => _32.getQueryType, 'call', _33 => _33(), 'optionalAccess', _34 => _34.name]) || "",
909
+ _optionalChain([schema, 'access', _35 => _35.getMutationType, 'call', _36 => _36(), 'optionalAccess', _37 => _37.name]) || "",
910
+ _optionalChain([schema, 'access', _38 => _38.getSubscriptionType, 'call', _39 => _39(), 'optionalAccess', _40 => _40.name]) || ""
865
911
  ].filter(Boolean)
866
912
  })
867
913
  }
@@ -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 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"]}
1
+ {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"names":["getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","sources","unionsDefinition","types","result"],"mappings":"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","sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n const mappedTypes = types.map((t) => `DefinedFieldsWithoutExtensions[\"${t}\"]`);\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...mappedTypes);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n continue;\n }\n\n unionPicks.push(` ${unionName}: ${types.join(' | ')};`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n\n return `\\n${fieldsDefinition}\\n\\n${unionsDefinition}`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"]}
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ import { JsonFileLoader } from "@graphql-tools/json-file-loader";
38
38
  import { loadSchema as loadSchemaToolkit } from "@graphql-tools/load";
39
39
  import { PrismaLoader } from "@graphql-tools/prisma-loader";
40
40
  import { UrlLoader } from "@graphql-tools/url-loader";
41
+ import { validateSchema } from "graphql";
41
42
 
42
43
  // utils/hash.ts
43
44
  import { getCachedDocumentNodeFromSchema } from "@graphql-codegen/plugin-helpers";
@@ -66,6 +67,14 @@ async function loadSchema(schemaPointerMap, cwd) {
66
67
  cwd,
67
68
  includeSources: true
68
69
  });
70
+ const errors = validateSchema(outputSchemaAst);
71
+ if (errors.length > 0) {
72
+ const messages = errors.map((e) => e.toString()).join("\n\n--------------------\n\n");
73
+ const subject = errors.length === 1 ? "error" : "errors";
74
+ throw new Error(`Invalid schema. Found ${errors.length} ${subject}:
75
+
76
+ ${messages}`);
77
+ }
69
78
  if (!outputSchemaAst.extensions) {
70
79
  outputSchemaAst.extensions = {};
71
80
  }
@@ -115,7 +124,10 @@ var context_default = { plugin };
115
124
  // lib/modules/index.ts
116
125
  import { join, relative, resolve } from "@baeta/util-path";
117
126
  import { BaseVisitor, getConfigValue } from "@graphql-codegen/visitor-plugin-common";
118
- import { concatAST, isScalarType as isScalarType2 } from "graphql";
127
+ import {
128
+ concatAST,
129
+ isScalarType as isScalarType2
130
+ } from "graphql";
119
131
 
120
132
  // lib/modules/builder.ts
121
133
  import { pascalCase } from "change-case-all";
@@ -592,11 +604,14 @@ ${body}
592
604
  }
593
605
  return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions["${normalizedTypeName}"]>`;
594
606
  }
607
+ if (external.unions.includes(typeName)) {
608
+ return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
609
+ }
595
610
  if (defined.enums.includes(typeName) && picks.enums[typeName]) {
596
611
  return `DefinedEnumValues['${typeName}']`;
597
612
  }
598
613
  if (defined.unions.includes(typeName) && picks.unions[typeName]) {
599
- return `${picks.unions[typeName].join(" | ")};`;
614
+ return `${importNamespace}.DefinedUnionsWithoutExtensions["${normalizedTypeName}"]`;
600
615
  }
601
616
  if (defined.objects.includes(typeName) && picks.objects[typeName]) {
602
617
  return `Pick<${coreType}, DefinedFields['${typeName}']>`;
@@ -676,8 +691,8 @@ ${body}
676
691
  break;
677
692
  }
678
693
  case Kind2.UNION_TYPE_DEFINITION: {
679
- collectUnionTypes(node);
680
694
  defined.unions.push(name2);
695
+ collectUnionTypes(node);
681
696
  break;
682
697
  }
683
698
  }
@@ -789,6 +804,8 @@ var preset = {
789
804
  "modules-exported-picks": {
790
805
  plugin: (schema) => {
791
806
  const typePicks = [];
807
+ const unionPicks = [];
808
+ const unionTypesMap = {};
792
809
  for (const moduleName of modules) {
793
810
  const sources2 = sourcesByModuleMap[moduleName];
794
811
  const documents = sources2.map((source) => source.document);
@@ -796,6 +813,13 @@ var preset = {
796
813
  const types = moduleDocument.definitions.filter(
797
814
  (def) => def.kind === "ObjectTypeDefinition"
798
815
  );
816
+ const unionsDefinition2 = moduleDocument.definitions.filter(
817
+ (def) => def.kind === "UnionTypeDefinition"
818
+ );
819
+ const unionsExtensions = moduleDocument.definitions.filter(
820
+ (def) => def.kind === "UnionTypeExtension"
821
+ );
822
+ const unions = [...unionsDefinition2, ...unionsExtensions];
799
823
  for (const type of types) {
800
824
  const name = type.name.value;
801
825
  if (name === "Query" || name === "Mutation" || name === "Subscription") {
@@ -808,11 +832,33 @@ var preset = {
808
832
  const fieldNames = fields.map((f) => `"${f.name.value}"`).join(" | ");
809
833
  typePicks.push(` ${name}: ${fieldNames};`);
810
834
  }
835
+ for (const union of unions) {
836
+ const types2 = union.types?.map((t) => t.name.value) ?? [];
837
+ const mappedTypes = types2.map((t) => `DefinedFieldsWithoutExtensions["${t}"]`);
838
+ if (unionTypesMap[union.name.value] == null) {
839
+ unionTypesMap[union.name.value] = [];
840
+ }
841
+ unionTypesMap[union.name.value]?.push(...mappedTypes);
842
+ }
811
843
  }
812
- return `
813
- export type DefinedFieldsWithoutExtensions = {
844
+ for (const unionName in unionTypesMap) {
845
+ const types = unionTypesMap[unionName];
846
+ if (types == null || types.length === 0) {
847
+ unionPicks.push(` ${unionName}: never;`);
848
+ continue;
849
+ }
850
+ unionPicks.push(` ${unionName}: ${types.join(" | ")};`);
851
+ }
852
+ const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {
814
853
  ${typePicks.join("\n")}
815
854
  };`;
855
+ const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {
856
+ ${unionPicks.join("\n")}
857
+ };`;
858
+ return `
859
+ ${fieldsDefinition}
860
+
861
+ ${unionsDefinition}`;
816
862
  }
817
863
  }
818
864
  },
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 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"]}
1
+ {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions, validateSchema } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n const errors = validateSchema(outputSchemaAst);\n\n if (errors.length > 0) {\n const messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n const subject = errors.length === 1 ? 'error' : 'errors';\n throw new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n }\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { join, relative, resolve } from '@baeta/util-path';\nimport { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DocumentNode,\n ObjectTypeDefinitionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n concatAST,\n isScalarType,\n} from 'graphql';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n {\n 'modules-exported-picks': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n 'modules-exported-picks': {\n plugin: (schema) => {\n const typePicks: string[] = [];\n const unionPicks: string[] = [];\n\n const unionTypesMap: Record<string, string[] | undefined> = {};\n\n for (const moduleName of modules) {\n const sources = sourcesByModuleMap[moduleName];\n const documents = sources.map((source) => source.document) as DocumentNode[];\n const moduleDocument = concatAST(documents);\n\n const types = moduleDocument.definitions.filter(\n (def) => def.kind === 'ObjectTypeDefinition',\n ) as ObjectTypeDefinitionNode[];\n\n const unionsDefinition = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeDefinition',\n ) as UnionTypeDefinitionNode[];\n\n const unionsExtensions = moduleDocument.definitions.filter(\n (def) => def.kind === 'UnionTypeExtension',\n ) as UnionTypeExtensionNode[];\n\n const unions = [...unionsDefinition, ...unionsExtensions];\n\n for (const type of types) {\n const name = type.name.value;\n\n if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {\n continue;\n }\n\n const fields = type.fields ?? [];\n\n if (fields.length === 0) {\n continue;\n }\n\n const fieldNames = fields.map((f) => `\"${f.name.value}\"`).join(' | ');\n\n typePicks.push(` ${name}: ${fieldNames};`);\n }\n\n for (const union of unions) {\n const types = union.types?.map((t) => t.name.value) ?? [];\n const mappedTypes = types.map((t) => `DefinedFieldsWithoutExtensions[\"${t}\"]`);\n\n if (unionTypesMap[union.name.value] == null) {\n unionTypesMap[union.name.value] = [];\n }\n\n unionTypesMap[union.name.value]?.push(...mappedTypes);\n }\n }\n\n for (const unionName in unionTypesMap) {\n const types = unionTypesMap[unionName];\n\n if (types == null || types.length === 0) {\n unionPicks.push(` ${unionName}: never;`);\n continue;\n }\n\n unionPicks.push(` ${unionName}: ${types.join(' | ')};`);\n }\n\n const fieldsDefinition = `export type DefinedFieldsWithoutExtensions = {\\n${typePicks.join('\\n')}\\n};`;\n const unionsDefinition = `export type DefinedUnionsWithoutExtensions = {\\n${unionPicks.join('\\n')}\\n};`;\n\n return `\\n${fieldsDefinition}\\n\\n${unionsDefinition}`;\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n UnionTypeDefinitionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const normalizedTypeName = baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n });\n\n const coreType = `${importNamespace}.${normalizedTypeName}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n if (external.unions.includes(typeName)) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.unions.includes(typeName) && picks.unions[typeName]) {\n return `${importNamespace}.DefinedUnionsWithoutExtensions[\"${normalizedTypeName}\"]`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n if (isScalarType(schema?.getType(typeName))) {\n return coreType;\n }\n\n return `Pick<${coreType}, ${importNamespace}.DefinedFieldsWithoutExtensions[\"${normalizedTypeName}\"]>`;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectUnionTypes(node: UnionTypeDefinitionNode) {\n const name = node.name.value;\n\n if (node.types) {\n if (!picks.unions[name]) {\n picks.unions[name] = [];\n }\n\n for (const type of node.types) {\n picks.unions[name].push(type.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n collectUnionTypes(node);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport { platform } from 'node:os';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n if (platform() === 'win32') {\n return path;\n }\n\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"],"mappings":";;;;;;;AAAA,SAAS,gBAAgB,eAA4B;;;ACCrD,SAAS,WAAW,kBAAkB;AACtC,SAAS,iBAAiB,gCAAgC;AAC1D,YAAY,sBAAsB;;;ACH3B,SAAS,cAIA;AACd,QAAM,QAAQ,oBAAI,IAA8B;AAEhD,SAAO,SAAS,OAAU,WAAmB,KAAa,SAAuC;AAC/F,UAAM,WAAW,GAAG,SAAS,IAAI,GAAG;AAEpC,UAAM,cAAc,MAAM,IAAI,QAAQ;AAEtC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,UAAU,KAAK;AAEzB,WAAO;AAAA,EACT;AACF;;;ACrBA,SAAS,mCAAAA,wCAAuC;AAChD,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,cAAc,yBAAqD;AAC5E,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAkC,sBAAsB;;;ACVxD,SAAS,uCAAuC;AAChD,SAAwB,aAAa;AACrC,SAAS,kBAAkB;AAEpB,SAAS,YAAY,SAAyB;AACnD,SAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC1D;AAEO,SAAS,WAAW,QAA+B;AACxD,SAAO,YAAY,MAAM,gCAAgC,MAAM,CAAC,CAAC;AACnE;;;ADGA,eAAsB,WAAW,kBAA8C,KAAa;AAC1F,QAAM,kBAAkB,MAAM,kBAAkB,kBAAkB;AAAA,IAChE,SAAS;AAAA,MACP,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,aAAa;AAAA,MACjB,IAAI,kBAAkB;AAAA,MACtB,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,mBAAmB;AAAA,MACvB,IAAI,aAAa;AAAA,IACnB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,SAAS,eAAe,eAAe;AAE7C,MAAI,OAAO,SAAS,GAAG;AACrB,UAAM,WAAW,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,8BAA8B;AACpF,UAAM,UAAU,OAAO,WAAW,IAAI,UAAU;AAChD,UAAM,IAAI,MAAM,yBAAyB,OAAO,MAAM,IAAI,OAAO;AAAA;AAAA,EAAQ,QAAQ,EAAE;AAAA,EACrF;AAEA,MAAI,CAAC,gBAAgB,YAAY;AAC/B,oBAAgB,aAAa,CAAC;AAAA,EAChC;AAEA,EAAC,gBAAgB,WAAuC,MAAM,IAAI,WAAW,eAAe;AAE5F,SAAO;AAAA,IACL;AAAA,IACA,cAAcC,iCAAgC,eAAe;AAAA,EAC/D;AACF;;;AE/CA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS,mBAAmB,mBAAmB;AAOxC,IAAM,SAAiC,OAC5C,QACA,WACA,WACgC;AAChC,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,YAAY,OAAO,eAAe,KAAK;AAEtD,MAAI,OAAO,cAAc,OAAO,QAAQ;AACtC,UAAM,aAAa,OAAO,UAAU,gBAAgB,GAAG,OAAO,MAAM;AAEpE,UAAM,SAAS;AAAA,MACb,OAAO;AAAA,MACP;AAAA,QACE;AAAA,UACE;AAAA,UACA,WAAW,OAAO;AAAA,QACpB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sBAAsB,OAAO,IAAI,EAAE;AAAA,EAClD;AAEA,UAAQ,KAAK,6BAA6B;AAE1C,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ,EAAE,OAAO;;;AC7CxB,SAAS,MAAM,UAAU,eAAe;AAExC,SAAS,aAAa,sBAAsB;AAE5C;AAAA,EAKE;AAAA,EACA,gBAAAC;AAAA,OACK;;;ACVP,SAAS,kBAAkB;AAC3B;AAAA,EASE;AAAA,EACA,QAAAC;AAAA,EAMA;AAAA,OACK;;;ACnBP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,6BAA6B;AAEvD;AAAA,EAQE;AAAA,OAIK;AACP,SAAS,gBAAgB;AACzB,OAAO,WAAW;AAElB,IAAM,MAAM;AAKL,SAAS,iBAAiB,KAA6B;AAC5D,QAAM,OAAiB,CAAC;AAExB,aAAW,cAAc,IAAI,aAAa;AACxC,gBAAY,UAAU;AAAA,EACxB;AAEA,WAAS,WAAW,MAAc;AAChC,eAAW,MAAM,IAAI;AAAA,EACvB;AAEA,WAAS,YACP,MACA;AACA,QAAI,KAAK,SAAS,KAAK,0BAA0B,KAAK,SAAS,KAAK,uBAAuB;AAEzF,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,gCACnB,KAAK,SAAS,KAAK,6BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,6BACnB,KAAK,SAAS,KAAK,0BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,sBACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,OAAO;AACd,mBAAW,QAAQ,KAAK,OAAO;AAC7B,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB,KAAK,SAAS,KAAK,qBAAqB;AAE5F,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B,WACE,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,uBACnB;AAEA,UAAI,CAAC,mBAAmB,KAAK,KAAK,KAAK,GAAG;AACxC,mBAAW,KAAK,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB;AAEpD,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAAA,IACxC,WAAW,KAAK,SAAS,KAAK,kBAAkB;AAE9C,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAEtC,UAAI,KAAK,WAAW;AAClB,mBAAW,YAAY,KAAK,WAAW;AACrC,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK;AAAA,IAEnB,CAAC,mBAAmB,KAAK,KAAK,KAAK,GACnC;AACA,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,iBACA,WACA,YACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AAEvC,QAAM,QAAQ,UAAU,gBAAgB,KAAK,KAAK;AAClD,QAAM,WAAW,YAAY,MAAM,IAAI,EAAE;AACzC,QAAM,kBAAkB,gBAAgB,QAAQ,KAAK;AACrD,QAAM,OAAO,kBAAkB,kBAAkB,QAAQ,iBAAiB;AAE1E,QAAM,OAAO,sBAAsB,MAAM,MAAM,MAAM;AAAA,IACnD,cAAc,CAAC,QAAgB;AAC7B,aAAO,eAAe,GAAG;AAAA,IAC3B;AAAA,IACA,WAAW,CAAC,QAAgB;AAC1B,aAAO,SAAS,GAAG;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAI,WAAW,UAAU,KAAK,MAAM;AAClC,eAAW,UAAU,IAAI,CAAC;AAAA,EAC5B;AACA,aAAW,UAAU,EAAE,SAAS,IAAI;AACtC;AAEA,SAAS,4BACP,MACA,iBACA,gBACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AACvC,QAAM,eAAe,gBAAgB,aAAa,QAAQ,gBAAgB,UAAU,SAAS;AAE7F,MAAI,eAAe,UAAU,KAAK,MAAM;AACtC,mBAAe,UAAU,IAAI,CAAC;AAAA,EAChC;AACA,iBAAe,UAAU,EAAE,SAAS,IAAI;AAC1C;AAEO,SAAS,oCAAoC,QAAwB;AAC1E,QAAM,aAAqD,CAAC;AAC5D,QAAM,iBAA0D,CAAC;AAEjE,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,YAAY,eAAe;AAAA,EACtC;AAEA,QAAM,cAAc,OAAO,WAAW;AAEtC,aAAW,QAAQ,OAAO,OAAO,WAAW,GAAG;AAC7C,QAAI,KAAK,SAAS,SAAS,KAAK,wBAAwB;AACtD;AAAA,IACF;AAEA,UAAM,aAAa,YAAY,KAAK,IAAI;AACxC,UAAM,YAAY,WAAW,UAAU;AAEvC,eAAW,SAAS,KAAK,QAAQ,UAAU,CAAC,GAAG;AAC7C,kCAA4B,KAAK,SAAS,OAAO,cAAc;AAC/D,6BAAuB,KAAK,SAAS,OAAO,WAAW,UAAU;AAAA,IACnE;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,eAAe;AACtC;AAEO,SAAS,gBAAgB,MAA+B;AAC7D,MAAI,KAAK,SAAS,KAAK,WAAW;AAChC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,MAAI,KAAK,SAAS,KAAK,eAAe;AACpC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,MAAuB;AACxD,SAAO,CAAC,UAAU,WAAW,MAAM,SAAS,KAAK,EAAE,SAAS,IAAI;AAClE;AAEO,SAAS,OAAU,KAAQ,GAAW,KAAmB;AAC9D,SAAO,MAAM,IAAI,QAAQ,GAAG;AAC9B;AAEO,SAAS,WAAW,KAAqB;AAC9C,SAAO,IAAI,GAAG;AAChB;AAEO,SAAS,OAAO,MAAc;AACnC,QAAM,QAAQ,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AAE/C,WAAS,YAAY,KAAqB;AACxC,WAAO,IACJ,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,EAC/B,KAAK,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,EAAE,MAAM,MAAM,GAA8C;AACrF,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,GAAG,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/D;AAEA,IAAM,kBAAkB,CAAC,UAAkB,aAAqB;AAC9D,QAAM,qBAAqB,UAAU,QAAQ;AAC7C,QAAM,qBAAqB;AAAA,IACzB,UAAU,wBAAwB,QAAQ,CAAC;AAAA,EAC7C;AACA,QAAM,CAAC,EAAE,YAAY,IAAI,mBAAmB,MAAM,kBAAkB;AACpE,SAAO;AACT;AAEO,SAAS,qBACd,SACA,UAC0B;AAC1B,QAAM,UAAoC,CAAC;AAE3C,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,OAAO,UAAU;AACpB;AAAA,IACF;AAEA,UAAM,eAAe,gBAAgB,OAAO,UAAU,QAAQ;AAE9D,QAAI,cAAc;AAEhB,YAAM,MAAM,uBAAuB,OAAO,UAAU,QAAQ;AAE5D,UAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,gBAAQ,GAAG,IAAI,CAAC;AAAA,MAClB;AAEA,cAAQ,GAAG,EAAE,KAAK,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAkB,UAA0B;AAC1E,QAAM,eAAe,gBAAgB,UAAU,QAAQ;AAEvD,QAAM,CAAC,eAAe,IAAI,aAAa,MAAM,GAAG;AAEhD,SAAO;AACT;AAEO,SAAS,cAAc,MAAc;AAC1C,QAAM,aAAa,MAAM,IAAI;AAC7B,SAAO,UAAU,WAAW,GAAG;AACjC;AAEO,SAAS,UAAU,MAAc;AACtC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAChC;AAEA,SAAS,wBAAwB,MAAc;AAC7C,SAAO,KAAK,SAAS,GAAG,IAAI,OAAO,OAAO;AAC5C;AAEA,SAAS,0BAA0B,MAAc;AAC/C,MAAI,SAAS,MAAM,SAAS;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,WAAW,GAAG,IACtB,KAAK,QAAQ,iBAAiB,GAAG,IACjC,KAAK,WAAW,GAAG,IACjB,OACA,IAAI,IAAI;AAChB;AAKO,SAAS,WAAc,MAAW,MAAe;AACtD,MAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACxB,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEO,SAAS,YACd,MACA,OACA,KACA;AAGA,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD;AAEO,SAAS,YACd,MACA,OACA,KACA;AACA,SAAO,KAAK,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,SAAS,IAAI,CAAC;AAC9D;AAEO,SAAS,aAAkC,MAAW,SAAwB;AACnF,QAAM,MAAoB,CAAC;AAE3B,aAAW,OAAO,MAAM;AACtB,QAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,EACxB;AAEA,SAAO;AACT;;;AD5TA,IAAM,eAA+B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,SAAS,YACd,MACA,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAcQ;AACR,QAAM,QAAwD;AAAA,IAC5D;AAAA,IACA,OAAO,CAAC;AAAA,EACV;AACA,QAAM,UAAoB,aAAa,cAAc,MAAM,CAAC,CAAC;AAC7D,QAAM,WAAqB,aAAa,cAAc,MAAM,CAAC,CAAC;AAG9D,QAAM,YAAY,iBAAiB,GAAG;AAEtC,QAAM,KAAK;AAAA,IACT,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,0BAA0B,MAAM;AAC9B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,yBAAyB,MAAM;AAC7B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,wBAAwB,MAAM;AAC5B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,uBAAuB,MAAM;AAC3B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,mBAAmB,MAAM;AACvB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,mBAAmB,MAAM;AACvB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,kBAAkB,MAAM;AACtB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,CAAC;AAGD,QAAM,UAAoB;AAAA,IAAa;AAAA,IAAc,CAAC,QACpD,YAAY,SAAS,UAAU,GAAG;AAAA,EACpC;AAGA,QAAM,WAAqB;AAAA,IAAa;AAAA,IAAc,CAAC,QACrD,YAAY,UAAU,SAAS,GAAG;AAAA,EACpC;AAWA,QAAM,UAAU;AAAA,IACd,eAAe,eAAe,UAAU,UAAU;AAAA,IAClD;AAAA,IACA;AAAA,EACF;AAEA,MAAI,gBAAgB;AAClB,YAAQ,KAAK,gCAAgC,cAAc,IAAI;AAAA,EACjE;AAEA,UAAQ,KAAK,IAAI;AAEjB,MAAI,UAAU;AAAA,IACZ,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,iBAAiB,SAAS;AAAA,IAC1B,cAAc;AAAA,EAChB,EACG,OAAO,OAAO,EACd,KAAK,MAAM;AAEd,QAAM,kBAAkB,YAAY,YAAY,MAAM;AAAA,IACpD,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,gBAAgB,aAAa;AAC/B,cAAU,GAAG,gBAAgB,YAAY,QAAQ,cAAc,YAAY,YAAY,MAAM;AAAA,MAC3F,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,CAAC;AAAA,EAAO,gBAAgB,GAAG,OAAO,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC;AAAA,IAAO,EAAE,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC;AAAA;AAAA,EACzF;AAEA,SAAO,CAAC,GAAI,gBAAgB,CAAC,IAAI,SAAU,SAAS,mBAAmB,CAAC,EACrE,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,WAAS,gBAAgB;AACvB,WAAO;AAAA,uBACY,IAAI;AAAA,8BACG,IAAI;AAAA,2BACP,KAAK,UAAU,GAAG,CAAC;AAAA,IAC1C,kBAAkB,CAAC;AAAA;AAAA,EAErB;AAKA,WAAS,qBAAqB;AAC5B,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,CAAC,GAAG,QAAQ,SAAS,GAAG,QAAQ,UAAU,EAAE;AAAA,QACjD,CAAC,aACC,GAAG,QAAQ,KAAK,WAAW,UAAU;AAAA,UACnC,GAAG,MAAM;AAAA,UACT,GAAG,MAAM;AAAA,QACX,CAAC,CAAC;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,qBAAqB;AAC5B,UAAMC,QAAO,gBAAgB,MAAM,GAAG,gBAAgB,SAAS,CAAC;AAChE,UAAM,iBAAiB,SAASA,KAAI;AACpC,UAAM,cAAc,MAAMA,KAAI;AAC9B,UAAM,gBAAgB,iBAAiB,sBAAsB;AAE7D,WAAO;AAAA,eACI,cAAc,oDAAoD,aAAa;AAAA,eAC/E,WAAW,kCAAkC,cAAc;AAAA;AAAA,EAExE;AAMA,WAAS,gCAAgC,UAAkB,OAAe;AACxE,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,aAAa,cAAc,UAAU,KAAK;AAChD,UAAM,gBAAgB,YAAY,UAAU,KAAK;AACjD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,kCAAkC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,QAAQ,OAAO,KAAK;AAAA,EACxI;AAEA,WAAS,2BAA2B,UAAkB,SAAmC;AACvF,UAAM,SACJ,QAAQ,QAAQ,GACZ,OAAO,MAAM,EACd,IAAI,CAAC,UAAU,gCAAgC,UAAU,KAAK,CAAC,KAAK,CAAC;AAE1E,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,cAAc,eAAe;AAEnC,UAAM,SAAS,CAAC,+BAA+B,UAAU,KAAK,WAAW,MAAM,QAAQ,KAAK;AAC5F,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AACnE,UAAMC,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,GAAG,QAAQ,KAAKA,QAAO;AAAA,EAChC;AAEA,WAAS,8BAA8B,OAAe;AACpD,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,aAAa,cAAc,gBAAgB,KAAK;AACtD,UAAM,gBAAgB,YAAY,gBAAgB,KAAK;AACvD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,sCAAsC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,KAAK;AAAA,EAC7H;AAEA,WAAS,iCAAiC;AACxC,UAAM,gBAAgB,MAAM,QAAQ,cAAc,OAAO,MAAM,KAAK,CAAC;AAErE,QAAI,cAAc,WAAW,GAAG;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,cAAc,IAAI,CAAC,iBAAiB,8BAA8B,YAAY,CAAC;AAE9F,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,uCAAuC,UAAU,KAAK,WAAW,MAAM;AACvF,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAEnE,UAAMA,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,iBAAiBA,QAAO;AAAA,EACjC;AAEA,WAAS,qBAAqB;AAC5B,UAAM,UAAU,QAAQ;AACxB,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,iCAAiC,MAAM,KAAK;AAC5F,UAAMA,WAAU,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC/C,WAAO;AAAA,EAAcA,QAAO;AAAA;AAAA,EAC9B;AAEA,WAAS,oBAAoB;AAC3B,UAAM,UAAU,QAAQ,QACrB,OAAO,CAAC,SAAS,SAAS,cAAc,EACxC,IAAI,CAAC,aAAa,2BAA2B,UAAU,MAAM,OAAO,CAAC,EACrE,OAAO,OAAO;AAEjB,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,iCAAiC,WAAW,MAAM;AAElE,UAAM,aAAa;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,mBAAmB;AAAA,MACnB,+BAA+B;AAAA,IACjC;AAEA,UAAM,OAAO,WAAW,OAAO,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAChE,UAAMA,WAAU;AAAA,EAAM,IAAI;AAAA;AAE1B,WAAO;AAAA;AAAA,aAEEA,QAAO;AAAA;AAAA,EAElB;AAKA,WAAS,yBAAyB;AAChC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,MAAM,IAAI,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,KAAK,CAAC,GAAG;AAAA,IAC7F,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,UAA0B;AACrD,QAAI,gBAAgB,UAAU;AAC5B,aAAO,GAAG,WAAW,IAAI,CAAC,IAAI,QAAQ;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAKA,WAAS,0BAA0B;AACjC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,OAAO;AAAA,QACpB,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,MAAM,CAAC;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAKA,WAAS,iBAAiB,OAAiB;AACzC,WAAO,MACJ,OAAO,CAAC,SAAS,CAAC,QAAQ,QAAQ,SAAS,IAAI,CAAC,EAChD,IAAI,eAAe,EACnB,KAAK,IAAI;AAAA,EACd;AAEA,WAAS,WAAW,UAAkB,SAA2C;AAC/E,WAAO,QAAQ,QAAQ,EAAE,OAAO,MAAM,EAAE,IAAI,UAAU,EAAE,KAAK,KAAK;AAAA,EACpE;AAEA,WAAS,cAAc,UAA0B;AAC/C,UAAM,qBAAqB,YAAY,YAAY,UAAU;AAAA,MAC3D,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC;AAED,UAAM,WAAW,GAAG,eAAe,IAAI,kBAAkB;AAEzD,QAAI,SAAS,MAAM,SAAS,QAAQ,KAAK,SAAS,QAAQ,SAAS,QAAQ,GAAG;AAC5E,UAAI,UAAU,aAAa,OAAO,QAAQ,QAAQ,CAAC,GAAG;AACpD,eAAO,GAAG,eAAe,aAAa,QAAQ;AAAA,MAChD;AAEA,aAAO,QAAQ,QAAQ,KAAK,eAAe,oCAAoC,kBAAkB;AAAA,IACnG;AAEA,QAAI,SAAS,OAAO,SAAS,QAAQ,GAAG;AACtC,aAAO,GAAG,eAAe,oCAAoC,kBAAkB;AAAA,IACjF;AAEA,QAAI,QAAQ,MAAM,SAAS,QAAQ,KAAK,MAAM,MAAM,QAAQ,GAAG;AAC7D,aAAO,sBAAsB,QAAQ;AAAA,IACvC;AAEA,QAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,MAAM,OAAO,QAAQ,GAAG;AAC/D,aAAO,GAAG,eAAe,oCAAoC,kBAAkB;AAAA,IACjF;AAEA,QAAI,QAAQ,QAAQ,SAAS,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACjE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,WAAW,SAAS,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG;AACvE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,MAAM,OAAO,QAAQ,GAAG;AAC/D,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ;AAAA,IAC1D;AAEA,QAAI,aAAa,QAAQ,QAAQ,QAAQ,CAAC,GAAG;AAC3C,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,QAAQ,KAAK,eAAe,oCAAoC,kBAAkB;AAAA,EACnG;AAEA,WAAS,gBAAgB,UAA0B;AACjD,WAAO,eAAe,oBAAoB,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC;AAAA,EAClF;AAUA,WAAS,cACP,MAOA,UACA;AACA,UAAMD,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,SAASA,KAAI,GAAG;AACnB,iBAASA,KAAI,IAAI,CAAC;AAAA,MACpB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,iBAASA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAAsD;AACnF,UAAMA,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,MAAM,MAAMA,KAAI,GAAG;AACtB,cAAM,MAAMA,KAAI,IAAI,CAAC;AAAA,MACvB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,cAAM,MAAMA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,kBAAkB,MAA+B;AACxD,UAAMA,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,OAAO;AACd,UAAI,CAAC,MAAM,OAAOA,KAAI,GAAG;AACvB,cAAM,OAAOA,KAAI,IAAI,CAAC;AAAA,MACxB;AAEA,iBAAW,QAAQ,KAAK,OAAO;AAC7B,cAAM,OAAOA,KAAI,EAAE,KAAK,KAAK,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAA0B;AACvD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKE,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKF,KAAI;AACzB,sBAAc,MAAM,MAAM,OAAO;AACjC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,sBAAsB;AAC9B,gBAAQ,MAAM,KAAKF,KAAI;AACvB,8BAAsB,IAAI;AAC1B;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,8BAA8B;AACtC,gBAAQ,OAAO,KAAKF,KAAI;AACxB,sBAAc,MAAM,MAAM,MAAM;AAChC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKF,KAAI;AACzB;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,2BAA2B;AACnC,gBAAQ,WAAW,KAAKF,KAAI;AAC5B,sBAAc,MAAM,MAAM,UAAU;AACpC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,uBAAuB;AAC/B,gBAAQ,OAAO,KAAKF,KAAI;AACxB,0BAAkB,IAAI;AACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,qBAAqB,MAAyB;AACrD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKE,MAAK,uBAAuB;AAC/B,sBAAc,MAAM,MAAM,OAAO;AAGjC,YAAI,UAAU,SAASF,KAAI,GAAG;AAC5B,qBAAW,QAAQ,SAASA,KAAI;AAChC;AAAA,QACF;AAEA,mBAAW,SAAS,SAASA,KAAI;AAEjC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,qBAAqB;AAC7B,8BAAsB,IAAI;AAC1B,mBAAW,SAAS,OAAOF,KAAI;AAC/B;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,6BAA6B;AACrC,sBAAc,MAAM,MAAM,MAAM;AAChC,mBAAW,SAAS,QAAQF,KAAI;AAChC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,0BAA0B;AAClC,sBAAc,MAAM,MAAM,UAAU;AACpC,mBAAW,SAAS,YAAYF,KAAI;AACpC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,sBAAsB;AAC9B,mBAAW,SAAS,QAAQF,KAAI;AAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,cAAc,MAAc;AACnC,QAAI,CAAC,SAAS,YAAY,cAAc,EAAE,SAAS,IAAI,GAAG;AACxD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,MAAc,OAAe;AAClD,WAAO,aAAa,IAAI,IAAI,KAAK,KAAK;AAAA,EACxC;AAEA,WAAS,YAAY,MAAc,OAAe;AAChD,UAAM,UAAU,iBAAiB,IAAI,IAAI,KAAK,KAAK;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AACzD,WAAO,SAAS,IAAI,GAAG,UAAU;AAAA,EACnC;AAEA,WAAS,iBAAiB;AACxB,WAAO;AAAA,EACT;AACF;;;ADziBO,IAAM,SAA4C;AAAA,EACvD,uBAAuB,CAAC,YAAY;AAClC,UAAM,EAAE,cAAc,IAAI;AAC1B,UAAM,EAAE,eAAe,gBAAgB,uBAAuB,IAAI,QAAQ;AAE1E,UAAM,uBAAuB,eAAe,SAAS,aAAa,sBAAsB,KAAK;AAE7F,UAAM,MAAM,QAAQ,QAAQ,aAAa,OAAO,QAAQ,IAAI,CAAC;AAC7D,UAAM,uBAAuB,QAAQ,aAAa,wBAAwB;AAE1E,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,WAAW,WAAW,SAAS;AAC1C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAEA,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,UAAW,YAAY,mBAAmB,CAAC;AACjD,UAAM,qBAAqB,qBAAqB,SAAS,aAAa;AACtE,UAAM,UAAU,OAAO,KAAK,kBAAkB;AAE9C,UAAM,cAAc,IAAI,YAAY,QAAQ,QAAQ,CAAC,CAAC;AACtD,UAAM,EAAE,YAAY,eAAe,IAAI,oCAAoC,QAAQ,SAAS;AAG5F,UAAM,aAAoC;AAAA,MACxC,UAAU,QAAQ,KAAK,eAAe,aAAa;AAAA,MACnD,QAAQ,QAAQ;AAAA,MAChB,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX;AAAA,UACE,4BAA4B,CAAC;AAAA,QAC/B;AAAA,QACA;AAAA,UACE,0BAA0B,CAAC;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,GAAG,QAAQ;AAAA,QACX,4BAA4B;AAAA,UAC1B,QAAQ,CAAC,WAAW;AAClB,kBAAM,UAAU,OAAO,WAAW;AAElC,mBAAO,OAAO,KAAK,OAAO,EACvB,IAAI,CAAC,MAAM;AACV,kBAAI,KAAK,QAAQ,CAAC,KAAKG,cAAa,QAAQ,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG;AACzE,sBAAM,gBAAgB,YAAY,YAAY,CAAC;AAC/C,uBAAO,eAAe,aAAa,eAAe,CAAC;AAAA,cACrD;AAEA,qBAAO;AAAA,YACT,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,QACA,0BAA0B;AAAA,UACxB,QAAQ,CAAC,WAAW;AAClB,kBAAM,YAAsB,CAAC;AAC7B,kBAAM,aAAuB,CAAC;AAE9B,kBAAM,gBAAsD,CAAC;AAE7D,uBAAW,cAAc,SAAS;AAChC,oBAAMC,WAAU,mBAAmB,UAAU;AAC7C,oBAAM,YAAYA,SAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ;AACzD,oBAAM,iBAAiB,UAAU,SAAS;AAE1C,oBAAM,QAAQ,eAAe,YAAY;AAAA,gBACvC,CAAC,QAAQ,IAAI,SAAS;AAAA,cACxB;AAEA,oBAAMC,oBAAmB,eAAe,YAAY;AAAA,gBAClD,CAAC,QAAQ,IAAI,SAAS;AAAA,cACxB;AAEA,oBAAM,mBAAmB,eAAe,YAAY;AAAA,gBAClD,CAAC,QAAQ,IAAI,SAAS;AAAA,cACxB;AAEA,oBAAM,SAAS,CAAC,GAAGA,mBAAkB,GAAG,gBAAgB;AAExD,yBAAW,QAAQ,OAAO;AACxB,sBAAM,OAAO,KAAK,KAAK;AAEvB,oBAAI,SAAS,WAAW,SAAS,cAAc,SAAS,gBAAgB;AACtE;AAAA,gBACF;AAEA,sBAAM,SAAS,KAAK,UAAU,CAAC;AAE/B,oBAAI,OAAO,WAAW,GAAG;AACvB;AAAA,gBACF;AAEA,sBAAM,aAAa,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK;AAEpE,0BAAU,KAAK,KAAK,IAAI,KAAK,UAAU,GAAG;AAAA,cAC5C;AAEA,yBAAW,SAAS,QAAQ;AAC1B,sBAAMC,SAAQ,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK,CAAC;AACxD,sBAAM,cAAcA,OAAM,IAAI,CAAC,MAAM,mCAAmC,CAAC,IAAI;AAE7E,oBAAI,cAAc,MAAM,KAAK,KAAK,KAAK,MAAM;AAC3C,gCAAc,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,gBACrC;AAEA,8BAAc,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,WAAW;AAAA,cACtD;AAAA,YACF;AAEA,uBAAW,aAAa,eAAe;AACrC,oBAAM,QAAQ,cAAc,SAAS;AAErC,kBAAI,SAAS,QAAQ,MAAM,WAAW,GAAG;AACvC,2BAAW,KAAK,KAAK,SAAS,UAAU;AACxC;AAAA,cACF;AAEA,yBAAW,KAAK,KAAK,SAAS,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG;AAAA,YACzD;AAEA,kBAAM,mBAAmB;AAAA,EAAmD,UAAU,KAAK,IAAI,CAAC;AAAA;AAChG,kBAAM,mBAAmB;AAAA,EAAmD,WAAW,KAAK,IAAI,CAAC;AAAA;AAEjG,mBAAO;AAAA,EAAK,gBAAgB;AAAA;AAAA,EAAO,gBAAgB;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,QAAQ;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,oBAAoB,cAAc,QAAQ,mBAAmB,EAAE;AACrE,UAAM,eAAe,cAAc,WAAW,QAAQ;AAGtD,UAAM,UAAmC,QAAQ,IAAI,CAAC,eAAe;AACnE,YAAM,WAAW,QAAQ,KAAK,eAAe,YAAY,QAAQ,aAAa,QAAQ;AACtF,YAAM,UAAU,cAAc,QAAQ;AACtC,YAAM,eAAe,SAAS,SAAS,YAAY;AACnD,YAAM,aACJ,QAAQ,aAAa,uBACrB,UAAU,KAAK,cAAc,iBAAiB,CAAC;AACjD,YAAMF,WAAU,mBAAmB,UAAU;AAE7C,YAAM,YAAYA,SAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ;AAEzD,YAAM,iBAAiB,UAAU,SAAS;AAE1C,YAAM,gBAAgB,SAAS,SAAS,OAAO;AAE/C,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,CAAC;AAAA,QACZ,SAAS;AAAA,UACP,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC,EAAE,GAAG;AAAA,UACjE;AAAA,YACE,0BAA0B,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,GAAG,QAAQ;AAAA,UACX,0BAA0B;AAAA,YACxB,QAAQ,CAAC,WACP,YAAY,YAAY,gBAAgB;AAAA,cACtC,iBAAiB;AAAA,cACjB;AAAA,cACA,aAAa,0BAA0B;AAAA,cACvC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,mBAAmB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,gBACT,OAAO,aAAa,GAAG,QAAQ;AAAA,gBAC/B,OAAO,gBAAgB,GAAG,QAAQ;AAAA,gBAClC,OAAO,oBAAoB,GAAG,QAAQ;AAAA,cACxC,EAAE,OAAO,OAAO;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,CAAC,UAAU,EAAE,OAAO,OAAO;AAAA,EACpC;AACF;;;ALtNA,eAAsB,SAAS,SAAqC;AAClE,QAAM,aAAa;AAAA,IACjB,SAAS,yBAAyB,QAAQ,OAAO;AAAA,IACjD,YAAY,QAAQ;AAAA,IACpB,eAAe,QAAQ;AAAA,IACvB,aAAa,QAAQ;AAAA,IACrB,sBAAsB,QAAQ;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB,SAAS,gBAAgB,CAAC,cAAc,SAAS,CAAC;AAAA,IAClD,WAAW;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,YAAY;AAE1B,QAAM,mBAA+C,CAAC;AACtD,aAAW,OAAO,WAAW,SAAS;AACpC,QAAI,OAAO,QAAQ,UAAU;AAC3B,uBAAiB,GAAG,IAAI,CAAC;AAAA,IAC3B,WAAW,OAAO,QAAQ,UAAU;AAClC,aAAO,OAAO,kBAAkB,GAAG;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,OAAO,KAAK,UAAU,gBAAgB;AAC5C,QAAM,SAAS,MAAM,MAAM,UAAU,MAAM,YAAY;AACrD,WAAO,WAAW,kBAAkB,QAAQ,GAAG;AAAA,EACjD,CAAC;AAED,QAAM,UAAU,MAAc,OAAO,sBAAsB;AAAA,IACzD,eAAe,QAAQ;AAAA,IACvB,cAAc;AAAA,MACZ,eAAe,WAAW;AAAA,MAC1B,UAAU,WAAW;AAAA,MACrB,wBAAwB;AAAA,MACxB,gBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,WAAW,OAAO;AAAA,IAClB,WAAW,CAAC;AAAA,IACZ,WAAW,WAAW;AAAA,IACtB,SAAS,WAAW;AAAA,IACpB,QAAQ;AAAA,MACN,iBAAiB;AAAA,MACjB,aAAa,WAAW;AAAA,MACxB,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACP,GAAG,WAAW;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,WAAW,QAAQ,IAAI,OAAO,WAAW;AAC7C,UAAMG,UAAS,MAAM,WAAW;AAAA,MAC9B,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,UAAU,OAAO;AAAA,MACjB,SAASA;AAAA,IACX;AAAA,EACF,CAAC;AAED,SAAO,QAAQ,IAAI,QAAQ;AAC7B;;;AD1EO,SAAS,gBAAgB;AAC9B,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO,CAAC,SAAS,SAAS,WAAW;AACnC,YAAM,eAAe,CAAC,SAAsB;AAC1C,YAAI,QAAQ,KAAK,cAAc,QAAQ,OAAO,GAAG;AAC/C,iBAAO,IAAI;AAAA,QACb;AAAA,MACF;AAEA,cAAQ,GAAG,UAAU,YAAY;AACjC,cAAQ,GAAG,UAAU,YAAY;AAAA,IACnC;AAAA,IACA,UAAU,OAAO,KAAK,SAAS;AAC7B,YAAM,QAAQ,MAAM,SAAS,IAAI,gBAAgB;AAEjD,iBAAW,QAAQ,OAAO;AACxB,YAAI,YAAY,aAAa,KAAK,UAAU,KAAK,SAAS,SAAS;AAAA,MACrE;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACH;","names":["getCachedDocumentNodeFromSchema","getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","Kind","isScalarType","sources","unionsDefinition","types","result"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baeta/plugin-graphql",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "keywords": [
5
5
  "baeta",
6
6
  "graphql",
@@ -39,28 +39,27 @@
39
39
  ],
40
40
  "scripts": {
41
41
  "build": "tsup",
42
- "dev": "tsup --watch",
43
42
  "prepack": "prep",
44
43
  "postpack": "prep --clean",
45
44
  "types": "tsc --noEmit"
46
45
  },
47
46
  "dependencies": {
48
- "@baeta/generator-sdk": "^0.0.12",
49
- "@baeta/util-path": "^0.0.4",
47
+ "@baeta/generator-sdk": "^0.0.13",
48
+ "@baeta/util-path": "^0.0.5",
50
49
  "@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",
50
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
51
+ "@graphql-codegen/typescript": "^4.0.7",
52
+ "@graphql-codegen/visitor-plugin-common": "5.2.0",
54
53
  "@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",
54
+ "@graphql-tools/code-file-loader": "^8.1.2",
55
+ "@graphql-tools/git-loader": "^8.0.6",
57
56
  "@graphql-tools/github-loader": "^8.0.1",
58
57
  "@graphql-tools/graphql-file-loader": "^8.0.1",
59
58
  "@graphql-tools/json-file-loader": "^8.0.1",
60
59
  "@graphql-tools/load": "^8.0.2",
61
- "@graphql-tools/prisma-loader": "^8.0.3",
60
+ "@graphql-tools/prisma-loader": "^8.0.4",
62
61
  "@graphql-tools/url-loader": "^8.0.2",
63
- "@graphql-tools/utils": "^10.1.3",
62
+ "@graphql-tools/utils": "^10.2.1",
64
63
  "auto-bind": "^5.0.1",
65
64
  "change-case-all": "2.1.0",
66
65
  "parse-filepath": "^1.0.2"
@@ -68,7 +67,7 @@
68
67
  "devDependencies": {
69
68
  "@baeta/builder": "^0.0.0",
70
69
  "@baeta/tsconfig": "^0.0.0",
71
- "@types/node": "^20.12.7",
70
+ "@types/node": "^20.14.2",
72
71
  "@types/parse-filepath": "1.0.2",
73
72
  "graphql": "^16.8.1",
74
73
  "typescript": "^5.4.5"