@baeta/plugin-graphql 2.0.0-next.3 → 2.0.0-next.7

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,11 @@
1
1
  # @baeta/plugin-graphql
2
2
 
3
+ ## 2.0.0-next.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [#214](https://github.com/andreisergiu98/baeta/pull/214) [`c47665a`](https://github.com/andreisergiu98/baeta/commit/c47665a76a0f88bae07f42983b380361e4f0843a) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Improve typesafety by type checking the exported module
8
+
3
9
  ## 2.0.0-next.3
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -131,7 +131,7 @@ const userQuery = Query.user
131
131
  });
132
132
 
133
133
  const updateUserMutation = Mutation.updateUser
134
- .use(async (next) => {
134
+ .$use(async (next) => {
135
135
  const user = await next();
136
136
  await userCache.save(user);
137
137
  return user;
package/dist/index.js CHANGED
@@ -73,10 +73,20 @@ function printAutoload(config, modules) {
73
73
  return [printImports(config, modules), printExport(modules)].join("\n\n");
74
74
  }
75
75
  function printImports(config, modules) {
76
- return modules.map((module) => `import ${camelCase(module)} from "./${module}/index${config.importExtension}"`).join("\n");
76
+ const dependencyImports = ["import type { ModuleCompilerFactory } from \"@baeta/core/sdk\";", `import type { Ctx, Info } from "./types${config.importExtension}"`];
77
+ const moduleTypeImports = modules.map((module) => `import type { BaetaModuleTypes as ${pascalCase(module)}ModuleTypes } from "./${module}/typedef${config.importExtension}"`);
78
+ const moduleImports = modules.flatMap((module) => `import ${camelCase(module)} from "./${module}/index${config.importExtension}"`);
79
+ return [
80
+ ...dependencyImports,
81
+ ...moduleTypeImports,
82
+ ...moduleImports
83
+ ].join("\n");
77
84
  }
78
85
  function printExport(modules) {
79
- return `export default [${modules.map((m) => camelCase(m)).join(", ")}];`;
86
+ return `export default [\n${modules.map(printModuleWithSatisfies).join(",\n")}\n];`;
87
+ }
88
+ function printModuleWithSatisfies(module) {
89
+ return ` ${camelCase(module)} satisfies ModuleCompilerFactory<Ctx, Info, ${pascalCase(module)}ModuleTypes["Factories"]>`;
80
90
  }
81
91
 
82
92
  //#endregion
@@ -133,7 +143,7 @@ function printModuleMetadata(name, doc) {
133
143
  }
134
144
  function printBaetaModuleTypes(config) {
135
145
  return buildBlock({
136
- name: "interface BaetaModuleTypes",
146
+ name: "export interface BaetaModuleTypes",
137
147
  lines: [buildBlock({
138
148
  name: "Builders:",
139
149
  lines: printBaetaModuleTypesForFields(config, false)
@@ -638,7 +648,7 @@ async function generate(options) {
638
648
  modulesDir: options.modulesDir
639
649
  }),
640
650
  options: {
641
- allowOverwrite: false,
651
+ disableOverwrite: true,
642
652
  disableBiomeV1Header: true,
643
653
  disableBiomeV2Header: true,
644
654
  disableEslintHeader: true,
@@ -649,7 +659,7 @@ async function generate(options) {
649
659
  filename: join(options.modulesDir, "extensions.ts"),
650
660
  content: printExtensionsTemplate(),
651
661
  options: {
652
- allowOverwrite: false,
662
+ disableOverwrite: true,
653
663
  disableBiomeV1Header: true,
654
664
  disableBiomeV2Header: true,
655
665
  disableEslintHeader: true,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["loadSchema","schemaPointerMap: UnnormalizedTypeDefPointer","loadSchemaToolkit","path","defaultScalarTypes: Record<string, string | undefined>","type","printNamedType","map: FieldInfoMap","registryKeys: RegistryKeys[]","picks: Record<RegistryKeys, Record<string, string[]>>","defined: Registry","obj: Record<K, T>","loadSchema","config: PrinterConfig","files: GeneratedFile[]","config: ModulePrinterConfig","config"],"sources":["../utils/load.ts","../utils/path.ts","../utils/source.ts","../lib/printer/printer-autoload.ts","../lib/printer/printer-utils.ts","../lib/printer/printer-module.ts","../lib/printer/printer-templates.ts","../utils/scalar.ts","../lib/printer/printer-types.ts","../lib/visitors/definitions-map.ts","../lib/visitors/field-info.ts","../lib/visitors/module-registry.ts","../lib/codegen.ts","../index.ts"],"sourcesContent":["import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport {\n\tloadSchema as loadSchemaToolkit,\n\ttype UnnormalizedTypeDefPointer,\n} from '@graphql-tools/load';\nimport {\n\ttype BaseLoaderOptions,\n\tgetDocumentNodeFromSchema,\n\ttype Loader,\n} from '@graphql-tools/utils';\nimport { validateSchema } from 'graphql';\n\nexport async function loadSchema(\n\tschemas: string | string[],\n\tcwd: string,\n\textraLoaders: Loader<BaseLoaderOptions>[] = [],\n) {\n\tconst schemaPointerMap: UnnormalizedTypeDefPointer = {};\n\tfor (const ptr of Array.isArray(schemas) ? schemas : [schemas]) {\n\t\tschemaPointerMap[ptr] = {};\n\t}\n\n\tconst outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n\t\tloaders: [new GraphQLFileLoader(), ...extraLoaders],\n\t\tcwd,\n\t\tincludeSources: true,\n\t});\n\n\tconst errors = validateSchema(outputSchemaAst);\n\n\tif (errors.length > 0) {\n\t\tconst messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n\t\tconst subject = errors.length === 1 ? 'error' : 'errors';\n\t\tthrow new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n\t}\n\n\tif (!outputSchemaAst.extensions) {\n\t\toutputSchemaAst.extensions = {};\n\t}\n\n\treturn {\n\t\toutputSchemaAst,\n\t\toutputSchema: getDocumentNodeFromSchema(outputSchemaAst),\n\t};\n}\n","import path, { normalize } from '@baeta/util-path';\n\nconst sep = '/';\n\nexport function fixPath(root: string, toFix: string) {\n\treturn path.resolve(path.relative(root, toFix));\n}\n\nexport function getRelativePath(filepath: string, basePath: string) {\n\tconst normalizedFilepath = normalize(filepath);\n\tconst normalizedBasePath = ensureStartsWithSeparator(\n\t\tensureEndsWithSeparator(normalize(basePath)),\n\t);\n\tconst [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n\treturn relativePath;\n}\n\nexport function extractModuleDirectory(relativePath: string): string {\n\tconst [moduleDirectory] = relativePath.split(sep);\n\treturn moduleDirectory;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n\treturn path.startsWith(sep) ? path : sep + path;\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n\treturn path.endsWith(sep) ? path : path + sep;\n}\n","import type { Source } from '@graphql-tools/utils';\nimport type { GraphQLSchema } from 'graphql';\nimport { extractModuleDirectory, getRelativePath } from './path.ts';\n\nexport function groupSourcesByModule(sources: Source[], basePath: string) {\n\tconst map = new Map<string, Source[]>();\n\tfor (const source of sources) {\n\t\tif (!source.location) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst relativePath = getRelativePath(source.location, basePath);\n\t\tif (!relativePath) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mod = extractModuleDirectory(relativePath);\n\t\tconst existing = map.get(mod) ?? [];\n\t\texisting.push(source);\n\t\tmap.set(mod, existing);\n\t}\n\treturn map;\n}\n\nexport function getSourcesFromSchema(schema: GraphQLSchema) {\n\tconst extensions = schema.extensions;\n\treturn (extensions?.extendedSources ?? []) as Source[];\n}\n","import { camelCase } from 'change-case-all';\n\ninterface AutoloadPrinterConfig {\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printAutoload(config: AutoloadPrinterConfig, modules: string[]) {\n\treturn [printImports(config, modules), printExport(modules)].join('\\n\\n');\n}\n\nfunction printImports(config: AutoloadPrinterConfig, modules: string[]) {\n\treturn modules\n\t\t.map(\n\t\t\t(module) => `import ${camelCase(module)} from \"./${module}/index${config.importExtension}\"`,\n\t\t)\n\t\t.join('\\n');\n}\n\nfunction printExport(modules: string[]) {\n\treturn `export default [${modules.map((m) => camelCase(m)).join(', ')}];`;\n}\n","import { posixPath, relative } from '@baeta/util-path';\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n\treturn [`${name} {`, ...lines.filter(Boolean).map(indent(2)), '};'].join('\\n');\n}\n\nexport function buildCodeBlock({ name, lines }: { name: string; lines: string[] }) {\n\tconst linesWithSep = lines.filter(Boolean).map(indent(2)).join(',\\n');\n\treturn [`${name} {`, linesWithSep, '}'].join('\\n');\n}\n\nexport function indent(size: number) {\n\tconst space = new Array(size).fill(' ').join('');\n\tfunction indentInner(val: string): string {\n\t\treturn val\n\t\t\t.split('\\n')\n\t\t\t.map((line) => `${space}${line}`)\n\t\t\t.join('\\n');\n\t}\n\treturn indentInner;\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n\treturn i === all.indexOf(val);\n}\n\nexport function makeRelativePathForImport(from: string, to: string) {\n\tconst res = posixPath(relative(from, to));\n\tif (res.startsWith('.') || res.startsWith('/')) {\n\t\treturn res;\n\t}\n\treturn `./${res}`;\n}\n","import { join } from '@baeta/util-path';\nimport { pascalCase } from 'change-case-all';\nimport type { DocumentNode } from 'graphql';\nimport type { FieldInfoMap } from '../visitors/field-info.ts';\nimport type { ModuleRegistry } from '../visitors/module-registry.ts';\nimport { buildBlock, buildCodeBlock, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface ModulePrinterConfig {\n\tregistry: ModuleRegistry;\n\tfieldInfo: FieldInfoMap;\n\ttypesDir: string;\n\tmodulesDir: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printModuleImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst typesDir = makeRelativePathForImport(join(config.modulesDir, moduleName), config.typesDir);\n\treturn [\n\t\t'import type { DocumentNode, GraphQLScalarType } from \"graphql\";',\n\t\t'import * as Baeta from \"@baeta/core/sdk\";',\n\t\t`import extensions from \"../extensions${config.importExtension}\";`,\n\t\t`import type {Ctx, Info} from \"../types${config.importExtension}\";`,\n\t\t`import type * as Types from \"${typesDir}/types${config.importExtension}\";`,\n\t].join('\\n');\n}\n\nexport function printModuleMetadata(name: string, doc: DocumentNode) {\n\treturn buildCodeBlock({\n\t\tname: 'const moduleMetadata =',\n\t\tlines: [\n\t\t\t`id: '${name}'`,\n\t\t\t`dirname: './${name}'`,\n\t\t\t`typedef: ${JSON.stringify(doc)} as unknown as DocumentNode`,\n\t\t],\n\t});\n}\n\nexport function printBaetaModuleTypes(config: ModulePrinterConfig) {\n\treturn buildBlock({\n\t\tname: 'interface BaetaModuleTypes',\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builders:',\n\t\t\t\tlines: printBaetaModuleTypesForFields(config, false),\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factories:',\n\t\t\t\tlines: [\n\t\t\t\t\t...printBaetaModuleTypesForFields(config, true),\n\t\t\t\t\t...printBaetaModuleTypesScalars(config),\n\t\t\t\t],\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printBaetaModuleTypesForFields(config: ModulePrinterConfig, isFactory: boolean) {\n\treturn config.registry.defined.objects\n\t\t.map((typeName) =>\n\t\t\tprintObjectTypeModuleType(typeName, config.registry.picks.objects, isFactory),\n\t\t)\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeModuleType(\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n\tisFactory: boolean,\n) {\n\tconst object = objects[typeName];\n\tif (!object) {\n\t\treturn '';\n\t}\n\tconst parentType = getParentType(typeName);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tif (isFactory) {\n\t\treturn `${typeName}: Baeta.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n\t}\n\treturn `${typeName}: Baeta.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n}\n\nfunction printBaetaModuleTypesScalars(config: ModulePrinterConfig) {\n\treturn config.registry.defined.scalars.map((scalar) => `${scalar}: GraphQLScalarType`);\n}\n\nexport function printModuleObjectTypeFields(config: ModulePrinterConfig) {\n\tconst objects = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\treturn buildBlock({\n\t\tname: 'interface BaetaModuleObjectTypeFields',\n\t\tlines: objects,\n\t});\n}\n\nfunction printObjectTypeFields(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n) {\n\tconst fields = objects[typeName];\n\tif (!fields || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst fieldsBuilders = fields.map((field) =>\n\t\tprintObjectTypeFieldBuilders(config, typeName, field),\n\t);\n\tconst fieldsFactories = fields.map((field) =>\n\t\tprintObjectTypeFieldFactories(config, typeName, field),\n\t);\n\treturn buildBlock({\n\t\tname: `${typeName}:`,\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builder:',\n\t\t\t\tlines: fieldsBuilders,\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factory:',\n\t\t\t\tlines: fieldsFactories,\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printObjectTypeFieldBuilders(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionMethods' : 'FieldMethods';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nfunction printObjectTypeFieldFactories(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionField' : 'Field';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nexport function printModuleBuilder(config: ModulePrinterConfig, moduleName: string) {\n\tconst objectTypes = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeBuilder(typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\tconst builders = buildCodeBlock({\n\t\tname: '',\n\t\tlines: objectTypes,\n\t});\n\tconst typeNameResolvers = buildCodeBlock({\n\t\tname: '',\n\t\tlines: [...config.registry.defined.unions, ...config.registry.defined.interfaces].map(\n\t\t\t(name) => `${name}: ${printTypeNameResolver()}`,\n\t\t),\n\t});\n\tconst infoType = getInfoType();\n\tconst contextType = getContextType();\n\treturn [\n\t\t`export const ${pascalCase(moduleName)}Module = Baeta.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,\n\t\tbuilders,\n\t\t',',\n\t\ttypeNameResolvers,\n\t\t`, ${getExtensionsVar()});`,\n\t].join('');\n}\n\nfunction printObjectTypeBuilder(typeName: string, objects: Record<string, string[] | undefined>) {\n\tconst fields = objects[typeName]?.map((field) => printObjectTypeFieldBuilder(typeName, field));\n\tif (fields == null || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst content = buildCodeBlock({\n\t\tname: '',\n\t\tlines: fields,\n\t});\n\treturn `${typeName}: Baeta.createTypeBuilder(\"${typeName}\",${content}, ${getExtensionsVar()})`;\n}\n\nfunction printTypeNameResolver() {\n\treturn '{ __resolveType: (source: {__typename: string}) => { return source.__typename; }}';\n}\n\nfunction getParentType(type: string) {\n\tif (['Query', 'Mutation', 'Subscription'].includes(type)) {\n\t\treturn '{}';\n\t}\n\treturn `Types.${type}`;\n}\n\nfunction getResultType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst fieldType = config.fieldInfo.get(type)?.get(field)?.type;\n\tif (fieldType == null) {\n\t\treturn '{}';\n\t}\n\treturn fieldType;\n}\n\nfunction getArgsType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst hasArgs = config.fieldInfo.get(type)?.get(field)?.hasArguments ?? false;\n\tif (!hasArgs) {\n\t\treturn '{}';\n\t}\n\tconst fieldUpper = field[0].toUpperCase() + field.slice(1);\n\treturn `Types.${type}${fieldUpper}Args`;\n}\n\nfunction printObjectTypeFieldBuilder(typeName: string, field: string) {\n\tif (typeName === 'Subscription') {\n\t\treturn `${field}: Baeta.createSubscriptionBuilder(\"${field}\", ${getExtensionsVar()})`;\n\t}\n\treturn `${field}: Baeta.createFieldBuilder(\"${typeName}\", \"${field}\", ${getExtensionsVar()})`;\n}\n\nfunction getContextType() {\n\treturn 'Ctx';\n}\n\nfunction getInfoType() {\n\treturn 'Info';\n}\n\nfunction getExtensionsVar() {\n\treturn 'extensions';\n}\n","import { makeRelativePathForImport } from './printer-utils.ts';\n\nexport function printTypesTemplate(options: {\n\timportExtension: '.js' | '.ts' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}) {\n\tconst importDir = makeRelativePathForImport(options.modulesDir, options.typesDir);\n\n\treturn `import type { GraphQLResolveInfo } from 'graphql';\nimport type { BaseObjectTypes, BaseScalars } from '${importDir}/utility${options.importExtension}';\n\nexport interface Scalars extends BaseScalars {}\n\nexport interface ObjectTypes extends BaseObjectTypes {}\n\nexport type Ctx = {};\n\nexport type Info = GraphQLResolveInfo;\n`;\n}\n\nexport function printExtensionsTemplate() {\n\treturn `import { createExtensions } from '@baeta/core';\n\nexport default createExtensions({});\n`;\n}\n","import type { NamedTypeNode } from 'graphql';\nimport type { DefinitionsMap } from '../lib/visitors/definitions-map.ts';\n\nexport function isScalarType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: NamedTypeNode,\n): boolean {\n\treturn (\n\t\tdefinitionsMap.scalarTypeMap.has(type.name.value) || defaultScalars.includes(type.name.value)\n\t);\n}\n","import { pascalCase } from 'change-case-all';\nimport {\n\ttype EnumTypeDefinitionNode,\n\ttype FieldDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputValueDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\tKind,\n\ttype ListTypeNode,\n\ttype NamedTypeNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype TypeNode,\n\ttype UnionTypeDefinitionNode,\n} from 'graphql';\nimport { isScalarType } from '../../utils/scalar.ts';\nimport type { DefinitionsMap } from '../visitors/definitions-map.ts';\nimport { buildBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface PrinterConfig {\n\tglobalDefinitions: DefinitionsMap;\n\twithMaybe: boolean;\n\twithOptional: boolean;\n\tdefaultScalars: string[];\n\timportExtension: '.ts' | '.js' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}\n\nexport function printUtilityTypes(): string {\n\treturn [\n\t\t'export type Or<A, B> = void extends A ? B : A;',\n\t\t'export type Maybe<T> = T | null;',\n\t].join('\\n\\n');\n}\n\nconst defaultScalarTypes: Record<string, string | undefined> = {\n\tID: 'string',\n\tString: 'string',\n\tBoolean: 'boolean',\n\tInt: 'number',\n\tFloat: 'number',\n};\n\nexport function printBaseScalars(config: PrinterConfig): string {\n\tconst defaultScalars = config.defaultScalars\n\t\t.map((scalar) => {\n\t\t\tconst type = defaultScalarTypes[scalar];\n\t\t\tif (type == null) return null;\n\t\t\treturn `${scalar}: ${type};`;\n\t\t})\n\t\t.filter((el) => el != null);\n\tconst customScalars = [...config.globalDefinitions.scalarTypeMap.values()].map(\n\t\t(scalar) => `${scalar.name.value}: unknown;`,\n\t);\n\n\treturn buildBlock({\n\t\tname: 'export type BaseScalars =',\n\t\tlines: [...defaultScalars, ...customScalars],\n\t});\n}\n\nexport function printBaseObjectTypes(config: PrinterConfig): string {\n\tconst objectTypes = [...config.globalDefinitions.objectTypeMap.values()].map((t) => t.name.value);\n\treturn buildBlock({\n\t\tname: 'export interface BaseObjectTypes',\n\t\tlines: objectTypes.map((t) => `${t}: unknown;`),\n\t});\n}\n\nexport function printTypesHeaders(config: PrinterConfig): string {\n\tconst overridesDir = makeRelativePathForImport(config.typesDir, config.modulesDir);\n\treturn [\n\t\t`import type * as BaetaUtility from \"./utility${config.importExtension}\";`,\n\t\t`import type * as BaetaOverrides from \"${overridesDir}/types${config.importExtension}\";`,\n\t\t'',\n\t\t'export type Scalars = BaetaOverrides.Scalars;',\n\t].join('\\n');\n}\n\nexport function printRootTypesFromMap(\n\tconfig: PrinterConfig,\n\trootTypes: string[],\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()]\n\t\t.filter((type) => rootTypes.includes(type.name.value))\n\t\t.map((type) => printObjectType(config, type))\n\t\t.join('\\n\\n');\n}\n\nexport function printObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printObjectType(config, type));\n}\n\nfunction printObjectType(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printObjectTypeField(config, field));\n\treturn `export type ${type.name.value} = ${printOrObjectType(type, fields)}`;\n}\n\nfunction printObjectTypeField(config: PrinterConfig, field: FieldDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printEnumTypesFromMap(map: Map<string, EnumTypeDefinitionNode>) {\n\treturn [...map.values()].map(printEnumType);\n}\n\nfunction printEnumType(type: EnumTypeDefinitionNode) {\n\tconst values = type.values?.map((value) => `'${value.name.value}'`);\n\treturn `export type ${type.name.value} = ${values?.join(' | ') || 'never'}`;\n}\n\nexport function printInterfaceTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InterfaceTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInterfaceType(config, type));\n}\n\nfunction printInterfaceType(config: PrinterConfig, type: InterfaceTypeDefinitionNode) {\n\tconst objectTypes = Array.from(config.globalDefinitions.objectTypeMap.values());\n\tconst implementingTypes = objectTypes.filter((t) =>\n\t\tt.interfaces?.some((i) => i.name.value === type.name.value),\n\t);\n\tconst types = implementingTypes.map((t) => printNamedTypeForInterface(t.name.value));\n\treturn `export type ${type.name.value} = ${types.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForInterface(name: string) {\n\treturn `${name} & {__typename: \"${name}\"}`;\n}\n\nexport function printUnionTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, UnionTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printUnionType(config, type));\n}\n\nfunction printUnionType(config: PrinterConfig, type: UnionTypeDefinitionNode) {\n\tconst types = type.types?.map((type) => printNamedTypeForUnion(config, type));\n\treturn `export type ${type.name.value} = ${types?.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForUnion(config: PrinterConfig, type: NamedTypeNode) {\n\treturn `${printNamedType(config, type, false)} & {__typename: \"${type.name.value}\"}`;\n}\n\nexport function printInputObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InputObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInputObjectType(config, type));\n}\n\nfunction printInputObjectType(config: PrinterConfig, type: InputObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printInputObjectTypeField(config, field));\n\treturn buildBlock({\n\t\tname: `export type ${type.name.value} =`,\n\t\tlines: fields ?? [],\n\t});\n}\n\nfunction printInputObjectTypeField(config: PrinterConfig, field: InputValueDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printObjectTypeFieldsArgsFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].flatMap((type) => printObjectTypeArgs(config, type));\n}\n\nfunction printObjectTypeArgs(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tif (type.fields == null) {\n\t\treturn [];\n\t}\n\treturn type.fields\n\t\t.map((field) => printObjectTypeFieldArgs(config, type.name.value, field))\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeFieldArgs(\n\tconfig: PrinterConfig,\n\ttypeName: string,\n\tfield: FieldDefinitionNode,\n) {\n\tconst name = `${typeName + pascalCase(field.name.value)}Args`;\n\treturn buildBlock({\n\t\tname: `export type ${name} =`,\n\t\tlines: field.arguments?.map((arg) => printObjectTypeFieldArg(config, arg)) ?? [],\n\t});\n}\n\nfunction printObjectTypeFieldArg(config: PrinterConfig, arg: InputValueDefinitionNode) {\n\treturn `${arg.name.value}: ${printType(config, arg.type)}`;\n}\n\nfunction printType(config: PrinterConfig, type: TypeNode, nullable = true): string {\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\treturn printNamedType(config, type, nullable);\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn printListType(config, type, nullable);\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printType(config, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n\nfunction printListType(config: PrinterConfig, type: ListTypeNode, nullable = true): string {\n\treturn printValue(config, `Array<${printType(config, type.type)}>`, nullable);\n}\n\nfunction printNamedType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\tif (isScalarType(config.globalDefinitions, config.defaultScalars, type)) {\n\t\treturn printScalarType(config, type, nullable);\n\t}\n\treturn printValue(config, type.name.value, nullable);\n}\n\nfunction printScalarType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\treturn printValue(config, `Scalars[\"${type.name.value}\"]`, nullable);\n}\n\nfunction printValue(config: PrinterConfig, value: string, nullable: boolean): string {\n\tif (!nullable) {\n\t\treturn value;\n\t}\n\tif (config.withMaybe) {\n\t\treturn `BaetaUtility.Maybe<${value}>`;\n\t}\n\treturn `${value} | null`;\n}\n\nfunction printOptionalMarker(config: PrinterConfig, type: TypeNode): string {\n\treturn config.withOptional && type.kind !== Kind.NON_NULL_TYPE ? '?' : '';\n}\n\nfunction printOrObjectType(type: ObjectTypeDefinitionNode, fields?: string[]): string {\n\treturn `BaetaUtility.Or<BaetaOverrides.ObjectTypes[\"${type.name.value}\"], {\\n${fields?.map(indent(2)).join('\\n') ?? ''}\\n}>`;\n}\n","import type { Source } from '@graphql-tools/utils';\nimport {\n\ttype DocumentNode,\n\ttype EnumTypeDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype ScalarTypeDefinitionNode,\n\ttype UnionTypeDefinitionNode,\n\tvisit,\n} from 'graphql';\n\nexport type DefinitionsMap = ReturnType<typeof createRegistry>;\n\nfunction createRegistry() {\n\treturn {\n\t\tscalarTypeMap: new Map<string, ScalarTypeDefinitionNode>(),\n\t\tenumTypeMap: new Map<string, EnumTypeDefinitionNode>(),\n\t\tobjectTypeMap: new Map<string, ObjectTypeDefinitionNode>(),\n\t\tinputObjectTypeMap: new Map<string, InputObjectTypeDefinitionNode>(),\n\t\tunionTypeMap: new Map<string, UnionTypeDefinitionNode>(),\n\t\tinterfaceTypeMap: new Map<string, InterfaceTypeDefinitionNode>(),\n\t};\n}\n\nexport function createDefinitionsMapFromSources(sources: Source[]) {\n\tconst registry = createRegistry();\n\tfor (const source of sources) {\n\t\tif (source.document) {\n\t\t\tcollectTypesFromDocument(source.document, registry, ['Query', 'Mutation', 'Subscription']);\n\t\t}\n\t}\n\treturn registry;\n}\n\nexport function createDefinitionsMapFromDocument(document: DocumentNode) {\n\tconst registry = createRegistry();\n\tcollectTypesFromDocument(document, registry);\n\treturn registry;\n}\n\nfunction collectTypesFromDocument(\n\tdocument: DocumentNode,\n\tregistry: DefinitionsMap,\n\tfilterObjectTypes: string[] = [],\n) {\n\tvisit(document, {\n\t\tScalarTypeDefinition(node) {\n\t\t\tif (registry.scalarTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Scalar type ${node.name.value} already exists`);\n\t\t\t}\n\t\t\tregistry.scalarTypeMap.set(node.name.value, node);\n\t\t},\n\t\tEnumTypeDefinition(node) {\n\t\t\tif (registry.enumTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Enum type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.enumTypeMap.set(node.name.value, node);\n\t\t},\n\t\tObjectTypeDefinition(node) {\n\t\t\tif (filterObjectTypes.includes(node.name.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (registry.objectTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Object type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.objectTypeMap.set(node.name.value, node);\n\t\t},\n\t\tInputObjectTypeDefinition(node) {\n\t\t\tif (registry.inputObjectTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Input type ${node.name.value} already exists. Use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.inputObjectTypeMap.set(node.name.value, node);\n\t\t},\n\t\tUnionTypeDefinition(node) {\n\t\t\tif (registry.unionTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Union type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.unionTypeMap.set(node.name.value, node);\n\t\t},\n\t\tInterfaceTypeDefinition(node) {\n\t\t\tif (registry.interfaceTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Interface type ${node.name.value} already exists. Use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.interfaceTypeMap.set(node.name.value, node);\n\t\t},\n\t});\n}\n","import { Kind, type TypeNode } from 'graphql';\nimport { isScalarType } from '../../utils/scalar.ts';\nimport type { DefinitionsMap } from './definitions-map.ts';\n\nexport type FieldInfoMap = Map<string, Map<string, { type: string; hasArguments: boolean }>>;\n\nexport function createFieldInfoMap(definitionsMap: DefinitionsMap, defaultScalars: string[]) {\n\tconst map: FieldInfoMap = new Map();\n\tfor (const objectType of definitionsMap.objectTypeMap.values()) {\n\t\tconst objectName = objectType.name.value;\n\t\tfor (const field of objectType.fields ?? []) {\n\t\t\tconst fieldName = field.name.value;\n\t\t\tconst type = printNamedType(definitionsMap, defaultScalars, field.type, true);\n\t\t\tconst hasArguments = field.arguments != null && field.arguments.length > 0;\n\t\t\tconst fieldMap = map.get(objectName) ?? new Map();\n\t\t\tfieldMap.set(fieldName, { type, hasArguments });\n\t\t\tmap.set(objectName, fieldMap);\n\t\t}\n\t}\n\treturn map;\n}\n\nfunction printNamedType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: TypeNode,\n\tnullable = true,\n): string {\n\tconst withNullable = nullable ? ' | null' : '';\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\tif (isScalarType(definitionsMap, defaultScalars, type)) {\n\t\t\t\treturn `Types.Scalars[\"${type.name.value}\"]${withNullable}`;\n\t\t\t}\n\t\t\treturn `Types.${type.name.value}${withNullable}`;\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn `Array<${printNamedType(definitionsMap, defaultScalars, type.type, nullable)}>${withNullable}`;\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printNamedType(definitionsMap, defaultScalars, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n","import {\n\ttype DocumentNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputObjectTypeExtensionNode,\n\ttype InterfaceTypeDefinitionNode,\n\ttype InterfaceTypeExtensionNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype ObjectTypeExtensionNode,\n\ttype UnionTypeDefinitionNode,\n\tvisit,\n} from 'graphql';\n\nexport type RegistryKeys = 'objects' | 'interfaces' | 'unions' | 'scalars';\nexport type Registry = Record<RegistryKeys, string[]>;\nexport type Picks = Record<RegistryKeys, Record<string, string[]>>;\n\nconst registryKeys: RegistryKeys[] = ['objects', 'interfaces', 'unions', 'scalars'];\n\nexport type ModuleRegistry = {\n\tdefined: Registry;\n\tpicks: Picks;\n};\n\nexport function createModuleRegistry(document: DocumentNode): ModuleRegistry {\n\tconst picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n\t\tregistryKeys,\n\t\t() => ({}),\n\t);\n\tconst defined: Registry = createObject(registryKeys, () => []);\n\n\tvisit(document, {\n\t\tObjectTypeDefinition(node) {\n\t\t\tdefined.objects.push(node.name.value);\n\t\t\tcollectFields(node, picks.objects);\n\t\t},\n\t\tObjectTypeExtension(node) {\n\t\t\tpushUnique(defined.objects, node.name.value);\n\t\t\tcollectFields(node, picks.objects);\n\t\t},\n\t\tInterfaceTypeDefinition(node) {\n\t\t\tdefined.interfaces.push(node.name.value);\n\t\t\tcollectFields(node, picks.interfaces);\n\t\t},\n\t\tUnionTypeDefinition(node) {\n\t\t\tdefined.unions.push(node.name.value);\n\t\t\tcollectUnionTypes(node, picks);\n\t\t},\n\t\tScalarTypeDefinition(node) {\n\t\t\tdefined.scalars.push(node.name.value);\n\t\t},\n\t});\n\n\treturn {\n\t\tdefined,\n\t\tpicks,\n\t};\n}\n\nfunction collectFields(\n\tnode:\n\t\t| ObjectTypeDefinitionNode\n\t\t| ObjectTypeExtensionNode\n\t\t| InterfaceTypeDefinitionNode\n\t\t| InterfaceTypeExtensionNode\n\t\t| InputObjectTypeDefinitionNode\n\t\t| InputObjectTypeExtensionNode,\n\tpicksObj: Record<string, string[]>,\n) {\n\tconst name = node.name.value;\n\tif (node.fields) {\n\t\tif (!picksObj[name]) {\n\t\t\tpicksObj[name] = [];\n\t\t}\n\t\tfor (const field of node.fields) {\n\t\t\tpicksObj[name].push(field.name.value);\n\t\t}\n\t}\n}\n\nfunction collectUnionTypes(node: UnionTypeDefinitionNode, picks: Picks) {\n\tconst name = node.name.value;\n\tif (node.types) {\n\t\tif (!picks.unions[name]) {\n\t\t\tpicks.unions[name] = [];\n\t\t}\n\t\tfor (const type of node.types) {\n\t\t\tpicks.unions[name].push(type.name.value);\n\t\t}\n\t}\n}\n\nexport function pushUnique<T>(list: T[], item: T): void {\n\tif (!list.includes(item)) {\n\t\tlist.push(item);\n\t}\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n\tconst obj: Record<K, T> = {} as Record<K, T>;\n\tfor (const key of keys) {\n\t\tobj[key] = valueFn(key);\n\t}\n\treturn obj;\n}\n","import type { FileOptions, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { join } from '@baeta/util-path';\nimport { concatAST } from 'graphql';\nimport { loadSchema } from '../utils/load.ts';\nimport { getSourcesFromSchema, groupSourcesByModule } from '../utils/source.ts';\nimport { printAutoload } from './printer/printer-autoload.ts';\nimport {\n\ttype ModulePrinterConfig,\n\tprintBaetaModuleTypes,\n\tprintModuleBuilder,\n\tprintModuleImports,\n\tprintModuleMetadata,\n\tprintModuleObjectTypeFields,\n} from './printer/printer-module.ts';\nimport { printExtensionsTemplate, printTypesTemplate } from './printer/printer-templates.ts';\nimport {\n\ttype PrinterConfig,\n\tprintBaseObjectTypes,\n\tprintBaseScalars,\n\tprintEnumTypesFromMap,\n\tprintInputObjectTypeTypesFromMap,\n\tprintInterfaceTypesFromMap,\n\tprintObjectTypeFieldsArgsFromMap,\n\tprintObjectTypeTypesFromMap,\n\tprintRootTypesFromMap,\n\tprintTypesHeaders,\n\tprintUnionTypesFromMap,\n\tprintUtilityTypes,\n} from './printer/printer-types.ts';\nimport {\n\tcreateDefinitionsMapFromDocument,\n\tcreateDefinitionsMapFromSources,\n} from './visitors/definitions-map.ts';\nimport { createFieldInfoMap } from './visitors/field-info.ts';\nimport { createModuleRegistry } from './visitors/module-registry.ts';\n\ntype GeneratedFile = {\n\tfilename: string;\n\tcontent: string;\n\toptions?: FileOptions;\n};\n\nexport async function generate(options: NormalizedGeneratorOptions): Promise<GeneratedFile[]> {\n\tconst { outputSchema, outputSchemaAst } = await loadSchema(\n\t\toptions.schemas,\n\t\toptions.cwd,\n\t\toptions.loaders,\n\t);\n\tconst sources = getSourcesFromSchema(outputSchemaAst);\n\tconst sourcesByModule = groupSourcesByModule(sources, options.modulesDir);\n\tconst modules = Array.from(sourcesByModule.keys());\n\tconst globalDefinitions = createDefinitionsMapFromDocument(outputSchema);\n\tconst modulesDefinitions = createDefinitionsMapFromSources(sources);\n\n\tconst defaultScalars = ['ID', 'Int', 'Float', 'String', 'Boolean'];\n\n\tconst config: PrinterConfig = {\n\t\tglobalDefinitions,\n\t\twithMaybe: false,\n\t\twithOptional: false,\n\t\tdefaultScalars,\n\t\timportExtension: options.importExtension,\n\t\ttypesDir: options.typesDir,\n\t\tmodulesDir: options.modulesDir,\n\t};\n\n\tconst fieldInfo = createFieldInfoMap(globalDefinitions, defaultScalars);\n\n\tconst typesContent = [\n\t\tprintTypesHeaders(config),\n\t\tprintRootTypesFromMap(\n\t\t\tconfig,\n\t\t\t['Query', 'Mutation', 'Subscription'],\n\t\t\tglobalDefinitions.objectTypeMap,\n\t\t),\n\t\t...printEnumTypesFromMap(globalDefinitions.enumTypeMap),\n\t\t...printObjectTypeTypesFromMap(config, modulesDefinitions.objectTypeMap),\n\t\t...printObjectTypeFieldsArgsFromMap(config, globalDefinitions.objectTypeMap),\n\t\t...printInputObjectTypeTypesFromMap(config, globalDefinitions.inputObjectTypeMap),\n\t\t...printInterfaceTypesFromMap(config, globalDefinitions.interfaceTypeMap),\n\t\t...printUnionTypesFromMap(config, globalDefinitions.unionTypeMap),\n\t].join('\\n\\n');\n\n\tconst utilityContent = [\n\t\tprintUtilityTypes(),\n\t\tprintBaseScalars(config),\n\t\tprintBaseObjectTypes(config),\n\t].join('\\n\\n');\n\n\tconst files: GeneratedFile[] = [\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'types.ts'),\n\t\t\tcontent: typesContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'utility.ts'),\n\t\t\tcontent: utilityContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'index.ts'),\n\t\t\tcontent: printAutoload({ importExtension: options.importExtension }, modules),\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'types.ts'),\n\t\t\tcontent: printTypesTemplate({\n\t\t\t\timportExtension: options.importExtension,\n\t\t\t\ttypesDir: options.typesDir,\n\t\t\t\tmodulesDir: options.modulesDir,\n\t\t\t}),\n\t\t\toptions: {\n\t\t\t\tallowOverwrite: false,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'extensions.ts'),\n\t\t\tcontent: printExtensionsTemplate(),\n\t\t\toptions: {\n\t\t\t\tallowOverwrite: false,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t];\n\n\tfor (const module of modules) {\n\t\tconst sources = sourcesByModule.get(module);\n\t\tconst documents = sources?.map((s) => s.document).filter((el) => el != null) ?? [];\n\t\tif (documents.length === 0) continue;\n\t\tconst document = concatAST(documents);\n\t\tconst config: ModulePrinterConfig = {\n\t\t\ttypesDir: options.typesDir,\n\t\t\tfieldInfo,\n\t\t\timportExtension: options.importExtension,\n\t\t\tmodulesDir: options.modulesDir,\n\t\t\tregistry: createModuleRegistry(document),\n\t\t};\n\t\tfiles.push({\n\t\t\tfilename: join(options.modulesDir, `/${module}/${options.moduleDefinitionName}`),\n\t\t\tcontent: [\n\t\t\t\tprintModuleImports(config, module),\n\t\t\t\tprintModuleMetadata(module, document),\n\t\t\t\tprintBaetaModuleTypes(config),\n\t\t\t\tprintModuleObjectTypeFields(config),\n\t\t\t\tprintModuleBuilder(config, module),\n\t\t\t].join('\\n\\n'),\n\t\t});\n\t}\n\n\treturn files;\n}\n","import { createPluginV1, isMatch, type WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen.ts';\n\nexport function graphqlPlugin() {\n\treturn createPluginV1({\n\t\tname: 'graphql',\n\t\tactionName: 'GraphQL modules',\n\t\twatch: (options, watcher, reload) => {\n\t\t\tconst handleChange = (file: WatcherFile) => {\n\t\t\t\tif (isMatch(file.relativePath, options.schemas)) {\n\t\t\t\t\treload(file);\n\t\t\t\t}\n\t\t\t};\n\t\t\twatcher.on('update', handleChange);\n\t\t\twatcher.on('delete', handleChange);\n\t\t},\n\t\tgenerate: async (ctx, next) => {\n\t\t\tconst items = await generate(ctx.generatorOptions);\n\t\t\tfor (const item of items) {\n\t\t\t\tctx.fileManager.createAndAdd(item.filename, item.content, 'graphql', item.options);\n\t\t\t}\n\t\t\treturn next();\n\t\t},\n\t});\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["loadSchema","schemaPointerMap: UnnormalizedTypeDefPointer","loadSchemaToolkit","path","defaultScalarTypes: Record<string, string | undefined>","type","printNamedType","map: FieldInfoMap","registryKeys: RegistryKeys[]","picks: Record<RegistryKeys, Record<string, string[]>>","defined: Registry","obj: Record<K, T>","loadSchema","config: PrinterConfig","files: GeneratedFile[]","config: ModulePrinterConfig","config"],"sources":["../utils/load.ts","../utils/path.ts","../utils/source.ts","../lib/printer/printer-autoload.ts","../lib/printer/printer-utils.ts","../lib/printer/printer-module.ts","../lib/printer/printer-templates.ts","../utils/scalar.ts","../lib/printer/printer-types.ts","../lib/visitors/definitions-map.ts","../lib/visitors/field-info.ts","../lib/visitors/module-registry.ts","../lib/codegen.ts","../index.ts"],"sourcesContent":["import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport {\n\tloadSchema as loadSchemaToolkit,\n\ttype UnnormalizedTypeDefPointer,\n} from '@graphql-tools/load';\nimport {\n\ttype BaseLoaderOptions,\n\tgetDocumentNodeFromSchema,\n\ttype Loader,\n} from '@graphql-tools/utils';\nimport { validateSchema } from 'graphql';\n\nexport async function loadSchema(\n\tschemas: string | string[],\n\tcwd: string,\n\textraLoaders: Loader<BaseLoaderOptions>[] = [],\n) {\n\tconst schemaPointerMap: UnnormalizedTypeDefPointer = {};\n\tfor (const ptr of Array.isArray(schemas) ? schemas : [schemas]) {\n\t\tschemaPointerMap[ptr] = {};\n\t}\n\n\tconst outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n\t\tloaders: [new GraphQLFileLoader(), ...extraLoaders],\n\t\tcwd,\n\t\tincludeSources: true,\n\t});\n\n\tconst errors = validateSchema(outputSchemaAst);\n\n\tif (errors.length > 0) {\n\t\tconst messages = errors.map((e) => e.toString()).join('\\n\\n--------------------\\n\\n');\n\t\tconst subject = errors.length === 1 ? 'error' : 'errors';\n\t\tthrow new Error(`Invalid schema. Found ${errors.length} ${subject}:\\n\\n${messages}`);\n\t}\n\n\tif (!outputSchemaAst.extensions) {\n\t\toutputSchemaAst.extensions = {};\n\t}\n\n\treturn {\n\t\toutputSchemaAst,\n\t\toutputSchema: getDocumentNodeFromSchema(outputSchemaAst),\n\t};\n}\n","import path, { normalize } from '@baeta/util-path';\n\nconst sep = '/';\n\nexport function fixPath(root: string, toFix: string) {\n\treturn path.resolve(path.relative(root, toFix));\n}\n\nexport function getRelativePath(filepath: string, basePath: string) {\n\tconst normalizedFilepath = normalize(filepath);\n\tconst normalizedBasePath = ensureStartsWithSeparator(\n\t\tensureEndsWithSeparator(normalize(basePath)),\n\t);\n\tconst [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n\treturn relativePath;\n}\n\nexport function extractModuleDirectory(relativePath: string): string {\n\tconst [moduleDirectory] = relativePath.split(sep);\n\treturn moduleDirectory;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n\treturn path.startsWith(sep) ? path : sep + path;\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n\treturn path.endsWith(sep) ? path : path + sep;\n}\n","import type { Source } from '@graphql-tools/utils';\nimport type { GraphQLSchema } from 'graphql';\nimport { extractModuleDirectory, getRelativePath } from './path.ts';\n\nexport function groupSourcesByModule(sources: Source[], basePath: string) {\n\tconst map = new Map<string, Source[]>();\n\tfor (const source of sources) {\n\t\tif (!source.location) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst relativePath = getRelativePath(source.location, basePath);\n\t\tif (!relativePath) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mod = extractModuleDirectory(relativePath);\n\t\tconst existing = map.get(mod) ?? [];\n\t\texisting.push(source);\n\t\tmap.set(mod, existing);\n\t}\n\treturn map;\n}\n\nexport function getSourcesFromSchema(schema: GraphQLSchema) {\n\tconst extensions = schema.extensions;\n\treturn (extensions?.extendedSources ?? []) as Source[];\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\ninterface AutoloadPrinterConfig {\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printAutoload(config: AutoloadPrinterConfig, modules: string[]) {\n\treturn [printImports(config, modules), printExport(modules)].join('\\n\\n');\n}\n\nfunction printImports(config: AutoloadPrinterConfig, modules: string[]) {\n\tconst dependencyImports = [\n\t\t'import type { ModuleCompilerFactory } from \"@baeta/core/sdk\";',\n\t\t`import type { Ctx, Info } from \"./types${config.importExtension}\"`,\n\t];\n\tconst moduleTypeImports = modules.map(\n\t\t(module) =>\n\t\t\t`import type { BaetaModuleTypes as ${pascalCase(module)}ModuleTypes } from \"./${module}/typedef${config.importExtension}\"`,\n\t);\n\tconst moduleImports = modules.flatMap(\n\t\t(module) => `import ${camelCase(module)} from \"./${module}/index${config.importExtension}\"`,\n\t);\n\treturn [...dependencyImports, ...moduleTypeImports, ...moduleImports].join('\\n');\n}\n\nfunction printExport(modules: string[]) {\n\treturn `export default [\\n${modules.map(printModuleWithSatisfies).join(',\\n')}\\n];`;\n}\n\nfunction printModuleWithSatisfies(module: string) {\n\treturn ` ${camelCase(module)} satisfies ModuleCompilerFactory<Ctx, Info, ${pascalCase(module)}ModuleTypes[\"Factories\"]>`;\n}\n","import { posixPath, relative } from '@baeta/util-path';\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n\treturn [`${name} {`, ...lines.filter(Boolean).map(indent(2)), '};'].join('\\n');\n}\n\nexport function buildCodeBlock({ name, lines }: { name: string; lines: string[] }) {\n\tconst linesWithSep = lines.filter(Boolean).map(indent(2)).join(',\\n');\n\treturn [`${name} {`, linesWithSep, '}'].join('\\n');\n}\n\nexport function indent(size: number) {\n\tconst space = new Array(size).fill(' ').join('');\n\tfunction indentInner(val: string): string {\n\t\treturn val\n\t\t\t.split('\\n')\n\t\t\t.map((line) => `${space}${line}`)\n\t\t\t.join('\\n');\n\t}\n\treturn indentInner;\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n\treturn i === all.indexOf(val);\n}\n\nexport function makeRelativePathForImport(from: string, to: string) {\n\tconst res = posixPath(relative(from, to));\n\tif (res.startsWith('.') || res.startsWith('/')) {\n\t\treturn res;\n\t}\n\treturn `./${res}`;\n}\n","import { join } from '@baeta/util-path';\nimport { pascalCase } from 'change-case-all';\nimport type { DocumentNode } from 'graphql';\nimport type { FieldInfoMap } from '../visitors/field-info.ts';\nimport type { ModuleRegistry } from '../visitors/module-registry.ts';\nimport { buildBlock, buildCodeBlock, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface ModulePrinterConfig {\n\tregistry: ModuleRegistry;\n\tfieldInfo: FieldInfoMap;\n\ttypesDir: string;\n\tmodulesDir: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printModuleImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst typesDir = makeRelativePathForImport(join(config.modulesDir, moduleName), config.typesDir);\n\treturn [\n\t\t'import type { DocumentNode, GraphQLScalarType } from \"graphql\";',\n\t\t'import * as Baeta from \"@baeta/core/sdk\";',\n\t\t`import extensions from \"../extensions${config.importExtension}\";`,\n\t\t`import type {Ctx, Info} from \"../types${config.importExtension}\";`,\n\t\t`import type * as Types from \"${typesDir}/types${config.importExtension}\";`,\n\t].join('\\n');\n}\n\nexport function printModuleMetadata(name: string, doc: DocumentNode) {\n\treturn buildCodeBlock({\n\t\tname: 'const moduleMetadata =',\n\t\tlines: [\n\t\t\t`id: '${name}'`,\n\t\t\t`dirname: './${name}'`,\n\t\t\t`typedef: ${JSON.stringify(doc)} as unknown as DocumentNode`,\n\t\t],\n\t});\n}\n\nexport function printBaetaModuleTypes(config: ModulePrinterConfig) {\n\treturn buildBlock({\n\t\tname: 'export interface BaetaModuleTypes',\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builders:',\n\t\t\t\tlines: printBaetaModuleTypesForFields(config, false),\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factories:',\n\t\t\t\tlines: [\n\t\t\t\t\t...printBaetaModuleTypesForFields(config, true),\n\t\t\t\t\t...printBaetaModuleTypesScalars(config),\n\t\t\t\t],\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printBaetaModuleTypesForFields(config: ModulePrinterConfig, isFactory: boolean) {\n\treturn config.registry.defined.objects\n\t\t.map((typeName) =>\n\t\t\tprintObjectTypeModuleType(typeName, config.registry.picks.objects, isFactory),\n\t\t)\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeModuleType(\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n\tisFactory: boolean,\n) {\n\tconst object = objects[typeName];\n\tif (!object) {\n\t\treturn '';\n\t}\n\tconst parentType = getParentType(typeName);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tif (isFactory) {\n\t\treturn `${typeName}: Baeta.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n\t}\n\treturn `${typeName}: Baeta.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n}\n\nfunction printBaetaModuleTypesScalars(config: ModulePrinterConfig) {\n\treturn config.registry.defined.scalars.map((scalar) => `${scalar}: GraphQLScalarType`);\n}\n\nexport function printModuleObjectTypeFields(config: ModulePrinterConfig) {\n\tconst objects = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\treturn buildBlock({\n\t\tname: 'interface BaetaModuleObjectTypeFields',\n\t\tlines: objects,\n\t});\n}\n\nfunction printObjectTypeFields(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n) {\n\tconst fields = objects[typeName];\n\tif (!fields || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst fieldsBuilders = fields.map((field) =>\n\t\tprintObjectTypeFieldBuilders(config, typeName, field),\n\t);\n\tconst fieldsFactories = fields.map((field) =>\n\t\tprintObjectTypeFieldFactories(config, typeName, field),\n\t);\n\treturn buildBlock({\n\t\tname: `${typeName}:`,\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builder:',\n\t\t\t\tlines: fieldsBuilders,\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factory:',\n\t\t\t\tlines: fieldsFactories,\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printObjectTypeFieldBuilders(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionMethods' : 'FieldMethods';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nfunction printObjectTypeFieldFactories(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionField' : 'Field';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nexport function printModuleBuilder(config: ModulePrinterConfig, moduleName: string) {\n\tconst objectTypes = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeBuilder(typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\tconst builders = buildCodeBlock({\n\t\tname: '',\n\t\tlines: objectTypes,\n\t});\n\tconst typeNameResolvers = buildCodeBlock({\n\t\tname: '',\n\t\tlines: [...config.registry.defined.unions, ...config.registry.defined.interfaces].map(\n\t\t\t(name) => `${name}: ${printTypeNameResolver()}`,\n\t\t),\n\t});\n\tconst infoType = getInfoType();\n\tconst contextType = getContextType();\n\treturn [\n\t\t`export const ${pascalCase(moduleName)}Module = Baeta.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,\n\t\tbuilders,\n\t\t',',\n\t\ttypeNameResolvers,\n\t\t`, ${getExtensionsVar()});`,\n\t].join('');\n}\n\nfunction printObjectTypeBuilder(typeName: string, objects: Record<string, string[] | undefined>) {\n\tconst fields = objects[typeName]?.map((field) => printObjectTypeFieldBuilder(typeName, field));\n\tif (fields == null || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst content = buildCodeBlock({\n\t\tname: '',\n\t\tlines: fields,\n\t});\n\treturn `${typeName}: Baeta.createTypeBuilder(\"${typeName}\",${content}, ${getExtensionsVar()})`;\n}\n\nfunction printTypeNameResolver() {\n\treturn '{ __resolveType: (source: {__typename: string}) => { return source.__typename; }}';\n}\n\nfunction getParentType(type: string) {\n\tif (['Query', 'Mutation', 'Subscription'].includes(type)) {\n\t\treturn '{}';\n\t}\n\treturn `Types.${type}`;\n}\n\nfunction getResultType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst fieldType = config.fieldInfo.get(type)?.get(field)?.type;\n\tif (fieldType == null) {\n\t\treturn '{}';\n\t}\n\treturn fieldType;\n}\n\nfunction getArgsType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst hasArgs = config.fieldInfo.get(type)?.get(field)?.hasArguments ?? false;\n\tif (!hasArgs) {\n\t\treturn '{}';\n\t}\n\tconst fieldUpper = field[0].toUpperCase() + field.slice(1);\n\treturn `Types.${type}${fieldUpper}Args`;\n}\n\nfunction printObjectTypeFieldBuilder(typeName: string, field: string) {\n\tif (typeName === 'Subscription') {\n\t\treturn `${field}: Baeta.createSubscriptionBuilder(\"${field}\", ${getExtensionsVar()})`;\n\t}\n\treturn `${field}: Baeta.createFieldBuilder(\"${typeName}\", \"${field}\", ${getExtensionsVar()})`;\n}\n\nfunction getContextType() {\n\treturn 'Ctx';\n}\n\nfunction getInfoType() {\n\treturn 'Info';\n}\n\nfunction getExtensionsVar() {\n\treturn 'extensions';\n}\n","import { makeRelativePathForImport } from './printer-utils.ts';\n\nexport function printTypesTemplate(options: {\n\timportExtension: '.js' | '.ts' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}) {\n\tconst importDir = makeRelativePathForImport(options.modulesDir, options.typesDir);\n\n\treturn `import type { GraphQLResolveInfo } from 'graphql';\nimport type { BaseObjectTypes, BaseScalars } from '${importDir}/utility${options.importExtension}';\n\nexport interface Scalars extends BaseScalars {}\n\nexport interface ObjectTypes extends BaseObjectTypes {}\n\nexport type Ctx = {};\n\nexport type Info = GraphQLResolveInfo;\n`;\n}\n\nexport function printExtensionsTemplate() {\n\treturn `import { createExtensions } from '@baeta/core';\n\nexport default createExtensions({});\n`;\n}\n","import type { NamedTypeNode } from 'graphql';\nimport type { DefinitionsMap } from '../lib/visitors/definitions-map.ts';\n\nexport function isScalarType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: NamedTypeNode,\n): boolean {\n\treturn (\n\t\tdefinitionsMap.scalarTypeMap.has(type.name.value) || defaultScalars.includes(type.name.value)\n\t);\n}\n","import { pascalCase } from 'change-case-all';\nimport {\n\ttype EnumTypeDefinitionNode,\n\ttype FieldDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputValueDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\tKind,\n\ttype ListTypeNode,\n\ttype NamedTypeNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype TypeNode,\n\ttype UnionTypeDefinitionNode,\n} from 'graphql';\nimport { isScalarType } from '../../utils/scalar.ts';\nimport type { DefinitionsMap } from '../visitors/definitions-map.ts';\nimport { buildBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface PrinterConfig {\n\tglobalDefinitions: DefinitionsMap;\n\twithMaybe: boolean;\n\twithOptional: boolean;\n\tdefaultScalars: string[];\n\timportExtension: '.ts' | '.js' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}\n\nexport function printUtilityTypes(): string {\n\treturn [\n\t\t'export type Or<A, B> = void extends A ? B : A;',\n\t\t'export type Maybe<T> = T | null;',\n\t].join('\\n\\n');\n}\n\nconst defaultScalarTypes: Record<string, string | undefined> = {\n\tID: 'string',\n\tString: 'string',\n\tBoolean: 'boolean',\n\tInt: 'number',\n\tFloat: 'number',\n};\n\nexport function printBaseScalars(config: PrinterConfig): string {\n\tconst defaultScalars = config.defaultScalars\n\t\t.map((scalar) => {\n\t\t\tconst type = defaultScalarTypes[scalar];\n\t\t\tif (type == null) return null;\n\t\t\treturn `${scalar}: ${type};`;\n\t\t})\n\t\t.filter((el) => el != null);\n\tconst customScalars = [...config.globalDefinitions.scalarTypeMap.values()].map(\n\t\t(scalar) => `${scalar.name.value}: unknown;`,\n\t);\n\n\treturn buildBlock({\n\t\tname: 'export type BaseScalars =',\n\t\tlines: [...defaultScalars, ...customScalars],\n\t});\n}\n\nexport function printBaseObjectTypes(config: PrinterConfig): string {\n\tconst objectTypes = [...config.globalDefinitions.objectTypeMap.values()].map((t) => t.name.value);\n\treturn buildBlock({\n\t\tname: 'export interface BaseObjectTypes',\n\t\tlines: objectTypes.map((t) => `${t}: unknown;`),\n\t});\n}\n\nexport function printTypesHeaders(config: PrinterConfig): string {\n\tconst overridesDir = makeRelativePathForImport(config.typesDir, config.modulesDir);\n\treturn [\n\t\t`import type * as BaetaUtility from \"./utility${config.importExtension}\";`,\n\t\t`import type * as BaetaOverrides from \"${overridesDir}/types${config.importExtension}\";`,\n\t\t'',\n\t\t'export type Scalars = BaetaOverrides.Scalars;',\n\t].join('\\n');\n}\n\nexport function printRootTypesFromMap(\n\tconfig: PrinterConfig,\n\trootTypes: string[],\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()]\n\t\t.filter((type) => rootTypes.includes(type.name.value))\n\t\t.map((type) => printObjectType(config, type))\n\t\t.join('\\n\\n');\n}\n\nexport function printObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printObjectType(config, type));\n}\n\nfunction printObjectType(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printObjectTypeField(config, field));\n\treturn `export type ${type.name.value} = ${printOrObjectType(type, fields)}`;\n}\n\nfunction printObjectTypeField(config: PrinterConfig, field: FieldDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printEnumTypesFromMap(map: Map<string, EnumTypeDefinitionNode>) {\n\treturn [...map.values()].map(printEnumType);\n}\n\nfunction printEnumType(type: EnumTypeDefinitionNode) {\n\tconst values = type.values?.map((value) => `'${value.name.value}'`);\n\treturn `export type ${type.name.value} = ${values?.join(' | ') || 'never'}`;\n}\n\nexport function printInterfaceTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InterfaceTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInterfaceType(config, type));\n}\n\nfunction printInterfaceType(config: PrinterConfig, type: InterfaceTypeDefinitionNode) {\n\tconst objectTypes = Array.from(config.globalDefinitions.objectTypeMap.values());\n\tconst implementingTypes = objectTypes.filter((t) =>\n\t\tt.interfaces?.some((i) => i.name.value === type.name.value),\n\t);\n\tconst types = implementingTypes.map((t) => printNamedTypeForInterface(t.name.value));\n\treturn `export type ${type.name.value} = ${types.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForInterface(name: string) {\n\treturn `${name} & {__typename: \"${name}\"}`;\n}\n\nexport function printUnionTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, UnionTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printUnionType(config, type));\n}\n\nfunction printUnionType(config: PrinterConfig, type: UnionTypeDefinitionNode) {\n\tconst types = type.types?.map((type) => printNamedTypeForUnion(config, type));\n\treturn `export type ${type.name.value} = ${types?.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForUnion(config: PrinterConfig, type: NamedTypeNode) {\n\treturn `${printNamedType(config, type, false)} & {__typename: \"${type.name.value}\"}`;\n}\n\nexport function printInputObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InputObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInputObjectType(config, type));\n}\n\nfunction printInputObjectType(config: PrinterConfig, type: InputObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printInputObjectTypeField(config, field));\n\treturn buildBlock({\n\t\tname: `export type ${type.name.value} =`,\n\t\tlines: fields ?? [],\n\t});\n}\n\nfunction printInputObjectTypeField(config: PrinterConfig, field: InputValueDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printObjectTypeFieldsArgsFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].flatMap((type) => printObjectTypeArgs(config, type));\n}\n\nfunction printObjectTypeArgs(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tif (type.fields == null) {\n\t\treturn [];\n\t}\n\treturn type.fields\n\t\t.map((field) => printObjectTypeFieldArgs(config, type.name.value, field))\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeFieldArgs(\n\tconfig: PrinterConfig,\n\ttypeName: string,\n\tfield: FieldDefinitionNode,\n) {\n\tconst name = `${typeName + pascalCase(field.name.value)}Args`;\n\treturn buildBlock({\n\t\tname: `export type ${name} =`,\n\t\tlines: field.arguments?.map((arg) => printObjectTypeFieldArg(config, arg)) ?? [],\n\t});\n}\n\nfunction printObjectTypeFieldArg(config: PrinterConfig, arg: InputValueDefinitionNode) {\n\treturn `${arg.name.value}: ${printType(config, arg.type)}`;\n}\n\nfunction printType(config: PrinterConfig, type: TypeNode, nullable = true): string {\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\treturn printNamedType(config, type, nullable);\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn printListType(config, type, nullable);\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printType(config, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n\nfunction printListType(config: PrinterConfig, type: ListTypeNode, nullable = true): string {\n\treturn printValue(config, `Array<${printType(config, type.type)}>`, nullable);\n}\n\nfunction printNamedType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\tif (isScalarType(config.globalDefinitions, config.defaultScalars, type)) {\n\t\treturn printScalarType(config, type, nullable);\n\t}\n\treturn printValue(config, type.name.value, nullable);\n}\n\nfunction printScalarType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\treturn printValue(config, `Scalars[\"${type.name.value}\"]`, nullable);\n}\n\nfunction printValue(config: PrinterConfig, value: string, nullable: boolean): string {\n\tif (!nullable) {\n\t\treturn value;\n\t}\n\tif (config.withMaybe) {\n\t\treturn `BaetaUtility.Maybe<${value}>`;\n\t}\n\treturn `${value} | null`;\n}\n\nfunction printOptionalMarker(config: PrinterConfig, type: TypeNode): string {\n\treturn config.withOptional && type.kind !== Kind.NON_NULL_TYPE ? '?' : '';\n}\n\nfunction printOrObjectType(type: ObjectTypeDefinitionNode, fields?: string[]): string {\n\treturn `BaetaUtility.Or<BaetaOverrides.ObjectTypes[\"${type.name.value}\"], {\\n${fields?.map(indent(2)).join('\\n') ?? ''}\\n}>`;\n}\n","import type { Source } from '@graphql-tools/utils';\nimport {\n\ttype DocumentNode,\n\ttype EnumTypeDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype ScalarTypeDefinitionNode,\n\ttype UnionTypeDefinitionNode,\n\tvisit,\n} from 'graphql';\n\nexport type DefinitionsMap = ReturnType<typeof createRegistry>;\n\nfunction createRegistry() {\n\treturn {\n\t\tscalarTypeMap: new Map<string, ScalarTypeDefinitionNode>(),\n\t\tenumTypeMap: new Map<string, EnumTypeDefinitionNode>(),\n\t\tobjectTypeMap: new Map<string, ObjectTypeDefinitionNode>(),\n\t\tinputObjectTypeMap: new Map<string, InputObjectTypeDefinitionNode>(),\n\t\tunionTypeMap: new Map<string, UnionTypeDefinitionNode>(),\n\t\tinterfaceTypeMap: new Map<string, InterfaceTypeDefinitionNode>(),\n\t};\n}\n\nexport function createDefinitionsMapFromSources(sources: Source[]) {\n\tconst registry = createRegistry();\n\tfor (const source of sources) {\n\t\tif (source.document) {\n\t\t\tcollectTypesFromDocument(source.document, registry, ['Query', 'Mutation', 'Subscription']);\n\t\t}\n\t}\n\treturn registry;\n}\n\nexport function createDefinitionsMapFromDocument(document: DocumentNode) {\n\tconst registry = createRegistry();\n\tcollectTypesFromDocument(document, registry);\n\treturn registry;\n}\n\nfunction collectTypesFromDocument(\n\tdocument: DocumentNode,\n\tregistry: DefinitionsMap,\n\tfilterObjectTypes: string[] = [],\n) {\n\tvisit(document, {\n\t\tScalarTypeDefinition(node) {\n\t\t\tif (registry.scalarTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Scalar type ${node.name.value} already exists`);\n\t\t\t}\n\t\t\tregistry.scalarTypeMap.set(node.name.value, node);\n\t\t},\n\t\tEnumTypeDefinition(node) {\n\t\t\tif (registry.enumTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Enum type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.enumTypeMap.set(node.name.value, node);\n\t\t},\n\t\tObjectTypeDefinition(node) {\n\t\t\tif (filterObjectTypes.includes(node.name.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (registry.objectTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Object type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.objectTypeMap.set(node.name.value, node);\n\t\t},\n\t\tInputObjectTypeDefinition(node) {\n\t\t\tif (registry.inputObjectTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Input type ${node.name.value} already exists. Use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.inputObjectTypeMap.set(node.name.value, node);\n\t\t},\n\t\tUnionTypeDefinition(node) {\n\t\t\tif (registry.unionTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Union type ${node.name.value} already exists, use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.unionTypeMap.set(node.name.value, node);\n\t\t},\n\t\tInterfaceTypeDefinition(node) {\n\t\t\tif (registry.interfaceTypeMap.has(node.name.value)) {\n\t\t\t\tthrow new Error(`Interface type ${node.name.value} already exists. Use 'extend' instead!`);\n\t\t\t}\n\t\t\tregistry.interfaceTypeMap.set(node.name.value, node);\n\t\t},\n\t});\n}\n","import { Kind, type TypeNode } from 'graphql';\nimport { isScalarType } from '../../utils/scalar.ts';\nimport type { DefinitionsMap } from './definitions-map.ts';\n\nexport type FieldInfoMap = Map<string, Map<string, { type: string; hasArguments: boolean }>>;\n\nexport function createFieldInfoMap(definitionsMap: DefinitionsMap, defaultScalars: string[]) {\n\tconst map: FieldInfoMap = new Map();\n\tfor (const objectType of definitionsMap.objectTypeMap.values()) {\n\t\tconst objectName = objectType.name.value;\n\t\tfor (const field of objectType.fields ?? []) {\n\t\t\tconst fieldName = field.name.value;\n\t\t\tconst type = printNamedType(definitionsMap, defaultScalars, field.type, true);\n\t\t\tconst hasArguments = field.arguments != null && field.arguments.length > 0;\n\t\t\tconst fieldMap = map.get(objectName) ?? new Map();\n\t\t\tfieldMap.set(fieldName, { type, hasArguments });\n\t\t\tmap.set(objectName, fieldMap);\n\t\t}\n\t}\n\treturn map;\n}\n\nfunction printNamedType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: TypeNode,\n\tnullable = true,\n): string {\n\tconst withNullable = nullable ? ' | null' : '';\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\tif (isScalarType(definitionsMap, defaultScalars, type)) {\n\t\t\t\treturn `Types.Scalars[\"${type.name.value}\"]${withNullable}`;\n\t\t\t}\n\t\t\treturn `Types.${type.name.value}${withNullable}`;\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn `Array<${printNamedType(definitionsMap, defaultScalars, type.type, nullable)}>${withNullable}`;\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printNamedType(definitionsMap, defaultScalars, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n","import {\n\ttype DocumentNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputObjectTypeExtensionNode,\n\ttype InterfaceTypeDefinitionNode,\n\ttype InterfaceTypeExtensionNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype ObjectTypeExtensionNode,\n\ttype UnionTypeDefinitionNode,\n\tvisit,\n} from 'graphql';\n\nexport type RegistryKeys = 'objects' | 'interfaces' | 'unions' | 'scalars';\nexport type Registry = Record<RegistryKeys, string[]>;\nexport type Picks = Record<RegistryKeys, Record<string, string[]>>;\n\nconst registryKeys: RegistryKeys[] = ['objects', 'interfaces', 'unions', 'scalars'];\n\nexport type ModuleRegistry = {\n\tdefined: Registry;\n\tpicks: Picks;\n};\n\nexport function createModuleRegistry(document: DocumentNode): ModuleRegistry {\n\tconst picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n\t\tregistryKeys,\n\t\t() => ({}),\n\t);\n\tconst defined: Registry = createObject(registryKeys, () => []);\n\n\tvisit(document, {\n\t\tObjectTypeDefinition(node) {\n\t\t\tdefined.objects.push(node.name.value);\n\t\t\tcollectFields(node, picks.objects);\n\t\t},\n\t\tObjectTypeExtension(node) {\n\t\t\tpushUnique(defined.objects, node.name.value);\n\t\t\tcollectFields(node, picks.objects);\n\t\t},\n\t\tInterfaceTypeDefinition(node) {\n\t\t\tdefined.interfaces.push(node.name.value);\n\t\t\tcollectFields(node, picks.interfaces);\n\t\t},\n\t\tUnionTypeDefinition(node) {\n\t\t\tdefined.unions.push(node.name.value);\n\t\t\tcollectUnionTypes(node, picks);\n\t\t},\n\t\tScalarTypeDefinition(node) {\n\t\t\tdefined.scalars.push(node.name.value);\n\t\t},\n\t});\n\n\treturn {\n\t\tdefined,\n\t\tpicks,\n\t};\n}\n\nfunction collectFields(\n\tnode:\n\t\t| ObjectTypeDefinitionNode\n\t\t| ObjectTypeExtensionNode\n\t\t| InterfaceTypeDefinitionNode\n\t\t| InterfaceTypeExtensionNode\n\t\t| InputObjectTypeDefinitionNode\n\t\t| InputObjectTypeExtensionNode,\n\tpicksObj: Record<string, string[]>,\n) {\n\tconst name = node.name.value;\n\tif (node.fields) {\n\t\tif (!picksObj[name]) {\n\t\t\tpicksObj[name] = [];\n\t\t}\n\t\tfor (const field of node.fields) {\n\t\t\tpicksObj[name].push(field.name.value);\n\t\t}\n\t}\n}\n\nfunction collectUnionTypes(node: UnionTypeDefinitionNode, picks: Picks) {\n\tconst name = node.name.value;\n\tif (node.types) {\n\t\tif (!picks.unions[name]) {\n\t\t\tpicks.unions[name] = [];\n\t\t}\n\t\tfor (const type of node.types) {\n\t\t\tpicks.unions[name].push(type.name.value);\n\t\t}\n\t}\n}\n\nexport function pushUnique<T>(list: T[], item: T): void {\n\tif (!list.includes(item)) {\n\t\tlist.push(item);\n\t}\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n\tconst obj: Record<K, T> = {} as Record<K, T>;\n\tfor (const key of keys) {\n\t\tobj[key] = valueFn(key);\n\t}\n\treturn obj;\n}\n","import type { FileOptions, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { join } from '@baeta/util-path';\nimport { concatAST } from 'graphql';\nimport { loadSchema } from '../utils/load.ts';\nimport { getSourcesFromSchema, groupSourcesByModule } from '../utils/source.ts';\nimport { printAutoload } from './printer/printer-autoload.ts';\nimport {\n\ttype ModulePrinterConfig,\n\tprintBaetaModuleTypes,\n\tprintModuleBuilder,\n\tprintModuleImports,\n\tprintModuleMetadata,\n\tprintModuleObjectTypeFields,\n} from './printer/printer-module.ts';\nimport { printExtensionsTemplate, printTypesTemplate } from './printer/printer-templates.ts';\nimport {\n\ttype PrinterConfig,\n\tprintBaseObjectTypes,\n\tprintBaseScalars,\n\tprintEnumTypesFromMap,\n\tprintInputObjectTypeTypesFromMap,\n\tprintInterfaceTypesFromMap,\n\tprintObjectTypeFieldsArgsFromMap,\n\tprintObjectTypeTypesFromMap,\n\tprintRootTypesFromMap,\n\tprintTypesHeaders,\n\tprintUnionTypesFromMap,\n\tprintUtilityTypes,\n} from './printer/printer-types.ts';\nimport {\n\tcreateDefinitionsMapFromDocument,\n\tcreateDefinitionsMapFromSources,\n} from './visitors/definitions-map.ts';\nimport { createFieldInfoMap } from './visitors/field-info.ts';\nimport { createModuleRegistry } from './visitors/module-registry.ts';\n\ntype GeneratedFile = {\n\tfilename: string;\n\tcontent: string;\n\toptions?: FileOptions;\n};\n\nexport async function generate(options: NormalizedGeneratorOptions): Promise<GeneratedFile[]> {\n\tconst { outputSchema, outputSchemaAst } = await loadSchema(\n\t\toptions.schemas,\n\t\toptions.cwd,\n\t\toptions.loaders,\n\t);\n\tconst sources = getSourcesFromSchema(outputSchemaAst);\n\tconst sourcesByModule = groupSourcesByModule(sources, options.modulesDir);\n\tconst modules = Array.from(sourcesByModule.keys());\n\tconst globalDefinitions = createDefinitionsMapFromDocument(outputSchema);\n\tconst modulesDefinitions = createDefinitionsMapFromSources(sources);\n\n\tconst defaultScalars = ['ID', 'Int', 'Float', 'String', 'Boolean'];\n\n\tconst config: PrinterConfig = {\n\t\tglobalDefinitions,\n\t\twithMaybe: false,\n\t\twithOptional: false,\n\t\tdefaultScalars,\n\t\timportExtension: options.importExtension,\n\t\ttypesDir: options.typesDir,\n\t\tmodulesDir: options.modulesDir,\n\t};\n\n\tconst fieldInfo = createFieldInfoMap(globalDefinitions, defaultScalars);\n\n\tconst typesContent = [\n\t\tprintTypesHeaders(config),\n\t\tprintRootTypesFromMap(\n\t\t\tconfig,\n\t\t\t['Query', 'Mutation', 'Subscription'],\n\t\t\tglobalDefinitions.objectTypeMap,\n\t\t),\n\t\t...printEnumTypesFromMap(globalDefinitions.enumTypeMap),\n\t\t...printObjectTypeTypesFromMap(config, modulesDefinitions.objectTypeMap),\n\t\t...printObjectTypeFieldsArgsFromMap(config, globalDefinitions.objectTypeMap),\n\t\t...printInputObjectTypeTypesFromMap(config, globalDefinitions.inputObjectTypeMap),\n\t\t...printInterfaceTypesFromMap(config, globalDefinitions.interfaceTypeMap),\n\t\t...printUnionTypesFromMap(config, globalDefinitions.unionTypeMap),\n\t].join('\\n\\n');\n\n\tconst utilityContent = [\n\t\tprintUtilityTypes(),\n\t\tprintBaseScalars(config),\n\t\tprintBaseObjectTypes(config),\n\t].join('\\n\\n');\n\n\tconst files: GeneratedFile[] = [\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'types.ts'),\n\t\t\tcontent: typesContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'utility.ts'),\n\t\t\tcontent: utilityContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'index.ts'),\n\t\t\tcontent: printAutoload({ importExtension: options.importExtension }, modules),\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'types.ts'),\n\t\t\tcontent: printTypesTemplate({\n\t\t\t\timportExtension: options.importExtension,\n\t\t\t\ttypesDir: options.typesDir,\n\t\t\t\tmodulesDir: options.modulesDir,\n\t\t\t}),\n\t\t\toptions: {\n\t\t\t\tdisableOverwrite: true,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'extensions.ts'),\n\t\t\tcontent: printExtensionsTemplate(),\n\t\t\toptions: {\n\t\t\t\tdisableOverwrite: true,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t];\n\n\tfor (const module of modules) {\n\t\tconst sources = sourcesByModule.get(module);\n\t\tconst documents = sources?.map((s) => s.document).filter((el) => el != null) ?? [];\n\t\tif (documents.length === 0) continue;\n\t\tconst document = concatAST(documents);\n\t\tconst config: ModulePrinterConfig = {\n\t\t\ttypesDir: options.typesDir,\n\t\t\tfieldInfo,\n\t\t\timportExtension: options.importExtension,\n\t\t\tmodulesDir: options.modulesDir,\n\t\t\tregistry: createModuleRegistry(document),\n\t\t};\n\t\tfiles.push({\n\t\t\tfilename: join(options.modulesDir, `/${module}/${options.moduleDefinitionName}`),\n\t\t\tcontent: [\n\t\t\t\tprintModuleImports(config, module),\n\t\t\t\tprintModuleMetadata(module, document),\n\t\t\t\tprintBaetaModuleTypes(config),\n\t\t\t\tprintModuleObjectTypeFields(config),\n\t\t\t\tprintModuleBuilder(config, module),\n\t\t\t].join('\\n\\n'),\n\t\t});\n\t}\n\n\treturn files;\n}\n","import { createPluginV1, isMatch, type WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen.ts';\n\nexport function graphqlPlugin() {\n\treturn createPluginV1({\n\t\tname: 'graphql',\n\t\tactionName: 'GraphQL modules',\n\t\twatch: (options, watcher, reload) => {\n\t\t\tconst handleChange = (file: WatcherFile) => {\n\t\t\t\tif (isMatch(file.relativePath, options.schemas)) {\n\t\t\t\t\treload(file);\n\t\t\t\t}\n\t\t\t};\n\t\t\twatcher.on('update', handleChange);\n\t\t\twatcher.on('delete', handleChange);\n\t\t},\n\t\tgenerate: async (ctx, next) => {\n\t\t\tconst items = await generate(ctx.generatorOptions);\n\t\t\tfor (const item of items) {\n\t\t\t\tctx.fileManager.createAndAdd(item.filename, item.content, 'graphql', item.options);\n\t\t\t}\n\t\t\treturn next();\n\t\t},\n\t});\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baeta/plugin-graphql",
3
- "version": "2.0.0-next.3",
3
+ "version": "2.0.0-next.7",
4
4
  "keywords": [
5
5
  "baeta",
6
6
  "graphql",
@@ -40,20 +40,28 @@
40
40
  "build": "builder build",
41
41
  "prepack": "builder prepare",
42
42
  "postpack": "builder prepare --clean",
43
+ "test": "builder test",
44
+ "test:circular": "builder test-circular",
43
45
  "types": "tsc --noEmit"
44
46
  },
47
+ "ava": {
48
+ "extensions": {
49
+ "ts": "module"
50
+ }
51
+ },
45
52
  "dependencies": {
46
53
  "@baeta/generator-sdk": "^2.0.0-next.3",
47
54
  "@baeta/util-path": "^2.0.0-next.2",
48
- "@graphql-tools/graphql-file-loader": "^8.1.3",
49
- "@graphql-tools/load": "^8.1.3",
50
- "@graphql-tools/utils": "^10.10.0",
55
+ "@graphql-tools/graphql-file-loader": "^8.1.8",
56
+ "@graphql-tools/load": "^8.1.7",
57
+ "@graphql-tools/utils": "^10.11.0",
51
58
  "change-case-all": "2.1.0"
52
59
  },
53
60
  "devDependencies": {
54
61
  "@baeta/builder": "^0.0.0",
62
+ "@baeta/testing": "^0.0.0",
55
63
  "@baeta/tsconfig": "^0.0.0",
56
- "@types/node": "^22.18.13",
64
+ "@types/node": "^22.19.1",
57
65
  "graphql": "^16.12.0",
58
66
  "typescript": "^5.9.3"
59
67
  },