@baeta/plugin-federation 0.0.0 → 2.0.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/index.d.ts +1004 -0
- package/dist/index.js +1827 -0
- package/dist/index.js.map +1 -0
- package/package.json +65 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../lib/federation-info.ts","../lib/print-federation-types.ts","../lib/print-handlers-starter.ts","../lib/print-resolvers.ts","../lib/print-schema-spec.ts","../lib/print-schema-types.ts","../lib/print-sdl.ts","../lib/specs.generated.ts","../lib/specs.ts","../index.ts"],"sourcesContent":["import type { Source } from '@baeta/util-graphql';\nimport type { ConstDirectiveNode, NamedTypeNode } from 'graphql';\nimport { Kind, visit } from 'graphql';\nimport type { FederationDirectiveName, FederationSpec } from './spec.ts';\n\nexport interface FederationInfo {\n\tusedDirectiveNames: Set<FederationDirectiveName>;\n\tresolvableEntitiesMap: Map<string, Set<string>>;\n}\n\nexport function buildFederationInfo(spec: FederationSpec, sources: Source[]): FederationInfo {\n\tconst specDirectiveNames = new Set(spec.directives.map((d) => d.name));\n\tconst usedDirectiveNames = new Set<FederationDirectiveName>();\n\tconst resolvableInterfacesMap = new Map<string, Set<string>>();\n\tconst resolvableEntitiesMap = new Map<string, Set<string>>();\n\n\tfor (const source of sources) {\n\t\tif (!source.document) continue;\n\t\tvisit(source.document, {\n\t\t\tDirective(node) {\n\t\t\t\tconst directiveName: FederationDirectiveName = `@${node.name.value}`;\n\t\t\t\tif (specDirectiveNames.has(directiveName)) {\n\t\t\t\t\tusedDirectiveNames.add(directiveName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tInterfaceTypeDefinition(node) {\n\t\t\t\taddKeyDirectivesSelectionSetToMap(\n\t\t\t\t\tresolvableInterfacesMap,\n\t\t\t\t\tnode.name.value,\n\t\t\t\t\tnode.directives,\n\t\t\t\t);\n\t\t\t},\n\t\t\tInterfaceTypeExtension(node) {\n\t\t\t\taddKeyDirectivesSelectionSetToMap(\n\t\t\t\t\tresolvableInterfacesMap,\n\t\t\t\t\tnode.name.value,\n\t\t\t\t\tnode.directives,\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\tfor (const source of sources) {\n\t\tif (!source.document) continue;\n\t\tvisit(source.document, {\n\t\t\tObjectTypeDefinition(node) {\n\t\t\t\taddKeyDirectivesSelectionSetToMap(resolvableEntitiesMap, node.name.value, node.directives);\n\t\t\t\tinheritInterfaceSelectionSets(\n\t\t\t\t\tresolvableInterfacesMap,\n\t\t\t\t\tresolvableEntitiesMap,\n\t\t\t\t\tnode.name.value,\n\t\t\t\t\tnode.interfaces,\n\t\t\t\t);\n\t\t\t},\n\t\t\tObjectTypeExtension(node) {\n\t\t\t\taddKeyDirectivesSelectionSetToMap(resolvableEntitiesMap, node.name.value, node.directives);\n\t\t\t\tinheritInterfaceSelectionSets(\n\t\t\t\t\tresolvableInterfacesMap,\n\t\t\t\t\tresolvableEntitiesMap,\n\t\t\t\t\tnode.name.value,\n\t\t\t\t\tnode.interfaces,\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\treturn {\n\t\tusedDirectiveNames,\n\t\tresolvableEntitiesMap,\n\t};\n}\n\nfunction inheritInterfaceSelectionSets(\n\tinterfacesSelectionsMap: Map<string, Set<string>>,\n\tmap: Map<string, Set<string>>,\n\tentityName: string,\n\tentityInterfaces: readonly NamedTypeNode[] = [],\n) {\n\tfor (const iface of entityInterfaces) {\n\t\tconst ifaceName = iface.name.value;\n\t\tconst ifaceSelections = interfacesSelectionsMap.get(ifaceName);\n\t\tif (!ifaceSelections) continue;\n\t\tconst existing = map.get(entityName) ?? new Set<string>();\n\t\tfor (const selectionSet of ifaceSelections) {\n\t\t\texisting.add(selectionSet);\n\t\t}\n\t\tmap.set(entityName, existing);\n\t}\n}\n\nfunction addKeyDirectivesSelectionSetToMap(\n\tmap: Map<string, Set<string>>,\n\ttypeName: string,\n\tdirectives: readonly ConstDirectiveNode[] = [],\n) {\n\tfor (const directive of directives) {\n\t\tconst selectionSet = getKeyDirectiveSelectionSet(directive);\n\t\tif (!selectionSet) continue;\n\t\tconst existing = map.get(typeName) ?? new Set<string>();\n\t\texisting.add(selectionSet);\n\t\tmap.set(typeName, existing);\n\t}\n}\n\nfunction getKeyDirectiveSelectionSet(directive: ConstDirectiveNode): string | null {\n\tif (directive.name.value !== 'key') {\n\t\treturn null;\n\t}\n\tconst fieldsArg = directive.arguments?.find((arg) => arg.name.value === 'fields');\n\tif (!fieldsArg) {\n\t\treturn null;\n\t}\n\tif (fieldsArg.value.kind !== Kind.STRING) {\n\t\treturn null;\n\t}\n\tconst resolvableArg = directive.arguments?.find((arg) => arg.name.value === 'resolvable');\n\tif (\n\t\tresolvableArg &&\n\t\tresolvableArg.value.kind === Kind.BOOLEAN &&\n\t\tresolvableArg.value.value === false\n\t) {\n\t\treturn null;\n\t}\n\treturn fieldsArg.value.value.trim().replaceAll(/\\s+/g, '');\n}\n","import { relative } from '@baeta/util-path';\nimport {\n\ttype GraphQLInterfaceType,\n\tGraphQLList,\n\tGraphQLNonNull,\n\ttype GraphQLObjectType,\n\ttype GraphQLSchema,\n\tisEnumType,\n\tisInterfaceType,\n\tisObjectType,\n\tisScalarType,\n\tKind,\n\tparse,\n\ttype SelectionSetNode,\n} from 'graphql';\nimport type { FederationInfo } from './federation-info.ts';\n\ninterface PrintFederationTypesOptions {\n\textension: '' | '.ts' | '.js';\n\tmodulesDir: string;\n\ttypesDir: string;\n}\n\nexport function printFederationTypes(\n\tschema: GraphQLSchema,\n\tfederationInfo: FederationInfo,\n\toptions: PrintFederationTypesOptions,\n) {\n\tconst entitiesRepresentations = [...federationInfo.resolvableEntitiesMap.entries()].map(\n\t\t([typeName, fields]) => buildRepresentationForType(schema, typeName, fields),\n\t);\n\tconst entityHandlerTypes = [...federationInfo.resolvableEntitiesMap.keys()].map((typeName) =>\n\t\tbuildEntityHandlerTypeForType(typeName),\n\t);\n\tconst entityRepresentationUnion =\n\t\t[...federationInfo.resolvableEntitiesMap.keys()]\n\t\t\t.map((typeName) => `${typeName}EntityRepresentation`)\n\t\t\t.join(' | ') || 'never';\n\n\tconst relativeModulesDir = relative(options.typesDir, options.modulesDir);\n\n\treturn [\n\t\t`import type {Ctx, Info} from \"${relativeModulesDir}/types${options.extension}\";`,\n\t\t`import * as Types from \"./types${options.extension}\";`,\n\t\t'',\n\t\t'type Result<T> = T | PromiseLike<T>;',\n\t\t'',\n\t\tentitiesRepresentations.join('\\n\\n'),\n\t\t'',\n\t\tentityHandlerTypes.join('\\n\\n'),\n\t\t'',\n\t\t`export type EntityRepresentation = ${entityRepresentationUnion};`,\n\t\t'',\n\t\t`export type EntityHandlerMap = { ${[...federationInfo.resolvableEntitiesMap.keys()].map((typeName) => `\"${typeName}\": ${typeName}EntityHandler`).join('; ')} };`,\n\t].join('\\n');\n}\n\nfunction buildEntityHandlerTypeForType(typeName: string) {\n\treturn `export type ${typeName}EntityHandler = (representation: ${typeName}EntityRepresentation, ctx: Ctx, info: Info) => Result<Types.${typeName} & {__typename: \"${typeName}\"} | null>`;\n}\n\nfunction buildRepresentationForType(schema: GraphQLSchema, typeName: string, fields: Set<string>) {\n\tconst objectType = schema.getType(typeName);\n\tif (!objectType || !isObjectType(objectType)) {\n\t\tthrow new Error(`Type \"${typeName}\" not found or is not an object type`);\n\t}\n\tconst shapes = [...fields].map((fieldSet) => buildShape(objectType, fieldSet));\n\treturn `export type ${typeName}EntityRepresentation = { __typename: \"${typeName}\" } & (${shapes.join(' | ')})`;\n}\n\nfunction buildShape(type: GraphQLObjectType, keyFields: string): string {\n\tconst doc = parse(`{ ${keyFields} }`);\n\tconst selectionSet =\n\t\tdoc.definitions[0].kind === Kind.OPERATION_DEFINITION ? doc.definitions[0].selectionSet : null;\n\n\tif (!selectionSet) throw new Error('Invalid key fields');\n\n\treturn selectionSetToTS(selectionSet, type);\n}\n\nfunction selectionSetToTS(\n\tselectionSet: SelectionSetNode,\n\tparentType: GraphQLObjectType | GraphQLInterfaceType,\n): string {\n\tconst fields = parentType.getFields();\n\tconst parts: string[] = [];\n\n\tfor (const selection of selectionSet.selections) {\n\t\tif (selection.kind !== Kind.FIELD) continue;\n\t\tconst name = selection.name.value;\n\t\tconst field = fields[name];\n\t\tif (!field) throw new Error(`Field \"${name}\" not found on ${parentType.name}`);\n\t\tconst naked = unwrap(field.type);\n\t\tif (isScalarType(naked) || isEnumType(naked)) {\n\t\t\tparts.push(`${name}: ${scalarToTS(naked.name)}`);\n\t\t} else if ((isObjectType(naked) || isInterfaceType(naked)) && selection.selectionSet) {\n\t\t\tconst nested = selectionSetToTS(selection.selectionSet, naked);\n\t\t\tparts.push(`${name}: ${nested}`);\n\t\t}\n\t}\n\treturn `{ ${parts.join('; ')} }`;\n}\n\nfunction unwrap(type: any): any {\n\tif (type instanceof GraphQLNonNull || type instanceof GraphQLList) {\n\t\treturn unwrap(type.ofType);\n\t}\n\treturn type;\n}\n\nfunction scalarToTS(name: string): string {\n\treturn `Types.Scalars[\"${name}\"]`;\n}\n","import { relative } from '@baeta/util-path';\n\ninterface PrintHandlersStarterOptions {\n\ttypesDir: string;\n\tfederationRootDir: string;\n\textension: '' | '.ts' | '.js';\n}\n\nexport function printHandlersStarter(options: PrintHandlersStarterOptions) {\n\tconst relativeTypesDir = relative(options.federationRootDir, options.typesDir);\n\treturn [\n\t\t'/**',\n\t\t'* Register your reference resolvers for federation entities in this file.',\n\t\t'* This file is generated by Baeta, but it will not be overwritten once created,',\n\t\t\"* so it's safe to edit it directly.\",\n\t\t'*/',\n\t\t'',\n\t\t`import type { EntityHandlerMap } from \"${relativeTypesDir}/federation.ts\";`,\n\t\t'',\n\t\t'const entityHandlersMap: EntityHandlerMap = {',\n\t\t'',\n\t\t'};',\n\t\t'',\n\t\t'export default entityHandlersMap;',\n\t].join('\\n');\n}\n","import { getModuleExportName } from '@baeta/generator-sdk';\nimport { relative } from '@baeta/util-path';\nimport type { FederationInfo } from './federation-info.ts';\nimport type { FederationDirectiveName, FederationDirectiveScalar, FederationSpec } from './spec.ts';\n\ninterface PrintResolversOptions {\n\textension: '' | '.ts' | '.js';\n\tmoduleName: string;\n\ttypesDir: string;\n\tfederationRootDir: string;\n\tmoduleDefinitionName: string;\n\tincludedDirectiveNames: Set<FederationDirectiveName>;\n}\n\nexport function printResolvers(\n\tspec: FederationSpec,\n\tinfo: FederationInfo,\n\toptions: PrintResolversOptions,\n): string {\n\tconst moduleExportName = getModuleExportName(options.moduleName);\n\tconst relativeGeneratedTypesDir = relative(options.federationRootDir, options.typesDir);\n\tconst imports = [\n\t\t'import * as BaetaFederation from \"@baeta/federation\"',\n\t\t`import type * as FederationTypes from \"${relativeGeneratedTypesDir}/federation${options.extension}\"`,\n\t\t`import federationSDL from \"./federation-sdl${options.extension}\"`,\n\t\t`import { ${moduleExportName} } from \"./${options.moduleDefinitionName}${options.extension}\"`,\n\t\tinfo.resolvableEntitiesMap.size > 0\n\t\t\t? `import handlersMap from \"./entity-handlers${options.extension}\"`\n\t\t\t: null,\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join(';\\n');\n\n\tconst scalars = getUniqueScalars(spec, options.includedDirectiveNames);\n\tconst scalarResolvers = scalars.map(printScalarResolver);\n\n\tconst moduleExportBody = [\n\t\tprintQueryTypeResolver(info, moduleExportName),\n\t\tprintServiceTypeResolver(moduleExportName),\n\t\tprintScalarResolver({ name: '_Any', serialize: 'json' }),\n\t\t...scalarResolvers,\n\t]\n\t\t.map(ident(2))\n\t\t.join(',\\n');\n\n\tconst moduleExport = [\n\t\t`export default ${moduleExportName}.$schema({`,\n\t\tmoduleExportBody,\n\t\t'});',\n\t].join('\\n');\n\n\treturn [imports, '', moduleExport].join('\\n');\n}\n\nfunction printScalarResolver(scalar: FederationDirectiveScalar) {\n\treturn `${scalar.name}: BaetaFederation.createFederationScalar('${scalar.serialize}', '${scalar.name}')`;\n}\n\nfunction printServiceTypeResolver(moduleExportName: string) {\n\treturn [\n\t\t`_Service: ${moduleExportName}._Service.$fields({`,\n\t\t` sdl: ${moduleExportName}._Service.sdl.key('sdl'),`,\n\t\t'})',\n\t].join('\\n');\n}\n\nfunction printQueryTypeResolver(info: FederationInfo, moduleExportName: string) {\n\treturn [\n\t\t`Query: ${moduleExportName}.Query.$fields({`,\n\t\tinfo.resolvableEntitiesMap.size > 0 ? printEntityFieldResolver(moduleExportName) : null,\n\t\t` _service: ${moduleExportName}.Query._service.resolve(() => {`,\n\t\t' return { sdl: federationSDL };',\n\t\t' }),',\n\t\t'})',\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n');\n}\n\nfunction printEntityFieldResolver(moduleExportName: string) {\n\treturn [\n\t\t`_entities: ${moduleExportName}.Query._entities.resolve((params) => {`,\n\t\t' const representations = params.args.representations as FederationTypes.EntityRepresentation[];',\n\t\t' return BaetaFederation.resolveEntities(representations, handlersMap satisfies FederationTypes.EntityHandlerMap, params.ctx, params.info);',\n\t\t'}),',\n\t]\n\t\t.map(ident(2))\n\t\t.join('\\n');\n}\n\nfunction getUniqueScalars(\n\tspec: FederationSpec,\n\tincluded: Set<FederationDirectiveName>,\n): FederationDirectiveScalar[] {\n\tconst seen = new Set<string>();\n\tconst scalars: FederationDirectiveScalar[] = [];\n\tfor (const directive of spec.directives) {\n\t\tif (!included.has(directive.name)) continue;\n\t\tif (!directive.scalars) continue;\n\t\tfor (const scalar of directive.scalars) {\n\t\t\tif (seen.has(scalar.name)) continue;\n\t\t\tseen.add(scalar.name);\n\t\t\tscalars.push(scalar);\n\t\t}\n\t}\n\treturn scalars;\n}\nfunction ident(spaces: number) {\n\treturn (str: string) => {\n\t\tconst padding = ' '.repeat(spaces);\n\t\treturn str\n\t\t\t.split('\\n')\n\t\t\t.map((line) => padding + line)\n\t\t\t.join('\\n');\n\t};\n}\n","import type {\n\tFederationDirective,\n\tFederationDirectiveArg,\n\tFederationDirectiveName,\n\tFederationDirectiveScalar,\n\tFederationSpec,\n} from './spec.ts';\n\nexport function printSchemaSpec(spec: FederationSpec, include: Set<FederationDirectiveName>) {\n\tconst directives = spec.directives.filter((d) => include.has(d.name));\n\tconst scalars = pickUniqueScalars(directives);\n\tconst header = `# Federation Specification ${spec.version}`;\n\treturn [\n\t\theader,\n\t\t'',\n\t\t...directives.map(printDirective),\n\t\t'',\n\t\t...scalars.map(printScalar),\n\t\tscalars.length > 0 ? '' : null,\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n');\n}\n\nfunction printDirective(directive: FederationDirective): string {\n\treturn [\n\t\t`directive ${directive.name}${printArgs(directive.args)}`,\n\t\tdirective.locations.length > 0 && directive.repeatable ? 'repeatable' : null,\n\t\tdirective.locations.length > 0 ? `on ${directive.locations.join(' | ')}` : null,\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join(' ');\n}\n\nfunction printArgs(args?: FederationDirectiveArg[]): string {\n\tif (!args || args.length === 0) {\n\t\treturn '';\n\t}\n\treturn `(${args.map(printArg).join(', ')})`;\n}\n\nfunction printArg(arg: FederationDirectiveArg): string {\n\treturn `${arg.name}: ${arg.type}${printArgDefaultValue(arg.defaultValue)}`;\n}\n\nfunction printArgDefaultValue(value?: string | number | boolean): string {\n\tif (value === undefined) {\n\t\treturn '';\n\t}\n\tif (typeof value === 'string') {\n\t\treturn ` = ${JSON.stringify(value)}`;\n\t}\n\treturn ` = ${value}`;\n}\n\nfunction printScalar(scalar: FederationDirectiveScalar): string {\n\treturn `scalar ${scalar.name}`;\n}\n\nfunction pickUniqueScalars(directives: FederationDirective[]): FederationDirectiveScalar[] {\n\tconst seen = new Set<string>();\n\tconst uniqueScalars: FederationDirectiveScalar[] = [];\n\tfor (const directive of directives) {\n\t\tfor (const scalar of directive.scalars ?? []) {\n\t\t\tif (!seen.has(scalar.name)) {\n\t\t\t\tseen.add(scalar.name);\n\t\t\t\tuniqueScalars.push(scalar);\n\t\t\t}\n\t\t}\n\t}\n\treturn uniqueScalars;\n}\n","import type { FederationInfo } from './federation-info.ts';\n\nexport function printSchemaTypes(federationInfo: FederationInfo): string {\n\tconst entities = [...federationInfo.resolvableEntitiesMap.keys()];\n\tconst queryType = [\n\t\t'type Query {',\n\t\t' _service: _Service!',\n\t\tentities.length > 0 ? ' _entities(representations: [_Any!]!): [_Entity]!' : null,\n\t\t'}',\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n');\n\tconst serviceType = 'type _Service { sdl: String! }';\n\tconst anyScalar = 'scalar _Any';\n\tconst unionType = entities.length > 0 ? `union _Entity = ${entities.join(' | ')}` : '';\n\treturn [anyScalar, unionType, serviceType, queryType].filter((s) => s).join('\\n\\n');\n}\n","import type { Source } from '@baeta/util-graphql';\nimport { mergeTypeDefs } from '@graphql-tools/merge';\nimport { parse, print } from 'graphql';\nimport type { FederationInfo } from './federation-info.ts';\nimport type { FederationSpec } from './spec.ts';\n\nexport function printSDL(\n\tspec: FederationSpec,\n\tsources: Source[],\n\tfederationInfo: FederationInfo,\n): string {\n\tconst importList = [...federationInfo.usedDirectiveNames].map((name) => `\"${name}\"`).join(', ');\n\tconst repeatableDirectives = new Set(\n\t\tspec.directives.filter((d) => d.repeatable).map((d) => d.name.replace('@', '')),\n\t);\n\tconst link = `extend schema @link(url: \"https://specs.apollo.dev/federation/v${spec.version}\", import: [${importList}])`;\n\tconst merged = mergeTypeDefs(\n\t\t[parse(link), ...sources.map((s) => s.document).filter((el) => el != null)],\n\t\t{\n\t\t\tuseSchemaDefinition: false,\n\t\t\trepeatableLinkImports: repeatableDirectives,\n\t\t},\n\t);\n\tconst sdl = ['', print(merged), ''].join('\\n');\n\treturn `export default \\`${sdl}\\`;`;\n}\n","// Auto-generated from https://github.com/apollographql/specs\n// Generated on 2026-04-10T23:33:35.550Z\n\nimport type { FederationSpec } from './spec.ts';\n\nexport const federationV2_0Spec = {\n\tversion: '2.0',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_1Spec = {\n\tversion: '2.1',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_2Spec = {\n\tversion: '2.2',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_3Spec = {\n\tversion: '2.3',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_4Spec = {\n\tversion: '2.4',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_5Spec = {\n\tversion: '2.5',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@authenticated',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t},\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requiresScopes',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'scopes',\n\t\t\t\t\ttype: '[[Scope!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Scope',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_6Spec = {\n\tversion: '2.6',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@authenticated',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t},\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@policy',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'policies',\n\t\t\t\t\ttype: '[[Policy!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Policy',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requiresScopes',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'scopes',\n\t\t\t\t\ttype: '[[Scope!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Scope',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_7Spec = {\n\tversion: '2.7',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@authenticated',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t},\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'label',\n\t\t\t\t\ttype: 'String',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@policy',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'policies',\n\t\t\t\t\ttype: '[[Policy!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Policy',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requiresScopes',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'scopes',\n\t\t\t\t\ttype: '[[Scope!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Scope',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_8Spec = {\n\tversion: '2.8',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@authenticated',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t},\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@context',\n\t\t\tlocations: ['OBJECT', 'INTERFACE', 'UNION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@fromContext',\n\t\t\tlocations: ['ARGUMENT_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'field',\n\t\t\t\t\ttype: 'ContextFieldValue',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'ContextFieldValue',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'label',\n\t\t\t\t\ttype: 'String',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@policy',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'policies',\n\t\t\t\t\ttype: '[[Policy!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Policy',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requiresScopes',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'scopes',\n\t\t\t\t\ttype: '[[Scope!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Scope',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationV2_9Spec = {\n\tversion: '2.9',\n\tdirectives: [\n\t\t{\n\t\t\tname: '@authenticated',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t},\n\t\t{\n\t\t\tname: '@composeDirective',\n\t\t\tlocations: ['SCHEMA'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@context',\n\t\t\tlocations: ['OBJECT', 'INTERFACE', 'UNION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@cost',\n\t\t\tlocations: [\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'ENUM',\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'SCALAR',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'weight',\n\t\t\t\t\ttype: 'Int!',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@extends',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t},\n\t\t{\n\t\t\tname: '@external',\n\t\t\tlocations: ['OBJECT', 'FIELD_DEFINITION'],\n\t\t},\n\t\t{\n\t\t\tname: '@fromContext',\n\t\t\tlocations: ['ARGUMENT_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'field',\n\t\t\t\t\ttype: 'ContextFieldValue',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'ContextFieldValue',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@key',\n\t\t\tlocations: ['OBJECT', 'INTERFACE'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resolvable',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@inaccessible',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'OBJECT',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'UNION',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'SCALAR',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@interfaceObject',\n\t\t\tlocations: ['OBJECT'],\n\t\t},\n\t\t{\n\t\t\tname: '@listSize',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'assumedSize',\n\t\t\t\t\ttype: 'Int',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'slicingArguments',\n\t\t\t\t\ttype: '[String!]',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'sizedFields',\n\t\t\t\t\ttype: '[String!]',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'requireOneSlicingArgument',\n\t\t\t\t\ttype: 'Boolean',\n\t\t\t\t\tdefaultValue: true,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@override',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'from',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'label',\n\t\t\t\t\ttype: 'String',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@policy',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'policies',\n\t\t\t\t\ttype: '[[Policy!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Policy',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@provides',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requires',\n\t\t\tlocations: ['FIELD_DEFINITION'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'fields',\n\t\t\t\t\ttype: 'FieldSet!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'FieldSet',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@requiresScopes',\n\t\t\tlocations: ['ENUM', 'FIELD_DEFINITION', 'INTERFACE', 'OBJECT', 'SCALAR'],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'scopes',\n\t\t\t\t\ttype: '[[Scope!]!]!',\n\t\t\t\t},\n\t\t\t],\n\t\t\tscalars: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Scope',\n\t\t\t\t\tserialize: 'string',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: '@shareable',\n\t\t\tlocations: ['FIELD_DEFINITION', 'OBJECT'],\n\t\t\trepeatable: true,\n\t\t},\n\t\t{\n\t\t\tname: '@tag',\n\t\t\tlocations: [\n\t\t\t\t'FIELD_DEFINITION',\n\t\t\t\t'INTERFACE',\n\t\t\t\t'OBJECT',\n\t\t\t\t'UNION',\n\t\t\t\t'ARGUMENT_DEFINITION',\n\t\t\t\t'SCALAR',\n\t\t\t\t'ENUM',\n\t\t\t\t'ENUM_VALUE',\n\t\t\t\t'INPUT_OBJECT',\n\t\t\t\t'INPUT_FIELD_DEFINITION',\n\t\t\t],\n\t\t\targs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'name',\n\t\t\t\t\ttype: 'String!',\n\t\t\t\t},\n\t\t\t],\n\t\t\trepeatable: true,\n\t\t},\n\t],\n} as const satisfies FederationSpec;\n\nexport const federationSpecs = [\n\tfederationV2_0Spec,\n\tfederationV2_1Spec,\n\tfederationV2_2Spec,\n\tfederationV2_3Spec,\n\tfederationV2_4Spec,\n\tfederationV2_5Spec,\n\tfederationV2_6Spec,\n\tfederationV2_7Spec,\n\tfederationV2_8Spec,\n\tfederationV2_9Spec,\n] as const;\n","import type { FederationSpec } from './spec.ts';\nimport { federationSpecs } from './specs.generated.ts';\n\ntype FederationSpecs = (typeof federationSpecs)[number];\n\nexport type FederationVersion = FederationSpecs['version'];\n\nexport type FederationDirectiveNamesByVersion<V extends FederationVersion> = Extract<\n\tFederationSpecs,\n\t{ version: V }\n>['directives'][number]['name'];\n\nexport function findSpecification(version: FederationVersion): FederationSpec {\n\tconst spec = federationSpecs.find((s) => s.version === version);\n\tif (!spec) {\n\t\tthrow new Error(`Unsupported federation version: ${version}`);\n\t}\n\treturn spec;\n}\n","import fs from 'node:fs/promises';\nimport { createPluginV1 } from '@baeta/generator-sdk';\nimport { getSourcesFromSchema, loadSchema } from '@baeta/util-graphql';\nimport { buildFederationInfo } from './lib/federation-info.ts';\nimport { printFederationTypes } from './lib/print-federation-types.ts';\nimport { printHandlersStarter } from './lib/print-handlers-starter.ts';\nimport { printResolvers } from './lib/print-resolvers.ts';\nimport { printSchemaSpec } from './lib/print-schema-spec.ts';\nimport { printSchemaTypes } from './lib/print-schema-types.ts';\nimport { printSDL } from './lib/print-sdl.ts';\nimport type { FederationDirectiveName, FederationSpec } from './lib/spec.ts';\nimport {\n\ttype FederationDirectiveNamesByVersion,\n\ttype FederationVersion,\n\tfindSpecification,\n} from './lib/specs.ts';\n\nconst DEFAULT_MODULE_NAME = 'baeta-federation' as const;\nconst DEFAULT_VERSION = '2.9' as const satisfies FederationVersion;\nconst DEFAULT_DIRECTIVES = [\n\t'@key',\n\t'@external',\n\t'@requires',\n\t'@provides',\n\t'@extends',\n] as const satisfies FederationDirectiveNamesByVersion<'2.0'>[];\n\ntype DefaultFederationVersion = typeof DEFAULT_VERSION;\n\ntype DefaultFederationDirectives = (typeof DEFAULT_DIRECTIVES)[number];\n\n/**\n * Options for the federation plugin. All options are optional and have sensible defaults, so you can just call `federationPlugin()` without any arguments for a good out-of-the-box experience.\n */\nexport interface FederationPluginOptions<\n\tVersion extends FederationVersion = DefaultFederationVersion,\n> {\n\t/**\n\t * Federation version to target. Determines which directives are available for import.\n\t * @defaultValue '2.9'\n\t */\n\tversion?: Version;\n\t/** Directives to include in the generated federation module. Can be either a list of directive names or 'all' to include all available directives for the specified version.\n\t * @defaultValue ['@key', '@external', '@requires', '@provides', '@extends']\n\t */\n\tinclude?:\n\t\t| Exclude<FederationDirectiveNamesByVersion<Version>, DefaultFederationDirectives>[]\n\t\t| 'all';\n\n\t/**\n\t * Custom name for the federation module\n\t * @defaultValue 'baeta-federation'\n\t */\n\tmoduleName?: string;\n}\n\nexport function federationPlugin<const Version extends FederationVersion>(\n\toptions?: FederationPluginOptions<Version>,\n) {\n\treturn createPluginV1({\n\t\tname: 'graphql',\n\t\tactionName: 'GraphQL federation',\n\t\twatch: (generatorOptions, watcher) => {\n\t\t\tconst federationRootDir = getModuleRootDir(generatorOptions.modulesDir, options);\n\t\t\twatcher.ignore(`${federationRootDir}/*.gql`);\n\t\t},\n\t\tgenerate: async (ctx, next) => {\n\t\t\tconst moduleName = options?.moduleName ?? DEFAULT_MODULE_NAME;\n\t\t\tconst specification = findSpecification(options?.version ?? DEFAULT_VERSION);\n\t\t\tconst directiveNames = buildDirectiveNames(specification, options?.include);\n\n\t\t\tconst federationRootDir = getModuleRootDir(ctx.generatorOptions.modulesDir, options);\n\t\t\tconst federationTypesFilePath = `${ctx.generatorOptions.typesDir}/federation.ts`;\n\t\t\tconst sdlFilePath = `${federationRootDir}/federation-sdl.ts`;\n\t\t\tconst schemaSpecFilePath = `${federationRootDir}/federation-spec.gql`;\n\t\t\tconst schemaTypesFilePath = `${federationRootDir}/federation-types.gql`;\n\t\t\tconst entityHandlersFilePath = `${federationRootDir}/entity-handlers.ts`;\n\t\t\tconst resolversFilePath = `${federationRootDir}/index.ts`;\n\n\t\t\tconst schemaSpecFile = ctx.fileManager.createAndAdd(\n\t\t\t\tschemaSpecFilePath,\n\t\t\t\tprintSchemaSpec(specification, directiveNames),\n\t\t\t\t'federation',\n\t\t\t);\n\n\t\t\tawait Promise.all([\n\t\t\t\tawait schemaSpecFile.write(),\n\t\t\t\tfs.unlink(schemaTypesFilePath).catch(() => {}),\n\t\t\t]);\n\n\t\t\tconst { outputSchemaAst } = await loadSchema(\n\t\t\t\tctx.generatorOptions.schemas,\n\t\t\t\tctx.generatorOptions.cwd,\n\t\t\t\tctx.generatorOptions.loaders,\n\t\t\t);\n\t\t\tconst sources = getSourcesFromSchema(outputSchemaAst).filter((source) => {\n\t\t\t\treturn source.location !== schemaSpecFilePath && source.location !== schemaTypesFilePath;\n\t\t\t});\n\n\t\t\tconst federationInfo = buildFederationInfo(specification, sources);\n\n\t\t\tctx.fileManager.createAndAdd(\n\t\t\t\tsdlFilePath,\n\t\t\t\tprintSDL(specification, sources, federationInfo),\n\t\t\t\t'federation',\n\t\t\t);\n\n\t\t\tctx.fileManager.createAndAdd(\n\t\t\t\tfederationTypesFilePath,\n\t\t\t\tprintFederationTypes(outputSchemaAst, federationInfo, {\n\t\t\t\t\textension: ctx.generatorOptions.importExtension,\n\t\t\t\t\tmodulesDir: ctx.generatorOptions.modulesDir,\n\t\t\t\t\ttypesDir: ctx.generatorOptions.typesDir,\n\t\t\t\t}),\n\t\t\t\t'federation',\n\t\t\t);\n\n\t\t\tctx.fileManager.createAndAdd(\n\t\t\t\tresolversFilePath,\n\t\t\t\tprintResolvers(specification, federationInfo, {\n\t\t\t\t\tmoduleName,\n\t\t\t\t\ttypesDir: ctx.generatorOptions.typesDir,\n\t\t\t\t\tfederationRootDir,\n\t\t\t\t\textension: ctx.generatorOptions.importExtension,\n\t\t\t\t\tmoduleDefinitionName: ctx.generatorOptions.moduleDefinitionName,\n\t\t\t\t\tincludedDirectiveNames: directiveNames,\n\t\t\t\t}),\n\t\t\t\t'federation',\n\t\t\t);\n\n\t\t\tctx.fileManager.createAndAdd(\n\t\t\t\tentityHandlersFilePath,\n\t\t\t\tprintHandlersStarter({\n\t\t\t\t\ttypesDir: ctx.generatorOptions.typesDir,\n\t\t\t\t\tfederationRootDir,\n\t\t\t\t\textension: ctx.generatorOptions.importExtension,\n\t\t\t\t}),\n\t\t\t\t'federation',\n\t\t\t\t{\n\t\t\t\t\tdisableOverwrite: true,\n\t\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\t\tdisableEslintHeader: true,\n\t\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst schemaTypesFile = ctx.fileManager.createAndAdd(\n\t\t\t\tschemaTypesFilePath,\n\t\t\t\tprintSchemaTypes(federationInfo),\n\t\t\t\t'federation',\n\t\t\t);\n\t\t\tawait schemaTypesFile.write();\n\n\t\t\treturn next();\n\t\t},\n\t});\n}\n\nfunction getModuleRootDir<Version extends FederationVersion>(\n\tmodulesDir: string,\n\toptions?: FederationPluginOptions<Version>,\n): string {\n\treturn `${modulesDir}/${options?.moduleName ?? DEFAULT_MODULE_NAME}`;\n}\n\nfunction buildDirectiveNames(\n\tspec: FederationSpec,\n\tinclude: FederationDirectiveName[] | 'all' = [],\n): Set<FederationDirectiveName> {\n\tif (include === 'all') {\n\t\treturn new Set(spec.directives.map((d) => d.name));\n\t}\n\treturn new Set([...DEFAULT_DIRECTIVES, ...include]);\n}\n"],"mappings":"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ACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAs8CD;CACA;EAn8CA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAq0CD;CACA;EAl0CA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAmsCD;CACA;EAhsCA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EA6jCD;CACA;EA1jCA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAu7BD;CACA;EAp7BA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EA6xBD;CACA;EA1xBA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAmnBD;CACA;EAhnBA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAqcD;CACA;EAlcA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAU;KAAa;KAAQ;IAC3C,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,sBAAsB;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EA6PD;CACA;EA1PA,SAAS;EACT,YAAY;GACX;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAU;KAAa;KAAQ;IAC3C,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,mBAAmB;IACzC;GACD;IACC,MAAM;IACN,WAAW,CAAC,sBAAsB;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,UAAU,YAAY;IAClC,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,cAAc;KACd,CACD;IACD,YAAY;IACZ,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,SAAS;IACrB;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM;KACL;MACC,MAAM;MACN,MAAM;MACN;KACD;MACC,MAAM;MACN,MAAM;MACN;KACD;MACC,MAAM;MACN,MAAM;MACN;KACD;MACC,MAAM;MACN,MAAM;MACN,cAAc;MACd;KACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,EACD;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,mBAAmB;IAC/B,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW;KAAC;KAAQ;KAAoB;KAAa;KAAU;KAAS;IACxE,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,SAAS,CACR;KACC,MAAM;KACN,WAAW;KACX,CACD;IACD;GACD;IACC,MAAM;IACN,WAAW,CAAC,oBAAoB,SAAS;IACzC,YAAY;IACZ;GACD;IACC,MAAM;IACN,WAAW;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD,MAAM,CACL;KACC,MAAM;KACN,MAAM;KACN,CACD;IACD,YAAY;IACZ;GACD;EAaD;CACA;;;AC7jDD,SAAgB,kBAAkB,SAA4C;CAC7E,MAAM,OAAO,gBAAgB,MAAM,MAAM,EAAE,YAAY,QAAQ;AAC/D,KAAI,CAAC,KACJ,OAAM,IAAI,MAAM,mCAAmC,UAAU;AAE9D,QAAO;;;;ACAR,MAAM,sBAAsB;AAC5B,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;CAC1B;CACA;CACA;CACA;CACA;CACA;AA+BD,SAAgB,iBACf,SACC;AACD,QAAO,eAAe;EACrB,MAAM;EACN,YAAY;EACZ,QAAQ,kBAAkB,YAAY;GACrC,MAAM,oBAAoB,iBAAiB,iBAAiB,YAAY,QAAQ;AAChF,WAAQ,OAAO,GAAG,kBAAkB,QAAQ;;EAE7C,UAAU,OAAO,KAAK,SAAS;GAC9B,MAAM,aAAa,SAAS,cAAc;GAC1C,MAAM,gBAAgB,kBAAkB,SAAS,WAAW,gBAAgB;GAC5E,MAAM,iBAAiB,oBAAoB,eAAe,SAAS,QAAQ;GAE3E,MAAM,oBAAoB,iBAAiB,IAAI,iBAAiB,YAAY,QAAQ;GACpF,MAAM,0BAA0B,GAAG,IAAI,iBAAiB,SAAS;GACjE,MAAM,cAAc,GAAG,kBAAkB;GACzC,MAAM,qBAAqB,GAAG,kBAAkB;GAChD,MAAM,sBAAsB,GAAG,kBAAkB;GACjD,MAAM,yBAAyB,GAAG,kBAAkB;GACpD,MAAM,oBAAoB,GAAG,kBAAkB;GAE/C,MAAM,iBAAiB,IAAI,YAAY,aACtC,oBACA,gBAAgB,eAAe,eAAe,EAC9C,aACA;AAED,SAAM,QAAQ,IAAI,CACjB,MAAM,eAAe,OAAO,EAC5B,GAAG,OAAO,oBAAoB,CAAC,YAAY,GAAG,CAC9C,CAAC;GAEF,MAAM,EAAE,oBAAoB,MAAM,WACjC,IAAI,iBAAiB,SACrB,IAAI,iBAAiB,KACrB,IAAI,iBAAiB,QACrB;GACD,MAAM,UAAU,qBAAqB,gBAAgB,CAAC,QAAQ,WAAW;AACxE,WAAO,OAAO,aAAa,sBAAsB,OAAO,aAAa;KACpE;GAEF,MAAM,iBAAiB,oBAAoB,eAAe,QAAQ;AAElE,OAAI,YAAY,aACf,aACA,SAAS,eAAe,SAAS,eAAe,EAChD,aACA;AAED,OAAI,YAAY,aACf,yBACA,qBAAqB,iBAAiB,gBAAgB;IACrD,WAAW,IAAI,iBAAiB;IAChC,YAAY,IAAI,iBAAiB;IACjC,UAAU,IAAI,iBAAiB;IAC/B,CAAC,EACF,aACA;AAED,OAAI,YAAY,aACf,mBACA,eAAe,eAAe,gBAAgB;IAC7C;IACA,UAAU,IAAI,iBAAiB;IAC/B;IACA,WAAW,IAAI,iBAAiB;IAChC,sBAAsB,IAAI,iBAAiB;IAC3C,wBAAwB;IACxB,CAAC,EACF,aACA;AAED,OAAI,YAAY,aACf,wBACA,qBAAqB;IACpB,UAAU,IAAI,iBAAiB;IAC/B;IACA,WAAW,IAAI,iBAAiB;IAChC,CAAC,EACF,cACA;IACC,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,+BAA+B;IAC/B,CACD;AAOD,SALwB,IAAI,YAAY,aACvC,qBACA,iBAAiB,eAAe,EAChC,aAEoB,CAAC,OAAO;AAE7B,UAAO,MAAM;;EAEd,CAAC;;AAGH,SAAS,iBACR,YACA,SACS;AACT,QAAO,GAAG,WAAW,GAAG,SAAS,cAAc;;AAGhD,SAAS,oBACR,MACA,UAA6C,EAAE,EAChB;AAC/B,KAAI,YAAY,MACf,QAAO,IAAI,IAAI,KAAK,WAAW,KAAK,MAAM,EAAE,KAAK,CAAC;AAEnD,QAAO,IAAI,IAAI,CAAC,GAAG,oBAAoB,GAAG,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baeta/plugin-federation",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "2.0.0-next.13",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"baeta",
|
|
6
6
|
"graphql",
|
|
@@ -25,10 +25,72 @@
|
|
|
25
25
|
"url": "https://github.com/andreisergiu98"
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"types": "dist/index.d.ts",
|
|
28
35
|
"files": [
|
|
36
|
+
"dist",
|
|
29
37
|
"package.json"
|
|
30
38
|
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "builder build",
|
|
41
|
+
"check:deps": "builder check-deps",
|
|
42
|
+
"generate-specs": "node scripts/generate-specs.ts",
|
|
43
|
+
"prepack": "builder prepare",
|
|
44
|
+
"postpack": "builder prepare --restore",
|
|
45
|
+
"test": "builder test",
|
|
46
|
+
"test:circular": "builder test-circular",
|
|
47
|
+
"types": "tsc --noEmit"
|
|
48
|
+
},
|
|
49
|
+
"ava": {
|
|
50
|
+
"extensions": [
|
|
51
|
+
"ts"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@baeta/generator-sdk": "^2.0.0-next.5",
|
|
56
|
+
"@baeta/util-graphql": "^2.0.0-next.2",
|
|
57
|
+
"@baeta/util-path": "^2.0.0-next.4",
|
|
58
|
+
"@graphql-tools/merge": "^9.1.9"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@baeta/builder": "^0.0.0",
|
|
62
|
+
"@baeta/testing": "^0.0.0",
|
|
63
|
+
"@baeta/tsconfig": "^0.0.0",
|
|
64
|
+
"@types/node": "^22.19.17",
|
|
65
|
+
"graphql": "^16.6.0",
|
|
66
|
+
"typescript": "^6.0.0"
|
|
67
|
+
},
|
|
68
|
+
"peerDependencies": {
|
|
69
|
+
"graphql": "^16.6.0"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=22.20.0"
|
|
73
|
+
},
|
|
31
74
|
"publishConfig": {
|
|
32
|
-
"access": "public"
|
|
75
|
+
"access": "public",
|
|
76
|
+
"exports": {
|
|
77
|
+
".": {
|
|
78
|
+
"types": "./dist/index.d.ts",
|
|
79
|
+
"default": "./dist/index.js"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"typedocOptions": {
|
|
84
|
+
"entryPoints": [
|
|
85
|
+
"./index.ts"
|
|
86
|
+
],
|
|
87
|
+
"readme": "none",
|
|
88
|
+
"tsconfig": "./tsconfig.json",
|
|
89
|
+
"sort": [
|
|
90
|
+
"kind",
|
|
91
|
+
"instance-first",
|
|
92
|
+
"required-first",
|
|
93
|
+
"alphabetical-ignoring-documents"
|
|
94
|
+
]
|
|
33
95
|
}
|
|
34
|
-
}
|
|
96
|
+
}
|