@soda-gql/core 0.5.0 → 0.5.2

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["inner: VarRefInner","proxy: T","value","field","curr: Readonly<{ modifier: string; type: TypeNode }>","fieldPathContext: { current: FieldPath | null }","newSegment: FieldPathSegment","cacheMap: CacheMap","factory: AnyFieldSelectionFactory","factoryReturn: AnyFieldSelectionFactoryReturn<TAlias>","cache: { value: T } | null","promise: Promise<void> | null","define","define","cache: TValue | null","lazyCreateEvaluationGenerator","lazyEvaluateSync","define","define","fragmentUsageContext: { current: FragmentUsageRecord[] | null }","usages: FragmentUsageRecord[]","defaultMetadataAdapter: DefaultMetadataAdapter","operationTypeName: TTypeName | null","fragmentMetadataResults: (TFragmentMetadata | undefined | Promise<TFragmentMetadata>)[]","fragmentMetaInfos: FragmentMetaInfo<TFragmentMetadata>[]","elementComposer: GqlElementComposer<typeof context>"],"sources":["../src/types/type-foundation/var-ref.ts","../src/composer/build-document.ts","../src/composer/colocate.ts","../src/composer/field-path-context.ts","../src/utils/map-values.ts","../src/composer/fields-builder.ts","../src/types/element/lazy-evaluator.ts","../src/types/element/gql-element.ts","../src/types/element/fragment.ts","../src/types/element/operation.ts","../src/composer/fragment-usage-context.ts","../src/composer/input.ts","../src/composer/fragment.ts","../src/types/metadata/adapter.ts","../src/composer/operation.ts","../src/composer/var-builder.ts","../src/composer/gql-composer.ts"],"sourcesContent":["import type { ConstValue } from \"./const-value\";\nimport type { TypeProfile } from \"./type-profile\";\n\nexport interface AnyVarRefMeta {\n readonly profile: TypeProfile.WithMeta;\n readonly signature: unknown;\n}\n\n/**\n * A nested value that can contain:\n * - Primitive ConstValue (string, number, boolean, null, undefined)\n * - VarRef at any nesting level\n * - Objects with NestedValue fields\n * - Arrays of NestedValue\n */\nexport type NestedValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | { readonly [key: string]: NestedValueElement }\n | readonly NestedValueElement[];\n\ntype NestedValueElement =\n | string\n | number\n | boolean\n | null\n | undefined\n | AnyVarRef\n | { readonly [key: string]: NestedValueElement }\n | readonly NestedValueElement[];\n\nexport type VarRefInner =\n | {\n type: \"variable\";\n name: string;\n }\n | {\n type: \"nested-value\";\n value: NestedValue;\n };\n\nexport type AnyVarRef = VarRef<any>;\n\ndeclare const __VAR_REF_BRAND__: unique symbol;\nexport class VarRef<TMeta extends AnyVarRefMeta> {\n declare readonly [__VAR_REF_BRAND__]: TMeta;\n\n constructor(private readonly inner: VarRefInner) {}\n\n static getInner(varRef: AnyVarRef): VarRefInner {\n return varRef.inner;\n }\n}\n\nexport const isVarRef = (value: unknown): value is AnyVarRef => {\n return typeof value === \"object\" && value !== null && value instanceof VarRef;\n};\n\n/**\n * Recursively checks if a NestedValue contains any VarRef.\n * Used by getVarRefValue to determine if it's safe to return as ConstValue.\n */\nexport const hasVarRefInside = (value: NestedValueElement): boolean => {\n if (isVarRef(value)) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some(hasVarRefInside);\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.values(value).some(hasVarRefInside);\n }\n\n return false;\n};\n\nexport const createVarRefFromVariable = <TProfile extends TypeProfile.WithMeta>(name: string) => {\n return new VarRef<TypeProfile.AssigningVarRefMeta<TProfile>>({ type: \"variable\", name });\n};\n\nexport const createVarRefFromNestedValue = <TProfile extends TypeProfile.WithMeta>(value: NestedValue) => {\n return new VarRef<TypeProfile.AssigningVarRefMeta<TProfile>>({ type: \"nested-value\", value });\n};\n\nexport const getVarRefInner = (varRef: AnyVarRef): VarRefInner => {\n return VarRef.getInner(varRef);\n};\n\n/**\n * Get the variable name from a VarRef.\n * Throws if the VarRef contains a nested-value instead of a variable reference.\n */\nexport const getVarRefName = (varRef: AnyVarRef): string => {\n const inner = VarRef.getInner(varRef);\n if (inner.type !== \"variable\") {\n throw new Error(\"Expected variable reference, got nested-value\");\n }\n return inner.name;\n};\n\n/**\n * Get the const value from a VarRef.\n * Throws if the VarRef contains a variable reference instead of a nested-value,\n * or if the nested-value contains any VarRef inside.\n */\nexport const getVarRefValue = (varRef: AnyVarRef): ConstValue => {\n const inner = VarRef.getInner(varRef);\n if (inner.type !== \"nested-value\") {\n throw new Error(\"Expected nested-value, got variable reference\");\n }\n if (hasVarRefInside(inner.value)) {\n throw new Error(\"Cannot get const value: nested-value contains VarRef\");\n }\n return inner.value as ConstValue;\n};\n\n// ============================================================================\n// Path Types and Utilities\n// ============================================================================\n\n/**\n * Path segment types for navigating nested values.\n */\nexport type PathSegment = string;\n\n/**\n * Proxy type that records property accesses.\n */\nexport type SelectableProxy<T> = T;\n\n/**\n * Type-safe path builder function.\n * Used with getNameAt and getValueAt helpers.\n */\nexport type Selector<T, U> = (proxy: T) => U;\n\ntype ProxyInner = {\n readonly varInner: VarRefInner | { type: \"virtual\"; varName: string; varSegments: readonly PathSegment[] };\n readonly segments: readonly PathSegment[];\n};\n\nconst SelectableProxyInnerRegistry = new WeakMap<any, ProxyInner>();\nconst getSelectableProxyInner = (proxy: any): ProxyInner => {\n const inner = SelectableProxyInnerRegistry.get(proxy);\n if (!inner) {\n throw new Error(`Proxy inner not found`);\n }\n return inner;\n};\n\nconst createSelectableProxy = <T>(current: ProxyInner): T => {\n const proxy: T = new Proxy(Object.create(null), {\n get(_, property) {\n if (typeof property === \"symbol\") {\n throw new Error(`Prohibited property access: ${String(property)}`);\n }\n const nextSegments = [...current.segments, property];\n\n if (current.varInner.type === \"virtual\") {\n return createSelectableProxy({\n varInner: current.varInner,\n segments: nextSegments,\n });\n }\n\n if (current.varInner.type === \"variable\") {\n return createSelectableProxy({\n varInner: { type: \"virtual\", varName: current.varInner.name, varSegments: nextSegments },\n segments: nextSegments,\n });\n }\n\n if (typeof current.varInner.value === \"object\" && current.varInner.value !== null) {\n const value = (current.varInner.value as { [key: string]: NestedValueElement })[property];\n return createSelectableProxy({\n varInner: isVarRef(value) ? getVarRefInner(value) : { type: \"nested-value\", value },\n segments: nextSegments,\n });\n }\n\n throw new Error(`Cannot access children of primitive value at path [${current.segments.join(\".\")}]`);\n },\n });\n\n SelectableProxyInnerRegistry.set(proxy, current);\n\n return proxy;\n};\n\n/**\n * Get the variable name from a VarRef at a specific path.\n *\n * @param varRef - The VarRef containing a nested-value\n * @param selector - Path builder function, e.g., p => p.user.age\n * @returns The variable name at the specified path\n * @throws If path doesn't lead to a VarRef with type \"variable\"\n *\n * @example\n * const ref = createVarRefFromNestedValue({\n * user: { age: someVariableRef }\n * });\n * getNameAt(ref, p => p.user.age); // returns the variable name\n */\nexport const getNameAt = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: TypeProfile.Type<T[\"profile\"]>) => U,\n): string => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is inside a variable`);\n }\n\n if (inner.varInner.type !== \"variable\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a variable`);\n }\n\n return inner.varInner.name;\n};\n\n/**\n * Get the const value from a nested-value VarRef at a specific path.\n *\n * @param varRef - The VarRef containing a nested-value\n * @param pathFn - Path builder function, e.g., p => p.user.name\n * @returns The const value at the specified path\n * @throws If path leads to a VarRef or if value contains VarRef inside\n *\n * @example\n * const ref = createVarRefFromNestedValue({\n * user: { name: \"Alice\", age: someVariableRef }\n * });\n * getValueAt(ref, p => p.user.name); // returns \"Alice\"\n */\nexport const getValueAt = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: SelectableProxy<TypeProfile.Type<T[\"profile\"]>>) => U,\n): U => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is inside a variable`);\n }\n\n if (inner.varInner.type !== \"nested-value\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a nested-value`);\n }\n\n if (hasVarRefInside(inner.varInner.value)) {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] contains nested VarRef`);\n }\n\n return inner.varInner.value as U;\n};\n\nexport const getVariablePath = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: SelectableProxy<TypeProfile.Type<T[\"profile\"]>>) => U,\n): readonly PathSegment[] => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n return [`$${inner.varInner.varName}`, ...inner.segments.slice(inner.varInner.varSegments.length)];\n }\n\n if (inner.varInner.type === \"variable\") {\n return [`$${inner.varInner.name}`];\n }\n\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a variable or inside a variable`);\n};\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport {\n type ArgumentNode,\n type ConstObjectFieldNode,\n type ConstValueNode,\n type DocumentNode,\n type FieldNode,\n type InlineFragmentNode,\n Kind,\n type NamedTypeNode,\n type ObjectFieldNode,\n OperationTypeNode,\n type TypeNode,\n type ValueNode,\n type VariableDefinitionNode,\n} from \"graphql\";\nimport {\n type AnyAssignableInput,\n type AnyAssignableInputValue,\n type AnyFields,\n type AnyNestedUnion,\n type InferFields,\n VarRef,\n} from \"../types/fragment\";\nimport type { AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../types/schema\";\nimport type { ConstValue, InputTypeSpecifiers, TypeModifier } from \"../types/type-foundation\";\n\nexport const buildArgumentValue = (value: AnyAssignableInputValue): ValueNode | null => {\n if (value === undefined) {\n return null;\n }\n\n if (value === null) {\n return {\n kind: Kind.NULL,\n };\n }\n\n if (value instanceof VarRef) {\n const inner = VarRef.getInner(value);\n if (inner.type === \"variable\") {\n return {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: inner.name },\n };\n }\n\n if (inner.type === \"nested-value\") {\n // Recursively process the nested value\n // This handles VarRefs inside the nested structure\n return buildArgumentValue(inner.value as AnyAssignableInputValue);\n }\n\n throw new Error(`Unknown var ref type: ${inner satisfies never}`);\n }\n\n if (Array.isArray(value)) {\n return {\n kind: Kind.LIST,\n values: value.map((item) => buildArgumentValue(item)).filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"object\") {\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(value)\n .map(([key, value]): ObjectFieldNode | null => {\n const valueNode = buildArgumentValue(value);\n return valueNode\n ? {\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: key },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"string\") {\n return {\n kind: Kind.STRING,\n value,\n };\n }\n\n if (typeof value === \"number\") {\n // Distinguish between INT and FLOAT\n const isFloat = !Number.isInteger(value) || value.toString().includes(\".\");\n return {\n kind: isFloat ? Kind.FLOAT : Kind.INT,\n value: value.toString(),\n };\n }\n\n if (typeof value === \"boolean\") {\n return {\n kind: Kind.BOOLEAN,\n value,\n };\n }\n\n throw new Error(`Unknown value type: ${typeof (value satisfies never)}`);\n};\n\nconst buildArguments = (args: AnyAssignableInput): ArgumentNode[] =>\n Object.entries(args ?? {})\n .map(([name, value]): ArgumentNode | null => {\n const valueNode = buildArgumentValue(value);\n return valueNode\n ? {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: name },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null);\n\nconst buildUnionSelection = (union: AnyNestedUnion): InlineFragmentNode[] =>\n Object.entries(union)\n .map(([typeName, object]): InlineFragmentNode | null => {\n return object\n ? {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: {\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: typeName },\n },\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: buildField(object),\n },\n }\n : null;\n })\n .filter((item) => item !== null);\n\nconst buildField = (field: AnyFields): FieldNode[] =>\n Object.entries(field).map(\n ([alias, { args, field, object, union }]): FieldNode => ({\n kind: Kind.FIELD,\n name: { kind: Kind.NAME, value: field },\n alias: alias !== field ? { kind: Kind.NAME, value: alias } : undefined,\n arguments: buildArguments(args),\n selectionSet: object\n ? {\n kind: Kind.SELECTION_SET,\n selections: buildField(object),\n }\n : union\n ? {\n kind: Kind.SELECTION_SET,\n selections: buildUnionSelection(union),\n }\n : undefined,\n }),\n );\n\nexport const buildConstValueNode = (value: ConstValue): ConstValueNode | null => {\n if (value === undefined) {\n return null;\n }\n\n if (value === null) {\n return { kind: Kind.NULL };\n }\n\n if (typeof value === \"string\") {\n return { kind: Kind.STRING, value };\n }\n\n if (typeof value === \"boolean\") {\n return { kind: Kind.BOOLEAN, value };\n }\n\n if (typeof value === \"number\") {\n // Distinguish between INT and FLOAT\n const isFloat = !Number.isInteger(value) || value.toString().includes(\".\");\n return { kind: isFloat ? Kind.FLOAT : Kind.INT, value: value.toString() };\n }\n\n if (Array.isArray(value)) {\n return {\n kind: Kind.LIST,\n values: value.map((item) => buildConstValueNode(item)).filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"object\") {\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(value)\n .map(([key, value]): ConstObjectFieldNode | null => {\n const valueNode = buildConstValueNode(value);\n return valueNode\n ? {\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: key },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null),\n };\n }\n\n throw new Error(`Unknown value type: ${typeof (value satisfies never)}`);\n};\n\nexport const buildWithTypeModifier = (modifier: TypeModifier, buildType: () => NamedTypeNode): TypeNode => {\n const baseType = buildType();\n\n if (modifier === \"?\") {\n return baseType;\n }\n\n if (modifier === \"!\") {\n return { kind: Kind.NON_NULL_TYPE, type: baseType };\n }\n\n // Validate modifier format: must start with ? or !, followed by []? or []! pairs\n // Valid patterns: \"?\", \"!\", \"?[]?\", \"?[]!\", \"![]?\", \"![]!\", \"?[]?[]?\", etc.\n const validModifierPattern = /^[?!](\\[\\][?!])*$/;\n if (!validModifierPattern.test(modifier)) {\n throw new Error(`Unknown modifier: ${modifier}`);\n }\n\n // New format: starts with inner type modifier (? or !), then []? or []! pairs\n // e.g., \"?[]?\" = nullable list of nullable, \"![]!\" = non-null list of non-null\n let curr: Readonly<{ modifier: string; type: TypeNode }> = {\n modifier,\n type: baseType,\n };\n\n while (curr.modifier.length > 0) {\n // Handle inner type modifier (? or !)\n if (curr.modifier.startsWith(\"?\")) {\n // Nullable inner type - type stays as-is\n curr = {\n modifier: curr.modifier.slice(1),\n type: curr.type,\n };\n continue;\n }\n\n if (curr.modifier.startsWith(\"!\")) {\n // Non-null inner type\n curr = {\n modifier: curr.modifier.slice(1),\n type: curr.type.kind === Kind.NON_NULL_TYPE ? curr.type : { kind: Kind.NON_NULL_TYPE, type: curr.type },\n };\n continue;\n }\n\n // Handle list modifiers ([]? or []!)\n if (curr.modifier.startsWith(\"[]?\")) {\n // Nullable list\n curr = {\n modifier: curr.modifier.slice(3),\n type: { kind: Kind.LIST_TYPE, type: curr.type },\n };\n continue;\n }\n\n if (curr.modifier.startsWith(\"[]!\")) {\n // Non-null list\n curr = {\n modifier: curr.modifier.slice(3),\n type: {\n kind: Kind.NON_NULL_TYPE,\n type: { kind: Kind.LIST_TYPE, type: curr.type },\n },\n };\n continue;\n }\n\n throw new Error(`Unknown modifier: ${curr.modifier}`);\n }\n\n return curr.type;\n};\n\nconst buildVariables = (variables: InputTypeSpecifiers): VariableDefinitionNode[] => {\n return Object.entries(variables).map(\n ([name, ref]): VariableDefinitionNode => ({\n kind: Kind.VARIABLE_DEFINITION,\n variable: { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: name } },\n defaultValue: (ref.defaultValue && buildConstValueNode(ref.defaultValue.default)) || undefined,\n type: buildWithTypeModifier(ref.modifier, () => ({\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: ref.name },\n })),\n }),\n );\n};\n\nexport const buildOperationTypeNode = (operation: OperationType): OperationTypeNode => {\n switch (operation) {\n case \"query\":\n return OperationTypeNode.QUERY;\n case \"mutation\":\n return OperationTypeNode.MUTATION;\n case \"subscription\":\n return OperationTypeNode.SUBSCRIPTION;\n default:\n throw new Error(`Unknown operation type: ${operation}`);\n }\n};\n\n// Overloaded function signatures for flexible usage\nexport const buildDocument = <\n TSchema extends AnyGraphqlSchema,\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers,\n>(options: {\n operationName: string;\n operationType: OperationType;\n variables: TVarDefinitions;\n fields: TFields;\n}): TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVarDefinitions>> => {\n const { operationName, operationType, variables, fields } = options;\n return {\n kind: Kind.DOCUMENT,\n definitions: [\n {\n kind: Kind.OPERATION_DEFINITION,\n operation: buildOperationTypeNode(operationType),\n name: { kind: Kind.NAME, value: operationName },\n variableDefinitions: buildVariables(variables),\n // directives: directives || [],\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: buildField(fields),\n },\n },\n ],\n } satisfies DocumentNode as TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVarDefinitions>>;\n};\n","import type { AnyFields } from \"../types/fragment\";\nimport type { UnionToIntersection } from \"../utils/type-utils\";\n\n/**\n * Type for colocated field entries.\n * Maps labels to their corresponding field selections.\n */\nexport type ColocatedEntries = Record<string, AnyFields>;\n\n/**\n * Result type for colocated fields.\n * Merges all prefixed entries into a single object.\n */\nexport type ColocatedFields<TEntries extends ColocatedEntries> = UnionToIntersection<\n {\n [KPrefix in keyof TEntries]: KPrefix extends string\n ? {\n [KField in keyof TEntries[KPrefix] as KField extends string\n ? `${KPrefix}_${KField}`\n : never]: TEntries[KPrefix][KField];\n }\n : never;\n }[keyof TEntries]\n>;\n\n/**\n * Creates a $colocate helper function for fragment colocation.\n *\n * $colocate takes an object of { label: fields } and applies prefix-based\n * aliasing to each entry. This mirrors the structure of createExecutionResultParser\n * from @soda-gql/colocation-tools.\n *\n * @example\n * ```typescript\n * // In operation definition\n * query.operation({\n * name: \"GetData\",\n * fields: ({ $ }) => $colocate({\n * userCard: userCardFragment.spread({ userId: $.userId }),\n * posts: postsFragment.spread({ userId: $.userId }),\n * }),\n * });\n *\n * // In parser definition (same labels)\n * createExecutionResultParser({\n * userCard: userCardProjection,\n * posts: postsProjection,\n * });\n * ```\n */\nexport const createColocateHelper = () => {\n /**\n * Colocate multiple field selections with labeled prefixes.\n *\n * @param entries - Object mapping labels to field selections\n * @returns Merged object of all prefixed field entries\n */\n const $colocate = <TEntries extends ColocatedEntries>(entries: TEntries): ColocatedFields<TEntries> =>\n Object.fromEntries(\n Object.entries(entries).flatMap(([label, fields]) =>\n Object.entries(fields).map(([key, value]) => [`${label}_${key}`, value] as const),\n ),\n ) as ColocatedFields<TEntries>;\n\n return $colocate;\n};\n\nexport type ColocateHelper = ReturnType<typeof createColocateHelper>;\n","/**\n * Field path context using shared value container pattern.\n *\n * This module tracks the current field path during field building,\n * similar to how React tracks the current fiber.\n * No changes to field builder arguments are needed - use getCurrentFieldPath() to access.\n */\n\n/**\n * A segment in the field path.\n */\nexport type FieldPathSegment = {\n /** The field name */\n readonly field: string;\n /** The parent type name */\n readonly parent: string;\n /** Whether this field returns a list */\n readonly isList: boolean;\n};\n\n/**\n * Complete field path from root to current position.\n */\nexport type FieldPath = {\n /** Full path string (e.g., \"$.user.posts[].author\") */\n readonly full: string;\n /** Individual path segments */\n readonly segments: readonly FieldPathSegment[];\n};\n\n/**\n * Shared mutable container for field path context.\n * Only synchronous access is supported.\n */\nconst fieldPathContext: { current: FieldPath | null } = {\n current: null,\n};\n\n/**\n * Get the current field path.\n * Returns null if not in a field building context.\n *\n * @example\n * ```typescript\n * import { getCurrentFieldPath } from '@soda-gql/core';\n *\n * // Inside a field builder or model spread:\n * const path = getCurrentFieldPath();\n * console.log(path?.full); // \"$.user.posts[].author\"\n * ```\n */\nexport const getCurrentFieldPath = (): FieldPath | null => fieldPathContext.current;\n\n/**\n * Run a function with a specific field path context.\n * Restores the previous path after the function completes.\n *\n * @internal\n */\nexport const withFieldPath = <T>(path: FieldPath, fn: () => T): T => {\n const previousPath = fieldPathContext.current;\n fieldPathContext.current = path;\n try {\n return fn();\n } finally {\n fieldPathContext.current = previousPath;\n }\n};\n\n/**\n * Append a new segment to the current path.\n *\n * @internal\n */\nexport const appendToPath = (\n parent: FieldPath | null,\n segment: { field: string; parentType: string; isList: boolean },\n): FieldPath => {\n const listSuffix = segment.isList ? \"[]\" : \"\";\n const newSegment: FieldPathSegment = {\n field: segment.field,\n parent: segment.parentType,\n isList: segment.isList,\n };\n\n if (!parent) {\n return {\n full: `$.${segment.field}${listSuffix}`,\n segments: [newSegment],\n };\n }\n\n return {\n full: `${parent.full}.${segment.field}${listSuffix}`,\n segments: [...parent.segments, newSegment],\n };\n};\n\n/**\n * Check if a type specifier represents a list type.\n * Matches patterns like \"Type:![]!\", \"Type:![]?\", \"Type:?[]!\", etc.\n *\n * @internal\n */\nexport const isListType = (typeString: string): boolean => {\n return typeString.includes(\"[]\");\n};\n","type ArgEntries<T extends object> = { [K in keyof T]-?: [value: T[K], key: K] }[keyof T];\ntype Entries<T extends object> = { [K in keyof T]: [key: K, value: T[K]] }[keyof T];\n\nexport function mapValues<TObject extends object, TMappedValue>(\n obj: TObject,\n fn: (...args: ArgEntries<TObject>) => TMappedValue,\n): {\n [K in keyof TObject]: TMappedValue;\n} {\n return Object.fromEntries((Object.entries(obj) as Entries<TObject>[]).map(([key, value]) => [key, fn(value, key)])) as {\n [K in keyof TObject]: TMappedValue;\n };\n}\n","import type {\n AnyFieldSelectionFactory,\n AnyFieldSelectionFactoryReturn,\n FieldSelectionFactories,\n FieldSelectionFactoryObjectReturn,\n FieldSelectionFactoryPrimitiveReturn,\n FieldSelectionFactoryUnionReturn,\n NestedObjectFieldsBuilder,\n NestedUnionFieldsBuilder,\n} from \"../types/element\";\nimport type { AnyFieldSelection, AnyNestedObject, AnyNestedUnion } from \"../types/fragment\";\nimport type { AnyGraphqlSchema, UnionMemberName } from \"../types/schema\";\nimport type {\n OutputEnumSpecifier,\n OutputObjectSpecifier,\n OutputScalarSpecifier,\n OutputTypenameSpecifier,\n OutputUnionSpecifier,\n} from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\nimport { appendToPath, getCurrentFieldPath, isListType, withFieldPath } from \"./field-path-context\";\n\n// Cache is schema-scoped to avoid cross-schema contamination when multiple schemas share type names\ntype CacheMap = Map<string, Record<string, AnyFieldSelectionFactory>>;\n\nconst cacheMapBySchema = new WeakMap<AnyGraphqlSchema, CacheMap>();\nconst ensureCacheMapBySchema = (schema: AnyGraphqlSchema) => {\n const cachedCacheMap = cacheMapBySchema.get(schema);\n if (cachedCacheMap) {\n return cachedCacheMap;\n }\n\n const cacheMap: CacheMap = new Map();\n cacheMapBySchema.set(schema, cacheMap);\n return cacheMap;\n};\n\nexport const createFieldFactories = <TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string>(\n schema: TSchema,\n typeName: TTypeName,\n): FieldSelectionFactories<TSchema, TTypeName> => {\n const cacheMap = ensureCacheMapBySchema(schema);\n const cached = cacheMap.get(typeName);\n if (cached) {\n return cached as unknown as FieldSelectionFactories<TSchema, TTypeName>;\n }\n\n const factories = createFieldFactoriesInner(schema, typeName);\n cacheMap.set(typeName, factories as unknown as Record<string, AnyFieldSelectionFactory>);\n\n return factories;\n};\n\nconst createFieldFactoriesInner = <TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string>(\n schema: TSchema,\n typeName: TTypeName,\n): FieldSelectionFactories<TSchema, TTypeName> => {\n const typeDef = schema.object[typeName];\n if (!typeDef) {\n throw new Error(`Type ${typeName} is not defined in schema objects`);\n }\n\n const entries = Object.entries(typeDef.fields).map(([fieldName, type]): [string, AnyFieldSelectionFactory] => {\n const factory: AnyFieldSelectionFactory = <TAlias extends string | null = null>(\n fieldArgs: AnyFieldSelection[\"args\"] | null | void,\n extras?: { alias?: TAlias; directives?: AnyFieldSelection[\"directives\"] },\n ) => {\n const wrap = <T>(value: T) => wrapByKey((extras?.alias ?? fieldName) as TAlias extends null ? string : TAlias, value);\n\n if (type.kind === \"object\") {\n type TSelection = AnyFieldSelection & { type: OutputObjectSpecifier };\n const factoryReturn: AnyFieldSelectionFactoryReturn<TAlias> = (<TNested extends AnyNestedObject>(\n nest: NestedObjectFieldsBuilder<TSchema, TSelection[\"type\"][\"name\"], TNested>,\n ) => {\n // Build new path for this field\n const currentPath = getCurrentFieldPath();\n const newPath = appendToPath(currentPath, {\n field: fieldName,\n parentType: typeName,\n isList: isListType(type.modifier),\n });\n\n // Run nested builder with updated path context\n const nestedFields = withFieldPath(newPath, () => nest({ f: createFieldFactories(schema, type.name) }));\n\n return wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: nestedFields,\n union: null,\n } satisfies AnyFieldSelection);\n }) satisfies FieldSelectionFactoryObjectReturn<TSchema, TSelection, TAlias>;\n\n return factoryReturn;\n }\n\n if (type.kind === \"union\") {\n type TSelection = AnyFieldSelection & { type: OutputUnionSpecifier };\n const factoryReturn: AnyFieldSelectionFactoryReturn<TAlias> = (<TNested extends AnyNestedUnion>(\n nest: NestedUnionFieldsBuilder<TSchema, UnionMemberName<TSchema, TSelection[\"type\"]>, TNested>,\n ) => {\n // Build new path for this field\n const currentPath = getCurrentFieldPath();\n const newPath = appendToPath(currentPath, {\n field: fieldName,\n parentType: typeName,\n isList: isListType(type.modifier),\n });\n\n // Run nested builders with updated path context\n const nestedUnion = withFieldPath(newPath, () =>\n mapValues(\n nest as Record<string, NestedObjectFieldsBuilder<TSchema, string, AnyNestedObject> | undefined>,\n (builder, memberName) => {\n if (!builder) {\n throw new Error(`Builder is undefined for member name: ${memberName}`);\n }\n return builder({ f: createFieldFactories(schema, memberName) });\n },\n ),\n ) as TNested;\n\n return wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: nestedUnion,\n } satisfies AnyFieldSelection);\n }) satisfies FieldSelectionFactoryUnionReturn<TSchema, TSelection, TAlias>;\n\n return factoryReturn;\n }\n\n if (type.kind === \"scalar\" || type.kind === \"enum\" || type.kind === \"typename\") {\n type TSelection = AnyFieldSelection & { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier };\n const factoryReturn: AnyFieldSelectionFactoryReturn<TAlias> = wrap({\n parent: typeName,\n field: fieldName,\n type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: null,\n } satisfies AnyFieldSelection) satisfies FieldSelectionFactoryPrimitiveReturn<TSelection, TAlias>;\n return factoryReturn;\n }\n\n throw new Error(`Unsupported field type: ${type satisfies never}`);\n };\n\n return [fieldName, factory] as const;\n });\n\n const factories: Record<string, AnyFieldSelectionFactory> = Object.fromEntries(entries);\n\n return factories as unknown as FieldSelectionFactories<TSchema, TTypeName>;\n};\n","/**\n * Context passed to the definition factory during evaluation.\n */\nexport type LazyEvaluatorContext = {\n canonicalId: string;\n};\n\n/**\n * Factory function that produces the definition value.\n * Can be sync or async.\n */\nexport type LazyDefinitionFactory<T> = (context: LazyEvaluatorContext | null) => T | Promise<T>;\n\n/**\n * Function that provides dependencies to evaluate before the main definition.\n */\nexport type LazyDependencyProvider<TDep> = () => TDep[];\n\n/**\n * Internal generator that handles the evaluation protocol.\n */\nexport type LazyEvaluatorExecutor<T> = (context: LazyEvaluatorContext | null) => Generator<Promise<void>, T, void>;\n\n/**\n * Creates a lazy evaluator with caching, async support, and dependency ordering.\n *\n * @param define - Factory function that produces the value\n * @param getDeps - Optional function returning dependencies to evaluate first\n * @param createDepGenerator - Function to create evaluation generator for a dependency\n * @returns An executor generator function\n */\nexport const createLazyEvaluator = <T, TDep>(\n define: LazyDefinitionFactory<T>,\n getDeps: LazyDependencyProvider<TDep> | undefined,\n createDepGenerator: (dep: TDep) => Generator<Promise<void>, void, void>,\n): LazyEvaluatorExecutor<T> => {\n let cache: { value: T } | null = null;\n let promise: Promise<void> | null = null;\n\n return function* execute(context: LazyEvaluatorContext | null): Generator<Promise<void>, T, void> {\n if (cache) {\n return cache.value;\n }\n\n if (promise) {\n yield promise;\n // biome-ignore lint/style/noNonNullAssertion: cache is guaranteed to be set after promise resolves\n return cache!.value;\n }\n\n if (getDeps) {\n // Need to evaluate the dependencies before the current element is evaluated.\n //\n // When dependencies is evaluated while the current element is being evaluated,\n // the evaluation method will be synchronous regardless of how the current builder\n // performs. If the dependencies need to be evaluated asynchronously, they throw an error.\n for (const dep of getDeps()) {\n yield* createDepGenerator(dep);\n }\n }\n\n const defined = define(context);\n if (!(defined instanceof Promise)) {\n return (cache = { value: defined }).value;\n }\n\n // Create a promise to resolve the value of the element asynchronously.\n // Yield the promise to make the builder process handle the asynchronous operation if it supports it.\n promise = defined.then((value) => {\n cache = { value };\n promise = null;\n });\n\n yield promise;\n // biome-ignore lint/style/noNonNullAssertion: cache is guaranteed to be set after promise resolves\n return cache!.value;\n };\n};\n\n/**\n * Creates an evaluation generator from an executor.\n * Wraps the executor's generator and discards its return value.\n */\nexport function* createEvaluationGenerator<T>(\n executor: LazyEvaluatorExecutor<T>,\n context: LazyEvaluatorContext | null,\n): Generator<Promise<void>, void, void> {\n yield* executor(context);\n}\n\n/**\n * Executes the evaluator synchronously.\n * Throws if async operation is encountered.\n */\nexport const evaluateSync = <T>(executor: LazyEvaluatorExecutor<T>, context: LazyEvaluatorContext | null): T => {\n const result = executor(context).next();\n\n if (!result.done) {\n throw new Error(\"Async operation is not supported in sync evaluation.\");\n }\n\n return result.value;\n};\n","import {\n createLazyEvaluator,\n type LazyEvaluatorContext,\n type LazyEvaluatorExecutor,\n createEvaluationGenerator as lazyCreateEvaluationGenerator,\n evaluateSync as lazyEvaluateSync,\n} from \"./lazy-evaluator\";\n\nconst GQL_ELEMENT_FACTORY = Symbol(\"GQL_ELEMENT_FACTORY\");\nconst GQL_ELEMENT_CONTEXT = Symbol(\"GQL_ELEMENT_CONTEXT\");\n\nexport type GqlElementContext = LazyEvaluatorContext;\n\nexport type GqlElementDefinitionFactory<T> = (context: GqlElementContext | null) => T | Promise<T>;\n\nexport type GqlElementAttachment<TElement extends object, TName extends string, TValue extends object> = {\n name: TName;\n createValue: (element: TElement) => TValue;\n};\n\nexport abstract class GqlElement<TDefinition extends object, TInfer extends object> {\n declare readonly $infer: TInfer;\n\n private [GQL_ELEMENT_FACTORY]: LazyEvaluatorExecutor<TDefinition>;\n private [GQL_ELEMENT_CONTEXT]: GqlElementContext | null = null;\n\n protected constructor(define: GqlElementDefinitionFactory<TDefinition>, getDeps?: () => GqlElement<any, any>[]) {\n this[GQL_ELEMENT_FACTORY] = createLazyEvaluator(define, getDeps, GqlElement.createEvaluationGenerator);\n\n Object.defineProperty(this, \"$infer\", {\n get() {\n throw new Error(\"This property is only for type meta. Do not access this property directly.\");\n },\n });\n }\n\n public attach<TName extends string, TValue extends object>(attachment: GqlElementAttachment<this, TName, TValue>) {\n let cache: TValue | null = null;\n\n Object.defineProperty(this, attachment.name, {\n get() {\n if (cache) {\n return cache;\n }\n\n GqlElement.evaluateInstantly(this);\n\n return (cache = attachment.createValue(this));\n },\n });\n\n return this as this & { [_ in TName]: TValue };\n }\n\n static setContext<TElement extends GqlElement<any, any>>(element: TElement, context: GqlElementContext): void {\n element[GQL_ELEMENT_CONTEXT] = context;\n }\n\n static createEvaluationGenerator(element: GqlElement<any, any>): Generator<Promise<void>, void, void> {\n return lazyCreateEvaluationGenerator(element[GQL_ELEMENT_FACTORY], element[GQL_ELEMENT_CONTEXT]);\n }\n\n private static evaluateInstantly<TValue extends object>(element: GqlElement<TValue, any>): TValue {\n return lazyEvaluateSync(element[GQL_ELEMENT_FACTORY], element[GQL_ELEMENT_CONTEXT]);\n }\n\n static evaluateSync(element: GqlElement<any, any>): void {\n void GqlElement.evaluateInstantly(element);\n }\n\n static get<TValue extends object>(element: GqlElement<TValue, any>): TValue {\n return GqlElement.evaluateInstantly(element);\n }\n}\n","/** Fragment helper types mirroring the `gql.fragment` API. */\n\nimport type { OptionalArg } from \"../../utils/empty-object\";\nimport type { AnyAssignableInput, AnyFields, AssignableInput, InferFields } from \"../fragment\";\nimport type { AnyGraphqlSchema } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement } from \"./gql-element\";\n\nexport type AnyFragment = Fragment<string, any, AnyFields, any>;\n\nexport type FragmentInferMeta<TVariables, TOutput extends object> = {\n readonly input: TVariables;\n readonly output: TOutput;\n};\n\ninterface FragmentArtifact<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n> {\n readonly typename: TTypeName;\n readonly spread: (variables: TVariables) => TFields;\n}\n\ndeclare const __FRAGMENT_BRAND__: unique symbol;\nexport class Fragment<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TOutput extends object,\n >\n extends GqlElement<FragmentArtifact<TTypeName, TVariables, TFields>, FragmentInferMeta<TVariables, TOutput>>\n implements FragmentArtifact<TTypeName, TVariables, TFields>\n{\n private declare readonly [__FRAGMENT_BRAND__]: void;\n\n private constructor(define: () => FragmentArtifact<TTypeName, TVariables, TFields>) {\n super(define);\n }\n\n public get typename() {\n return GqlElement.get(this).typename;\n }\n public get spread() {\n return GqlElement.get(this).spread;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n >(\n define: () => {\n typename: TTypeName;\n spread: (variables: OptionalArg<AssignableInput<TSchema, TVariableDefinitions>>) => TFields;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Output = InferFields<TSchema, TFields> & { [key: symbol]: never };\n type Variables = OptionalArg<AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Fragment<TTypeName, Variables, Fields, Output>(define as () => FragmentArtifact<TTypeName, Variables, Fields>);\n }\n}\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { AnyFields, InferFields } from \"../fragment\";\nimport type { AnyConstAssignableInput, AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement, type GqlElementContext } from \"./gql-element\";\n\nexport type AnyOperation = AnyOperationOf<\"query\"> | AnyOperationOf<\"mutation\"> | AnyOperationOf<\"subscription\">;\nexport type AnyOperationOf<TOperationType extends OperationType> = Operation<\n TOperationType,\n string,\n string[],\n any,\n AnyFields,\n any\n>;\n\nexport type OperationInferMeta<TVariables, TData extends object> = {\n readonly input: TVariables;\n readonly output: TData;\n};\n\ndeclare const __OPERATION_BRAND__: unique symbol;\n\ntype OperationArtifact<\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TFields extends Partial<AnyFields>,\n TData extends object,\n> = {\n readonly operationType: TOperationType;\n readonly operationName: TOperationName;\n readonly variableNames: TVariableNames;\n readonly documentSource: () => TFields;\n readonly document: TypedDocumentNode<TData, TVariables>;\n readonly metadata?: unknown;\n};\n\nexport class Operation<\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TFields extends Partial<AnyFields>,\n TData extends object,\n >\n extends GqlElement<\n OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>,\n OperationInferMeta<TVariables, TData>\n >\n implements OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n{\n private declare readonly [__OPERATION_BRAND__]: void;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) =>\n | OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n | Promise<OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>>,\n ) {\n super(define);\n }\n\n public get operationType() {\n return GqlElement.get(this).operationType;\n }\n public get operationName() {\n return GqlElement.get(this).operationName;\n }\n public get variableNames() {\n return GqlElement.get(this).variableNames;\n }\n public get documentSource() {\n return GqlElement.get(this).documentSource;\n }\n public get document() {\n return GqlElement.get(this).document;\n }\n public get metadata() {\n return GqlElement.get(this).metadata;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n >(\n define: (context: GqlElementContext | null) =>\n | {\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n documentSource: () => TFields;\n document: TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVariableDefinitions>>;\n metadata?: unknown;\n }\n | Promise<{\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n documentSource: () => TFields;\n document: TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVariableDefinitions>>;\n metadata?: unknown;\n }>,\n ) {\n return new Operation(define);\n }\n}\n","/**\n * Fragment usage context using shared value container pattern.\n *\n * This module tracks fragment usages during operation building,\n * allowing metadata from spread fragments to be collected and aggregated.\n * Similar to field-path-context, uses a shared mutable container.\n */\n\nimport type { FieldPath } from \"./field-path-context\";\n\n/**\n * Record of a fragment being spread in an operation.\n * Stores metadata builder (not fragment reference) since fragment cannot reference itself.\n *\n * @template TFragmentMetadata - The type of metadata produced by the fragment's metadata builder\n */\nexport type FragmentUsageRecord<TFragmentMetadata = unknown> = {\n /** Metadata builder factory from the fragment, if defined */\n readonly metadataBuilder: (() => TFragmentMetadata | Promise<TFragmentMetadata>) | null;\n /** Field path where the fragment was spread */\n readonly path: FieldPath | null;\n};\n\n/**\n * Shared mutable container for collecting fragment usages.\n * Only synchronous access is supported.\n */\nconst fragmentUsageContext: { current: FragmentUsageRecord[] | null } = {\n current: null,\n};\n\n/**\n * Run a function with fragment usage collection enabled.\n * Returns both the function result and collected fragment usages.\n *\n * @internal\n */\nexport const withFragmentUsageCollection = <T>(fn: () => T): { result: T; usages: FragmentUsageRecord[] } => {\n const previousCollector = fragmentUsageContext.current;\n const usages: FragmentUsageRecord[] = [];\n fragmentUsageContext.current = usages;\n try {\n const result = fn();\n return { result, usages };\n } finally {\n fragmentUsageContext.current = previousCollector;\n }\n};\n\n/**\n * Record a fragment usage. Called when fragment.spread() is invoked.\n * No-op if not in a collection context.\n *\n * @internal\n */\nexport const recordFragmentUsage = (record: FragmentUsageRecord): void => {\n if (fragmentUsageContext.current) {\n fragmentUsageContext.current.push(record);\n }\n};\n","import {\n type AnyAssignableInput,\n type AssigningInput,\n createVarRefFromNestedValue,\n createVarRefFromVariable,\n isVarRef,\n} from \"../types/fragment\";\nimport type { AnyGraphqlSchema, InferInputProfile } from \"../types/schema\";\nimport type { AnyVarRef, InputTypeSpecifiers, NestedValue } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\n\nexport const createVarAssignments = <TSchema extends AnyGraphqlSchema, TVariableDefinitions extends InputTypeSpecifiers>(\n definitions: TVariableDefinitions,\n providedValues: AnyAssignableInput | void,\n): AssigningInput<TSchema, TVariableDefinitions> => {\n return mapValues(definitions, (_definition, key): AnyVarRef => {\n const varName = key as string;\n if (!providedValues || providedValues[varName] === undefined) {\n return createVarRefFromNestedValue<InferInputProfile<TSchema, typeof _definition>>(undefined);\n }\n\n const provided = providedValues[varName];\n if (isVarRef(provided)) {\n return provided;\n }\n\n return createVarRefFromNestedValue<InferInputProfile<TSchema, typeof _definition>>(provided as NestedValue);\n }) as AssigningInput<TSchema, TVariableDefinitions>;\n};\n\nexport const createVarRefs = <TSchema extends AnyGraphqlSchema, TVarDefinitions extends InputTypeSpecifiers>(\n definitions: TVarDefinitions,\n) =>\n mapValues(definitions as InputTypeSpecifiers, (_ref, name) =>\n createVarRefFromVariable<InferInputProfile<TSchema, typeof _ref>>(name),\n ) as AssigningInput<TSchema, TVarDefinitions>;\n","import { type FieldsBuilder, Fragment } from \"../types/element\";\nimport type { AnyFields, AssigningInput } from \"../types/fragment\";\nimport type { AnyMetadataAdapter, DefaultMetadataAdapter, ExtractAdapterTypes, FragmentMetadataBuilder } from \"../types/metadata\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { getCurrentFieldPath } from \"./field-path-context\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { recordFragmentUsage } from \"./fragment-usage-context\";\nimport { createVarAssignments, type createVarRefs } from \"./input\";\n\n/**\n * Type alias for a fragment builder function for a specific object type.\n * Used in codegen to generate explicit fragment builder types instead of mapped types.\n */\nexport type FragmentBuilderFor<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n> = <TFields extends AnyFields, TVarDefinitions extends InputTypeSpecifiers = {}>(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>,\n ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"]\n >;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n}) => ReturnType<typeof Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>>;\n\nexport const createGqlFragmentComposers = <\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n>(\n schema: NoInfer<TSchema>,\n _adapter?: TAdapter,\n) => {\n type TFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"];\n\n type FragmentBuilder<TTypeName extends keyof TSchema[\"object\"] & string> = <\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers = {},\n >(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>, TFragmentMetadata>;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => ReturnType<typeof Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>>;\n\n const createFragmentComposer = <TTypeName extends keyof TSchema[\"object\"] & string>(\n typename: TTypeName,\n ): FragmentBuilder<TTypeName> => {\n return <TFields extends AnyFields, TVarDefinitions extends InputTypeSpecifiers = {}>(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<AssigningInput<TSchema, TVarDefinitions>, TFragmentMetadata>;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => {\n const varDefinitions = (options.variables ?? {}) as TVarDefinitions;\n const { metadata, fields } = options;\n\n return Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>(() => ({\n typename,\n spread: (variables) => {\n const f = createFieldFactories(schema, typename);\n const $ = createVarAssignments<TSchema, TVarDefinitions>(varDefinitions, variables);\n\n recordFragmentUsage({\n metadataBuilder: metadata ? () => metadata({ $ }) : null,\n path: getCurrentFieldPath(),\n });\n\n return fields({ f, $ });\n },\n }));\n };\n };\n\n type FragmentBuildersAll = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string ? FragmentBuilder<TTypeName> : never;\n };\n\n // Include operation roots (Query, Mutation, Subscription) for fragment colocation\n // These allow defining reusable fragments on operation root types\n type FragmentBuilders = FragmentBuildersAll;\n\n return mapValues(schema.object, (_, typename) => createFragmentComposer(typename)) as FragmentBuilders;\n};\n","import type { FieldPath } from \"../../composer/field-path-context\";\nimport type { OperationMetadata } from \"./metadata\";\n\n/**\n * Information about a fragment's metadata when spread in an operation.\n */\nexport type FragmentMetaInfo<TFragmentMetadata> = {\n /** The evaluated metadata from the fragment, if defined */\n readonly metadata: TFragmentMetadata | undefined;\n /** Field path where the fragment was spread */\n readonly fieldPath: FieldPath | null;\n};\n\n/**\n * Metadata adapter that defines how fragment metadata is aggregated\n * and provides schema-level configuration.\n *\n * This adapter allows complete customization of:\n * - Fragment metadata type (TFragmentMetadata)\n * - How fragment metadata is aggregated (aggregateFragmentMetadata)\n * - Schema-level fixed values available to all operation metadata builders (schemaLevel)\n *\n * Note: Operation metadata type is inferred from the operation's metadata callback return type.\n *\n * @template TFragmentMetadata - The metadata type returned by fragment metadata builders\n * @template TAggregatedFragmentMetadata - The type returned by aggregateFragmentMetadata\n * @template TSchemaLevel - The type of schema-level configuration values\n */\nexport type MetadataAdapter<TFragmentMetadata = unknown, TAggregatedFragmentMetadata = unknown, TSchemaLevel = unknown> = {\n /**\n * Aggregates metadata from all spread fragments in an operation.\n * Called with the metadata from each spread fragment.\n * The return type becomes the `fragmentMetadata` parameter in operation metadata builders.\n */\n readonly aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<TFragmentMetadata>[]) => TAggregatedFragmentMetadata;\n /**\n * Schema-level fixed values that are passed to all operation metadata builders.\n * Useful for configuration that should be consistent across all operations.\n */\n readonly schemaLevel?: TSchemaLevel;\n};\n\n/**\n * Extracts the type parameters from a MetadataAdapter.\n */\nexport type ExtractAdapterTypes<T> = T extends MetadataAdapter<infer TFragment, infer TAggregated, infer TSchemaLevel>\n ? {\n fragmentMetadata: TFragment;\n aggregatedFragmentMetadata: TAggregated;\n schemaLevel: TSchemaLevel;\n }\n : never;\n\n/**\n * Generic type for any metadata adapter.\n */\nexport type AnyMetadataAdapter = MetadataAdapter<any, any, any>;\n\n/**\n * Unified adapter that combines helpers and metadata configuration.\n *\n * @template THelpers - Custom helper functions accessible in gql composer callbacks\n * @template TFragmentMetadata - The metadata type returned by fragment metadata builders\n * @template TAggregatedFragmentMetadata - The type returned by aggregateFragmentMetadata\n * @template TSchemaLevel - The type of schema-level configuration values\n *\n * @example\n * ```typescript\n * const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments) => fragments.map((m) => m.metadata),\n * schemaLevel: { apiVersion: \"v2\" },\n * },\n * });\n * ```\n */\nexport type Adapter<\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n> = {\n /** Custom helper functions accessible in gql composer callbacks */\n readonly helpers?: THelpers;\n /** Metadata configuration for fragments and operations */\n readonly metadata?: MetadataAdapter<TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>;\n};\n\n/**\n * Generic type for any unified adapter.\n */\nexport type AnyAdapter = Adapter<any, any, any, any>;\n\n/**\n * Extracts the type parameters from a unified Adapter.\n */\nexport type ExtractUnifiedAdapterTypes<T> = T extends Adapter<\n infer THelpers,\n infer TFragment,\n infer TAggregated,\n infer TSchemaLevel\n>\n ? {\n helpers: THelpers;\n fragmentMetadata: TFragment;\n aggregatedFragmentMetadata: TAggregated;\n schemaLevel: TSchemaLevel;\n }\n : never;\n\n/**\n * Default adapter that maintains backwards compatibility with the original behavior.\n * Uses OperationMetadata for fragment metadata and aggregates by collecting metadata into a readonly array.\n */\nexport type DefaultMetadataAdapter = MetadataAdapter<OperationMetadata, readonly (OperationMetadata | undefined)[]>;\n\n/**\n * Default unified adapter type.\n */\nexport type DefaultAdapter = Adapter<object, OperationMetadata, readonly (OperationMetadata | undefined)[]>;\n\n/**\n * Creates the default adapter instance.\n * @internal\n */\nexport const createDefaultAdapter = (): DefaultMetadataAdapter => ({\n aggregateFragmentMetadata: (fragments) => fragments.map((m) => m.metadata),\n});\n\n/**\n * The default adapter instance.\n */\nexport const defaultMetadataAdapter: DefaultMetadataAdapter = createDefaultAdapter();\n","import { type FieldsBuilder, Operation } from \"../types/element\";\nimport type { AnyFields } from \"../types/fragment\";\nimport type {\n AnyMetadataAdapter,\n DefaultMetadataAdapter,\n ExtractAdapterTypes,\n FragmentMetaInfo,\n MetadataBuilder,\n} from \"../types/metadata\";\nimport { defaultMetadataAdapter } from \"../types/metadata\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { buildDocument } from \"./build-document\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { withFragmentUsageCollection } from \"./fragment-usage-context\";\nimport { createVarRefs } from \"./input\";\n\nexport const createOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n>(\n schema: NoInfer<TSchema>,\n adapter?: TAdapter,\n) => {\n const resolvedAdapter = adapter ?? (defaultMetadataAdapter as TAdapter);\n\n type TFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"];\n type TAggregatedFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"aggregatedFragmentMetadata\"];\n type TSchemaLevel = ExtractAdapterTypes<TAdapter>[\"schemaLevel\"];\n\n return <TOperationType extends OperationType>(operationType: TOperationType) => {\n type TTypeName = TSchema[\"operations\"][TOperationType] & keyof TSchema[\"object\"] & string;\n const operationTypeName: TTypeName | null = schema.operations[operationType];\n if (operationTypeName === null) {\n throw new Error(`Operation type ${operationType} is not defined in schema roots`);\n }\n\n return <\n TOperationName extends string,\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers = {},\n TOperationMetadata = unknown,\n >(options: {\n name: TOperationName;\n variables?: TVarDefinitions;\n metadata?: MetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>,\n TOperationMetadata,\n TAggregatedFragmentMetadata,\n TSchemaLevel\n >;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => {\n return Operation.create<TSchema, TOperationType, TOperationName, TVarDefinitions, TFields>(() => {\n const { name: operationName } = options;\n const variables = (options.variables ?? {}) as TVarDefinitions;\n const $ = createVarRefs<TSchema, TVarDefinitions>(variables);\n const f = createFieldFactories(schema, operationTypeName);\n\n // Collect fragment usages during field building\n const { result: fields, usages: fragmentUsages } = withFragmentUsageCollection(() => options.fields({ f, $ }));\n\n const document = buildDocument<TSchema, TFields, TVarDefinitions>({\n operationName,\n operationType,\n variables,\n fields,\n });\n\n const createDefinition = (metadata: TOperationMetadata | undefined) => ({\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof TVarDefinitions & string)[],\n documentSource: () => fields,\n document,\n metadata,\n });\n\n // Check if any fragment has a metadata builder\n const hasFragmentMetadata = fragmentUsages.some((u) => u.metadataBuilder);\n\n if (!hasFragmentMetadata && !options.metadata) {\n // No metadata to evaluate\n return createDefinition(undefined);\n }\n\n // Evaluate fragment metadata first (sync or async)\n const fragmentMetadataResults: (TFragmentMetadata | undefined | Promise<TFragmentMetadata>)[] = fragmentUsages.map(\n (usage) => (usage.metadataBuilder ? usage.metadataBuilder() : undefined),\n );\n\n // Check if any fragment metadata is async\n const hasAsyncFragmentMetadata = fragmentMetadataResults.some((r) => r instanceof Promise);\n\n // Helper to aggregate and call operation metadata builder\n const buildOperationMetadata = (\n resolvedFragmentMetadata: (TFragmentMetadata | undefined)[],\n ): TOperationMetadata | undefined | Promise<TOperationMetadata | undefined> => {\n // Build FragmentMetaInfo array for adapter\n const fragmentMetaInfos: FragmentMetaInfo<TFragmentMetadata>[] = fragmentUsages.map((usage, index) => ({\n metadata: resolvedFragmentMetadata[index],\n fieldPath: usage.path,\n }));\n\n // Aggregate using the adapter\n const aggregatedFragmentMetadata = resolvedAdapter.aggregateFragmentMetadata(\n fragmentMetaInfos,\n ) as TAggregatedFragmentMetadata;\n\n // Call operation metadata builder with aggregated fragment metadata and schema-level config\n const schemaLevel = resolvedAdapter.schemaLevel as TSchemaLevel | undefined;\n return options.metadata?.({ $, document, fragmentMetadata: aggregatedFragmentMetadata, schemaLevel });\n };\n\n if (hasAsyncFragmentMetadata) {\n // Handle async fragment metadata\n return Promise.all(fragmentMetadataResults).then(async (resolvedFragmentMetadata) => {\n const operationMetadata = await buildOperationMetadata(resolvedFragmentMetadata);\n return createDefinition(operationMetadata);\n });\n }\n\n // All fragment metadata is sync, evaluate operation metadata\n const syncFragmentMetadata = fragmentMetadataResults as (TFragmentMetadata | undefined)[];\n const operationMetadataResult = buildOperationMetadata(syncFragmentMetadata);\n\n if (operationMetadataResult instanceof Promise) {\n return operationMetadataResult.then(createDefinition);\n }\n\n return createDefinition(operationMetadataResult);\n });\n };\n };\n};\n","import type {\n AllInputTypeNames,\n AnyConstDirectiveAttachments,\n AnyGraphqlSchema,\n ConstAssignableInputValue,\n InferInputKind,\n} from \"../types/schema\";\nimport type { InputTypeKind, TypeModifier } from \"../types/type-foundation\";\nimport {\n getNameAt,\n getValueAt,\n getVariablePath,\n getVarRefInner,\n getVarRefName,\n getVarRefValue,\n} from \"../types/type-foundation/var-ref\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\n\n/**\n * Type for the default value function for a variable.\n */\ntype AssignableDefaultValue<\n TSchema extends AnyGraphqlSchema,\n TKind extends InputTypeKind,\n TName extends string,\n TModifier extends TypeModifier,\n> = ConstAssignableInputValue<\n TSchema,\n {\n scalar: { kind: \"scalar\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n enum: { kind: \"enum\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n input: { kind: \"input\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n }[TKind]\n>;\n\n/**\n * Variable specifier type.\n */\nexport type VarSpecifier<\n TKind extends InputTypeKind,\n TTypeName extends string,\n TModifier extends TypeModifier,\n TDefaultFn extends (() => unknown) | null,\n TDirectives extends AnyConstDirectiveAttachments,\n> = {\n kind: TKind;\n name: TTypeName;\n modifier: TModifier;\n defaultValue: TDefaultFn extends null\n ? null\n : {\n default: ReturnType<NonNullable<TDefaultFn>>;\n };\n directives: TDirectives;\n};\n\n/**\n * Creates a variable method for a specific input type.\n * This is used by codegen to generate type-specific variable methods.\n *\n * @deprecated Use createVarMethodFactory instead for proper type inference with nested input objects.\n */\nexport const createVarMethod = <TKind extends InputTypeKind, TTypeName extends string>(kind: TKind, typeName: TTypeName) => {\n return <\n TSchema extends AnyGraphqlSchema,\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n ): VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives> =>\n ({\n kind,\n name: typeName,\n modifier,\n defaultValue: extras?.default ? { default: extras.default() } : null,\n directives: extras?.directives ?? {},\n }) as VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives>;\n};\n\n/**\n * Creates a factory function for generating schema-scoped variable methods.\n * This ensures proper type inference for nested input objects by binding the schema type upfront.\n *\n * @example\n * ```typescript\n * const createMethod = createVarMethodFactory<typeof schema>();\n * const inputTypeMethods = {\n * Boolean: createMethod(\"scalar\", \"Boolean\"),\n * user_bool_exp: createMethod(\"input\", \"user_bool_exp\"),\n * } satisfies InputTypeMethods<typeof schema>;\n * ```\n */\nexport const createVarMethodFactory = <TSchema extends AnyGraphqlSchema>() => {\n return <TKind extends InputTypeKind, TTypeName extends AllInputTypeNames<TSchema>>(\n kind: TKind,\n typeName: TTypeName,\n ): InputTypeMethod<TSchema, TKind, TTypeName> => {\n return ((modifier, extras) => ({\n kind,\n name: typeName,\n modifier,\n defaultValue: extras?.default ? { default: extras.default() } : null,\n directives: extras?.directives ?? {},\n })) as InputTypeMethod<TSchema, TKind, TTypeName>;\n };\n};\n\n/**\n * Type for a single input type method.\n */\nexport type InputTypeMethod<TSchema extends AnyGraphqlSchema, TKind extends InputTypeKind, TTypeName extends string> = <\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n>(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n) => VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives>;\n\n/**\n * Type for all input type methods in a schema.\n */\nexport type InputTypeMethods<TSchema extends AnyGraphqlSchema> = {\n [TName in AllInputTypeNames<TSchema>]: InputTypeMethod<TSchema, InferInputKind<TSchema, TName>, TName>;\n};\n\n/**\n * Type for a wrapped variable method that includes the variable name in the result.\n */\ntype WrappedVarMethod<\n TVarName extends string,\n TSchema extends AnyGraphqlSchema,\n TKind extends InputTypeKind,\n TTypeName extends string,\n> = <\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n>(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n) => { [K in TVarName]: VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives> };\n\n/**\n * Type for the variable builder methods for a specific variable name.\n */\nexport type VarBuilderMethods<TVarName extends string, TSchema extends AnyGraphqlSchema> = {\n [TName in AllInputTypeNames<TSchema>]: WrappedVarMethod<TVarName, TSchema, InferInputKind<TSchema, TName>, TName>;\n};\n\n/**\n * Type for the variable builder function.\n */\nexport type VarBuilder<TSchema extends AnyGraphqlSchema> = {\n <TVarName extends string>(varName: TVarName): VarBuilderMethods<TVarName, TSchema>;\n getName: typeof getVarRefName;\n getValue: typeof getVarRefValue;\n getInner: typeof getVarRefInner;\n getNameAt: typeof getNameAt;\n getValueAt: typeof getValueAt;\n getVariablePath: typeof getVariablePath;\n};\n\n/**\n * Generic input type method that can be called with any modifier.\n */\ntype AnyInputTypeMethod = (\n modifier: TypeModifier,\n extras?: { default?: () => unknown; directives?: AnyConstDirectiveAttachments },\n) => unknown;\n\n/**\n * Creates a variable builder that uses injected input type methods.\n */\nexport const createVarBuilder = <TSchema extends AnyGraphqlSchema>(\n inputTypeMethods: InputTypeMethods<TSchema>,\n): VarBuilder<TSchema> => {\n const varBuilder = <TVarName extends string>(varName: TVarName): VarBuilderMethods<TVarName, TSchema> => {\n const wrappedMethods = {} as VarBuilderMethods<TVarName, TSchema>;\n\n for (const [typeName, method] of Object.entries(inputTypeMethods) as [string, AnyInputTypeMethod][]) {\n Object.defineProperty(wrappedMethods, typeName, {\n value: ((modifier, extras) => wrapByKey(varName, method(modifier, extras))) satisfies AnyInputTypeMethod,\n writable: false,\n configurable: true,\n });\n }\n\n return wrappedMethods;\n };\n\n varBuilder.getName = getVarRefName;\n varBuilder.getValue = getVarRefValue;\n varBuilder.getInner = getVarRefInner;\n varBuilder.getNameAt = getNameAt;\n varBuilder.getValueAt = getValueAt;\n varBuilder.getVariablePath = getVariablePath;\n\n return varBuilder as VarBuilder<TSchema>;\n};\n","import type { AnyFragment, AnyOperation } from \"../types/element\";\nimport type { Adapter, AnyAdapter, AnyMetadataAdapter, DefaultAdapter, DefaultMetadataAdapter } from \"../types/metadata\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport { createColocateHelper } from \"./colocate\";\nimport { createGqlFragmentComposers, type FragmentBuilderFor } from \"./fragment\";\nimport { createOperationComposerFactory } from \"./operation\";\nimport { createVarBuilder, type InputTypeMethods } from \"./var-builder\";\n\nexport type GqlElementComposer<TContext> = <TResult extends AnyFragment | AnyOperation>(\n composeElement: (context: TContext) => TResult,\n) => TResult;\n\n/**\n * Extracts the helpers type from an adapter.\n */\ntype ExtractHelpers<TAdapter extends AnyAdapter> = TAdapter extends Adapter<infer THelpers, unknown, unknown, unknown>\n ? THelpers\n : object;\n\n/**\n * Extracts the metadata adapter type from an adapter.\n * Handles optional metadata property correctly.\n */\nexport type ExtractMetadataAdapter<TAdapter extends AnyAdapter> = TAdapter extends { metadata?: infer M }\n ? NonNullable<M> extends AnyMetadataAdapter\n ? NonNullable<M>\n : DefaultMetadataAdapter\n : DefaultMetadataAdapter;\n\n/**\n * Default fragment builders type computed from schema.\n * This is the mapped type that's expensive to compute for large schemas.\n */\nexport type FragmentBuildersAll<\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n> = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string\n ? FragmentBuilderFor<TSchema, TTypeName, TAdapter>\n : never;\n};\n\nexport type GqlElementComposerOptions<TSchema extends AnyGraphqlSchema, TAdapter extends AnyAdapter = DefaultAdapter> = {\n adapter?: TAdapter;\n inputTypeMethods: InputTypeMethods<TSchema>;\n};\n\n/**\n * Creates a GQL element composer for a given schema.\n *\n * @typeParam TSchema - The GraphQL schema type\n * @typeParam TAdapter - The adapter type (optional)\n * @typeParam TFragmentBuilders - Pre-computed fragment builders type (optional, for codegen optimization)\n */\nexport const createGqlElementComposer = <\n TSchema extends AnyGraphqlSchema,\n TFragmentBuilders,\n TAdapter extends AnyAdapter = DefaultAdapter,\n>(\n schema: NoInfer<TSchema>,\n options: GqlElementComposerOptions<NoInfer<TSchema>, NoInfer<TAdapter>>,\n) => {\n type THelpers = ExtractHelpers<TAdapter>;\n type TMetadataAdapter = ExtractMetadataAdapter<TAdapter>;\n const { adapter, inputTypeMethods } = options;\n const helpers = adapter?.helpers as THelpers | undefined;\n const metadataAdapter = adapter?.metadata as TMetadataAdapter | undefined;\n const fragment = createGqlFragmentComposers<TSchema, TMetadataAdapter>(schema, metadataAdapter) as TFragmentBuilders;\n const createOperationComposer = createOperationComposerFactory<TSchema, TMetadataAdapter>(schema, metadataAdapter);\n\n // Wrap operation composers in objects with an `operation` method for extensibility\n // This allows adding more factories (e.g., query.subscription, query.fragment) in the future\n const context = {\n fragment,\n query: { operation: createOperationComposer(\"query\") },\n mutation: { operation: createOperationComposer(\"mutation\") },\n subscription: { operation: createOperationComposer(\"subscription\") },\n $var: createVarBuilder<TSchema>(inputTypeMethods),\n $colocate: createColocateHelper(),\n ...(helpers ?? ({} as THelpers)),\n };\n\n const elementComposer: GqlElementComposer<typeof context> = (composeElement) => composeElement(context);\n\n return elementComposer;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["inner: VarRefInner","proxy: T","value","field","curr: Readonly<{ modifier: string; type: TypeNode }>","fieldPathContext: { current: FieldPath | null }","newSegment: FieldPathSegment","cacheMap: CacheMap","factory: AnyFieldSelectionFactory","cache: { value: T } | null","promise: Promise<void> | null","define","define","cache: TValue | null","lazyCreateEvaluationGenerator","lazyEvaluateSync","define","define","fragmentUsageContext: { current: FragmentUsageRecord[] | null }","usages: FragmentUsageRecord[]","defaultMetadataAdapter: DefaultMetadataAdapter","operationTypeName: TTypeName | null","fragmentMetadataResults: (TFragmentMetadata | undefined | Promise<TFragmentMetadata>)[]","fragmentMetaInfos: FragmentMetaInfo<TFragmentMetadata>[]","elementComposer: GqlElementComposer<typeof context>"],"sources":["../src/types/type-foundation/var-ref.ts","../src/composer/build-document.ts","../src/composer/colocate.ts","../src/composer/field-path-context.ts","../src/utils/map-values.ts","../src/composer/fields-builder.ts","../src/types/element/lazy-evaluator.ts","../src/types/element/gql-element.ts","../src/types/element/fragment.ts","../src/types/element/operation.ts","../src/composer/fragment-usage-context.ts","../src/composer/input.ts","../src/composer/fragment.ts","../src/types/metadata/adapter.ts","../src/composer/operation.ts","../src/composer/var-builder.ts","../src/composer/gql-composer.ts"],"sourcesContent":["import type { ConstValue } from \"./const-value\";\nimport type { TypeProfile } from \"./type-profile\";\n\nexport interface AnyVarRefMeta {\n readonly profile: TypeProfile.WithMeta;\n readonly signature: unknown;\n}\n\n/**\n * A nested value that can contain:\n * - Primitive ConstValue (string, number, boolean, null, undefined)\n * - VarRef at any nesting level\n * - Objects with NestedValue fields\n * - Arrays of NestedValue\n */\nexport type NestedValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | { readonly [key: string]: NestedValueElement }\n | readonly NestedValueElement[];\n\ntype NestedValueElement =\n | string\n | number\n | boolean\n | null\n | undefined\n | AnyVarRef\n | { readonly [key: string]: NestedValueElement }\n | readonly NestedValueElement[];\n\nexport type VarRefInner =\n | {\n type: \"variable\";\n name: string;\n }\n | {\n type: \"nested-value\";\n value: NestedValue;\n };\n\nexport type AnyVarRef = VarRef<any>;\n\ndeclare const __VAR_REF_BRAND__: unique symbol;\nexport class VarRef<TMeta extends AnyVarRefMeta> {\n declare readonly [__VAR_REF_BRAND__]: TMeta;\n\n constructor(private readonly inner: VarRefInner) {}\n\n static getInner(varRef: AnyVarRef): VarRefInner {\n return varRef.inner;\n }\n}\n\nexport const isVarRef = (value: unknown): value is AnyVarRef => {\n return typeof value === \"object\" && value !== null && value instanceof VarRef;\n};\n\n/**\n * Recursively checks if a NestedValue contains any VarRef.\n * Used by getVarRefValue to determine if it's safe to return as ConstValue.\n */\nexport const hasVarRefInside = (value: NestedValueElement): boolean => {\n if (isVarRef(value)) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some(hasVarRefInside);\n }\n\n if (typeof value === \"object\" && value !== null) {\n return Object.values(value).some(hasVarRefInside);\n }\n\n return false;\n};\n\nexport const createVarRefFromVariable = <TProfile extends TypeProfile.WithMeta>(name: string) => {\n return new VarRef<TypeProfile.AssigningVarRefMeta<TProfile>>({ type: \"variable\", name });\n};\n\nexport const createVarRefFromNestedValue = <TProfile extends TypeProfile.WithMeta>(value: NestedValue) => {\n return new VarRef<TypeProfile.AssigningVarRefMeta<TProfile>>({ type: \"nested-value\", value });\n};\n\nexport const getVarRefInner = (varRef: AnyVarRef): VarRefInner => {\n return VarRef.getInner(varRef);\n};\n\n/**\n * Get the variable name from a VarRef.\n * Throws if the VarRef contains a nested-value instead of a variable reference.\n */\nexport const getVarRefName = (varRef: AnyVarRef): string => {\n const inner = VarRef.getInner(varRef);\n if (inner.type !== \"variable\") {\n throw new Error(\"Expected variable reference, got nested-value\");\n }\n return inner.name;\n};\n\n/**\n * Get the const value from a VarRef.\n * Throws if the VarRef contains a variable reference instead of a nested-value,\n * or if the nested-value contains any VarRef inside.\n */\nexport const getVarRefValue = (varRef: AnyVarRef): ConstValue => {\n const inner = VarRef.getInner(varRef);\n if (inner.type !== \"nested-value\") {\n throw new Error(\"Expected nested-value, got variable reference\");\n }\n if (hasVarRefInside(inner.value)) {\n throw new Error(\"Cannot get const value: nested-value contains VarRef\");\n }\n return inner.value as ConstValue;\n};\n\n// ============================================================================\n// Path Types and Utilities\n// ============================================================================\n\n/**\n * Path segment types for navigating nested values.\n */\nexport type PathSegment = string;\n\n/**\n * Proxy type that records property accesses.\n */\nexport type SelectableProxy<T> = T;\n\n/**\n * Type-safe path builder function.\n * Used with getNameAt and getValueAt helpers.\n */\nexport type Selector<T, U> = (proxy: T) => U;\n\ntype ProxyInner = {\n readonly varInner: VarRefInner | { type: \"virtual\"; varName: string; varSegments: readonly PathSegment[] };\n readonly segments: readonly PathSegment[];\n};\n\nconst SelectableProxyInnerRegistry = new WeakMap<any, ProxyInner>();\nconst getSelectableProxyInner = (proxy: any): ProxyInner => {\n const inner = SelectableProxyInnerRegistry.get(proxy);\n if (!inner) {\n throw new Error(`Proxy inner not found`);\n }\n return inner;\n};\n\nconst createSelectableProxy = <T>(current: ProxyInner): T => {\n const proxy: T = new Proxy(Object.create(null), {\n get(_, property) {\n if (typeof property === \"symbol\") {\n throw new Error(`Prohibited property access: ${String(property)}`);\n }\n const nextSegments = [...current.segments, property];\n\n if (current.varInner.type === \"virtual\") {\n return createSelectableProxy({\n varInner: current.varInner,\n segments: nextSegments,\n });\n }\n\n if (current.varInner.type === \"variable\") {\n return createSelectableProxy({\n varInner: { type: \"virtual\", varName: current.varInner.name, varSegments: nextSegments },\n segments: nextSegments,\n });\n }\n\n if (typeof current.varInner.value === \"object\" && current.varInner.value !== null) {\n const value = (current.varInner.value as { [key: string]: NestedValueElement })[property];\n return createSelectableProxy({\n varInner: isVarRef(value) ? getVarRefInner(value) : { type: \"nested-value\", value },\n segments: nextSegments,\n });\n }\n\n throw new Error(`Cannot access children of primitive value at path [${current.segments.join(\".\")}]`);\n },\n });\n\n SelectableProxyInnerRegistry.set(proxy, current);\n\n return proxy;\n};\n\n/**\n * Get the variable name from a VarRef at a specific path.\n *\n * @param varRef - The VarRef containing a nested-value\n * @param selector - Path builder function, e.g., p => p.user.age\n * @returns The variable name at the specified path\n * @throws If path doesn't lead to a VarRef with type \"variable\"\n *\n * @example\n * const ref = createVarRefFromNestedValue({\n * user: { age: someVariableRef }\n * });\n * getNameAt(ref, p => p.user.age); // returns the variable name\n */\nexport const getNameAt = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: TypeProfile.Type<T[\"profile\"]>) => U,\n): string => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is inside a variable`);\n }\n\n if (inner.varInner.type !== \"variable\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a variable`);\n }\n\n return inner.varInner.name;\n};\n\n/**\n * Get the const value from a nested-value VarRef at a specific path.\n *\n * @param varRef - The VarRef containing a nested-value\n * @param pathFn - Path builder function, e.g., p => p.user.name\n * @returns The const value at the specified path\n * @throws If path leads to a VarRef or if value contains VarRef inside\n *\n * @example\n * const ref = createVarRefFromNestedValue({\n * user: { name: \"Alice\", age: someVariableRef }\n * });\n * getValueAt(ref, p => p.user.name); // returns \"Alice\"\n */\nexport const getValueAt = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: SelectableProxy<TypeProfile.Type<T[\"profile\"]>>) => U,\n): U => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is inside a variable`);\n }\n\n if (inner.varInner.type !== \"nested-value\") {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a nested-value`);\n }\n\n if (hasVarRefInside(inner.varInner.value)) {\n throw new Error(`Value at path [${inner.segments.join(\".\")}] contains nested VarRef`);\n }\n\n return inner.varInner.value as U;\n};\n\nexport const getVariablePath = <T extends AnyVarRefMeta, U>(\n varRef: VarRef<T>,\n selector: (proxy: SelectableProxy<TypeProfile.Type<T[\"profile\"]>>) => U,\n): readonly PathSegment[] => {\n const proxy = createSelectableProxy<TypeProfile.Type<T[\"profile\"]>>({ varInner: VarRef.getInner(varRef), segments: [] });\n const selected = selector(proxy);\n const inner = getSelectableProxyInner(selected);\n\n if (inner.varInner.type === \"virtual\") {\n return [`$${inner.varInner.varName}`, ...inner.segments.slice(inner.varInner.varSegments.length)];\n }\n\n if (inner.varInner.type === \"variable\") {\n return [`$${inner.varInner.name}`];\n }\n\n throw new Error(`Value at path [${inner.segments.join(\".\")}] is not a variable or inside a variable`);\n};\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport {\n type ArgumentNode,\n type ConstObjectFieldNode,\n type ConstValueNode,\n type DocumentNode,\n type FieldNode,\n type InlineFragmentNode,\n Kind,\n type NamedTypeNode,\n type ObjectFieldNode,\n OperationTypeNode,\n type TypeNode,\n type ValueNode,\n type VariableDefinitionNode,\n} from \"graphql\";\nimport {\n type AnyAssignableInput,\n type AnyAssignableInputValue,\n type AnyFields,\n type AnyNestedUnion,\n type InferFields,\n VarRef,\n} from \"../types/fragment\";\nimport type { AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../types/schema\";\nimport type { ConstValue, InputTypeSpecifiers, TypeModifier } from \"../types/type-foundation\";\n\nexport const buildArgumentValue = (value: AnyAssignableInputValue): ValueNode | null => {\n if (value === undefined) {\n return null;\n }\n\n if (value === null) {\n return {\n kind: Kind.NULL,\n };\n }\n\n if (value instanceof VarRef) {\n const inner = VarRef.getInner(value);\n if (inner.type === \"variable\") {\n return {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: inner.name },\n };\n }\n\n if (inner.type === \"nested-value\") {\n // Recursively process the nested value\n // This handles VarRefs inside the nested structure\n return buildArgumentValue(inner.value as AnyAssignableInputValue);\n }\n\n throw new Error(`Unknown var ref type: ${inner satisfies never}`);\n }\n\n if (Array.isArray(value)) {\n return {\n kind: Kind.LIST,\n values: value.map((item) => buildArgumentValue(item)).filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"object\") {\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(value)\n .map(([key, value]): ObjectFieldNode | null => {\n const valueNode = buildArgumentValue(value);\n return valueNode\n ? {\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: key },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"string\") {\n return {\n kind: Kind.STRING,\n value,\n };\n }\n\n if (typeof value === \"number\") {\n // Distinguish between INT and FLOAT\n const isFloat = !Number.isInteger(value) || value.toString().includes(\".\");\n return {\n kind: isFloat ? Kind.FLOAT : Kind.INT,\n value: value.toString(),\n };\n }\n\n if (typeof value === \"boolean\") {\n return {\n kind: Kind.BOOLEAN,\n value,\n };\n }\n\n throw new Error(`Unknown value type: ${typeof (value satisfies never)}`);\n};\n\nconst buildArguments = (args: AnyAssignableInput): ArgumentNode[] =>\n Object.entries(args ?? {})\n .map(([name, value]): ArgumentNode | null => {\n const valueNode = buildArgumentValue(value);\n return valueNode\n ? {\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: name },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null);\n\nconst buildUnionSelection = (union: AnyNestedUnion): InlineFragmentNode[] =>\n Object.entries(union)\n .map(([typeName, object]): InlineFragmentNode | null => {\n return object\n ? {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: {\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: typeName },\n },\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: buildField(object),\n },\n }\n : null;\n })\n .filter((item) => item !== null);\n\nconst buildField = (field: AnyFields): FieldNode[] =>\n Object.entries(field).map(\n ([alias, { args, field, object, union }]): FieldNode => ({\n kind: Kind.FIELD,\n name: { kind: Kind.NAME, value: field },\n alias: alias !== field ? { kind: Kind.NAME, value: alias } : undefined,\n arguments: buildArguments(args),\n selectionSet: object\n ? {\n kind: Kind.SELECTION_SET,\n selections: buildField(object),\n }\n : union\n ? {\n kind: Kind.SELECTION_SET,\n selections: buildUnionSelection(union),\n }\n : undefined,\n }),\n );\n\nexport const buildConstValueNode = (value: ConstValue): ConstValueNode | null => {\n if (value === undefined) {\n return null;\n }\n\n if (value === null) {\n return { kind: Kind.NULL };\n }\n\n if (typeof value === \"string\") {\n return { kind: Kind.STRING, value };\n }\n\n if (typeof value === \"boolean\") {\n return { kind: Kind.BOOLEAN, value };\n }\n\n if (typeof value === \"number\") {\n // Distinguish between INT and FLOAT\n const isFloat = !Number.isInteger(value) || value.toString().includes(\".\");\n return { kind: isFloat ? Kind.FLOAT : Kind.INT, value: value.toString() };\n }\n\n if (Array.isArray(value)) {\n return {\n kind: Kind.LIST,\n values: value.map((item) => buildConstValueNode(item)).filter((item) => item !== null),\n };\n }\n\n if (typeof value === \"object\") {\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(value)\n .map(([key, value]): ConstObjectFieldNode | null => {\n const valueNode = buildConstValueNode(value);\n return valueNode\n ? {\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: key },\n value: valueNode,\n }\n : null;\n })\n .filter((item) => item !== null),\n };\n }\n\n throw new Error(`Unknown value type: ${typeof (value satisfies never)}`);\n};\n\nexport const buildWithTypeModifier = (modifier: TypeModifier, buildType: () => NamedTypeNode): TypeNode => {\n const baseType = buildType();\n\n if (modifier === \"?\") {\n return baseType;\n }\n\n if (modifier === \"!\") {\n return { kind: Kind.NON_NULL_TYPE, type: baseType };\n }\n\n // Validate modifier format: must start with ? or !, followed by []? or []! pairs\n // Valid patterns: \"?\", \"!\", \"?[]?\", \"?[]!\", \"![]?\", \"![]!\", \"?[]?[]?\", etc.\n const validModifierPattern = /^[?!](\\[\\][?!])*$/;\n if (!validModifierPattern.test(modifier)) {\n throw new Error(`Unknown modifier: ${modifier}`);\n }\n\n // New format: starts with inner type modifier (? or !), then []? or []! pairs\n // e.g., \"?[]?\" = nullable list of nullable, \"![]!\" = non-null list of non-null\n let curr: Readonly<{ modifier: string; type: TypeNode }> = {\n modifier,\n type: baseType,\n };\n\n while (curr.modifier.length > 0) {\n // Handle inner type modifier (? or !)\n if (curr.modifier.startsWith(\"?\")) {\n // Nullable inner type - type stays as-is\n curr = {\n modifier: curr.modifier.slice(1),\n type: curr.type,\n };\n continue;\n }\n\n if (curr.modifier.startsWith(\"!\")) {\n // Non-null inner type\n curr = {\n modifier: curr.modifier.slice(1),\n type: curr.type.kind === Kind.NON_NULL_TYPE ? curr.type : { kind: Kind.NON_NULL_TYPE, type: curr.type },\n };\n continue;\n }\n\n // Handle list modifiers ([]? or []!)\n if (curr.modifier.startsWith(\"[]?\")) {\n // Nullable list\n curr = {\n modifier: curr.modifier.slice(3),\n type: { kind: Kind.LIST_TYPE, type: curr.type },\n };\n continue;\n }\n\n if (curr.modifier.startsWith(\"[]!\")) {\n // Non-null list\n curr = {\n modifier: curr.modifier.slice(3),\n type: {\n kind: Kind.NON_NULL_TYPE,\n type: { kind: Kind.LIST_TYPE, type: curr.type },\n },\n };\n continue;\n }\n\n throw new Error(`Unknown modifier: ${curr.modifier}`);\n }\n\n return curr.type;\n};\n\nconst buildVariables = (variables: InputTypeSpecifiers): VariableDefinitionNode[] => {\n return Object.entries(variables).map(\n ([name, ref]): VariableDefinitionNode => ({\n kind: Kind.VARIABLE_DEFINITION,\n variable: { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: name } },\n defaultValue: (ref.defaultValue && buildConstValueNode(ref.defaultValue.default)) || undefined,\n type: buildWithTypeModifier(ref.modifier, () => ({\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: ref.name },\n })),\n }),\n );\n};\n\nexport const buildOperationTypeNode = (operation: OperationType): OperationTypeNode => {\n switch (operation) {\n case \"query\":\n return OperationTypeNode.QUERY;\n case \"mutation\":\n return OperationTypeNode.MUTATION;\n case \"subscription\":\n return OperationTypeNode.SUBSCRIPTION;\n default:\n throw new Error(`Unknown operation type: ${operation}`);\n }\n};\n\n// Overloaded function signatures for flexible usage\nexport const buildDocument = <\n TSchema extends AnyGraphqlSchema,\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers,\n>(options: {\n operationName: string;\n operationType: OperationType;\n variables: TVarDefinitions;\n fields: TFields;\n}): TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVarDefinitions>> => {\n const { operationName, operationType, variables, fields } = options;\n return {\n kind: Kind.DOCUMENT,\n definitions: [\n {\n kind: Kind.OPERATION_DEFINITION,\n operation: buildOperationTypeNode(operationType),\n name: { kind: Kind.NAME, value: operationName },\n variableDefinitions: buildVariables(variables),\n // directives: directives || [],\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: buildField(fields),\n },\n },\n ],\n } satisfies DocumentNode as TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVarDefinitions>>;\n};\n","import type { AnyFields } from \"../types/fragment\";\nimport type { UnionToIntersection } from \"../utils/type-utils\";\n\n/**\n * Type for colocated field entries.\n * Maps labels to their corresponding field selections.\n */\nexport type ColocatedEntries = Record<string, AnyFields>;\n\n/**\n * Result type for colocated fields.\n * Merges all prefixed entries into a single object.\n */\nexport type ColocatedFields<TEntries extends ColocatedEntries> = UnionToIntersection<\n {\n [KPrefix in keyof TEntries]: KPrefix extends string\n ? {\n [KField in keyof TEntries[KPrefix] as KField extends string\n ? `${KPrefix}_${KField}`\n : never]: TEntries[KPrefix][KField];\n }\n : never;\n }[keyof TEntries]\n>;\n\n/**\n * Creates a $colocate helper function for fragment colocation.\n *\n * $colocate takes an object of { label: fields } and applies prefix-based\n * aliasing to each entry. This mirrors the structure of createExecutionResultParser\n * from @soda-gql/colocation-tools.\n *\n * @example\n * ```typescript\n * // In operation definition\n * query.operation({\n * name: \"GetData\",\n * fields: ({ $ }) => $colocate({\n * userCard: userCardFragment.spread({ userId: $.userId }),\n * posts: postsFragment.spread({ userId: $.userId }),\n * }),\n * });\n *\n * // In parser definition (same labels)\n * createExecutionResultParser({\n * userCard: userCardProjection,\n * posts: postsProjection,\n * });\n * ```\n */\nexport const createColocateHelper = () => {\n /**\n * Colocate multiple field selections with labeled prefixes.\n *\n * @param entries - Object mapping labels to field selections\n * @returns Merged object of all prefixed field entries\n */\n const $colocate = <TEntries extends ColocatedEntries>(entries: TEntries): ColocatedFields<TEntries> =>\n Object.fromEntries(\n Object.entries(entries).flatMap(([label, fields]) =>\n Object.entries(fields).map(([key, value]) => [`${label}_${key}`, value] as const),\n ),\n ) as ColocatedFields<TEntries>;\n\n return $colocate;\n};\n\nexport type ColocateHelper = ReturnType<typeof createColocateHelper>;\n","/**\n * Field path context using shared value container pattern.\n *\n * This module tracks the current field path during field building,\n * similar to how React tracks the current fiber.\n * No changes to field builder arguments are needed - use getCurrentFieldPath() to access.\n */\n\n/**\n * A segment in the field path.\n */\nexport type FieldPathSegment = {\n /** The field name */\n readonly field: string;\n /** The parent type name */\n readonly parent: string;\n /** Whether this field returns a list */\n readonly isList: boolean;\n};\n\n/**\n * Complete field path from root to current position.\n */\nexport type FieldPath = {\n /** Full path string (e.g., \"$.user.posts[].author\") */\n readonly full: string;\n /** Individual path segments */\n readonly segments: readonly FieldPathSegment[];\n};\n\n/**\n * Shared mutable container for field path context.\n * Only synchronous access is supported.\n */\nconst fieldPathContext: { current: FieldPath | null } = {\n current: null,\n};\n\n/**\n * Get the current field path.\n * Returns null if not in a field building context.\n *\n * @example\n * ```typescript\n * import { getCurrentFieldPath } from '@soda-gql/core';\n *\n * // Inside a field builder or model spread:\n * const path = getCurrentFieldPath();\n * console.log(path?.full); // \"$.user.posts[].author\"\n * ```\n */\nexport const getCurrentFieldPath = (): FieldPath | null => fieldPathContext.current;\n\n/**\n * Run a function with a specific field path context.\n * Restores the previous path after the function completes.\n *\n * @internal\n */\nexport const withFieldPath = <T>(path: FieldPath, fn: () => T): T => {\n const previousPath = fieldPathContext.current;\n fieldPathContext.current = path;\n try {\n return fn();\n } finally {\n fieldPathContext.current = previousPath;\n }\n};\n\n/**\n * Append a new segment to the current path.\n *\n * @internal\n */\nexport const appendToPath = (\n parent: FieldPath | null,\n segment: { field: string; parentType: string; isList: boolean },\n): FieldPath => {\n const listSuffix = segment.isList ? \"[]\" : \"\";\n const newSegment: FieldPathSegment = {\n field: segment.field,\n parent: segment.parentType,\n isList: segment.isList,\n };\n\n if (!parent) {\n return {\n full: `$.${segment.field}${listSuffix}`,\n segments: [newSegment],\n };\n }\n\n return {\n full: `${parent.full}.${segment.field}${listSuffix}`,\n segments: [...parent.segments, newSegment],\n };\n};\n\n/**\n * Check if a type specifier represents a list type.\n * Matches patterns like \"Type:![]!\", \"Type:![]?\", \"Type:?[]!\", etc.\n *\n * @internal\n */\nexport const isListType = (typeString: string): boolean => {\n return typeString.includes(\"[]\");\n};\n","type ArgEntries<T extends object> = { [K in keyof T]-?: [value: T[K], key: K] }[keyof T];\ntype Entries<T extends object> = { [K in keyof T]: [key: K, value: T[K]] }[keyof T];\n\nexport function mapValues<TObject extends object, TMappedValue>(\n obj: TObject,\n fn: (...args: ArgEntries<TObject>) => TMappedValue,\n): {\n [K in keyof TObject]: TMappedValue;\n} {\n return Object.fromEntries((Object.entries(obj) as Entries<TObject>[]).map(([key, value]) => [key, fn(value, key)])) as {\n [K in keyof TObject]: TMappedValue;\n };\n}\n","import type {\n AnyFieldSelectionFactory,\n AnyFieldSelectionFactoryReturn,\n FieldSelectionFactories,\n NestedObjectFieldsBuilder,\n NestedUnionFieldsBuilder,\n} from \"../types/element\";\nimport type { AnyFieldSelection, AnyNestedObject, AnyNestedUnion } from \"../types/fragment\";\nimport type { AnyGraphqlSchema, UnionMemberName } from \"../types/schema\";\nimport type { OutputObjectSpecifier, OutputUnionSpecifier } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\nimport { appendToPath, getCurrentFieldPath, isListType, withFieldPath } from \"./field-path-context\";\n\n// Cache is schema-scoped to avoid cross-schema contamination when multiple schemas share type names\ntype CacheMap = Map<string, Record<string, AnyFieldSelectionFactory>>;\n\nconst cacheMapBySchema = new WeakMap<AnyGraphqlSchema, CacheMap>();\nconst ensureCacheMapBySchema = (schema: AnyGraphqlSchema) => {\n const cachedCacheMap = cacheMapBySchema.get(schema);\n if (cachedCacheMap) {\n return cachedCacheMap;\n }\n\n const cacheMap: CacheMap = new Map();\n cacheMapBySchema.set(schema, cacheMap);\n return cacheMap;\n};\n\nexport const createFieldFactories = <TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string>(\n schema: TSchema,\n typeName: TTypeName,\n): FieldSelectionFactories<TSchema, TTypeName> => {\n const cacheMap = ensureCacheMapBySchema(schema);\n const cached = cacheMap.get(typeName);\n if (cached) {\n return cached as unknown as FieldSelectionFactories<TSchema, TTypeName>;\n }\n\n const factories = createFieldFactoriesInner(schema, typeName);\n cacheMap.set(typeName, factories as unknown as Record<string, AnyFieldSelectionFactory>);\n\n return factories;\n};\n\nconst createFieldFactoriesInner = <TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string>(\n schema: TSchema,\n typeName: TTypeName,\n): FieldSelectionFactories<TSchema, TTypeName> => {\n const typeDef = schema.object[typeName];\n if (!typeDef) {\n throw new Error(`Type ${typeName} is not defined in schema objects`);\n }\n\n const entries = Object.entries(typeDef.fields).map(([fieldName, type]): [string, AnyFieldSelectionFactory] => {\n const factory: AnyFieldSelectionFactory = <TAlias extends string | null = null>(\n fieldArgs: AnyFieldSelection[\"args\"] | null | void,\n extras?: { alias?: TAlias; directives?: AnyFieldSelection[\"directives\"] },\n ) => {\n const wrap = <T>(value: T) => wrapByKey((extras?.alias ?? fieldName) as TAlias extends null ? string : TAlias, value);\n\n if (type.kind === \"object\") {\n type TSelection = AnyFieldSelection & { type: OutputObjectSpecifier };\n const factoryReturn = (<TNested extends AnyNestedObject>(\n nest: NestedObjectFieldsBuilder<TSchema, TSelection[\"type\"][\"name\"], TNested>,\n ) => {\n // Build new path for this field\n const currentPath = getCurrentFieldPath();\n const newPath = appendToPath(currentPath, {\n field: fieldName,\n parentType: typeName,\n isList: isListType(type.modifier),\n });\n\n // Run nested builder with updated path context\n const nestedFields = withFieldPath(newPath, () => nest({ f: createFieldFactories(schema, type.name) }));\n\n return wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: nestedFields,\n union: null,\n });\n }) as unknown as AnyFieldSelectionFactoryReturn<TAlias>;\n\n return factoryReturn;\n }\n\n if (type.kind === \"union\") {\n type TSelection = AnyFieldSelection & { type: OutputUnionSpecifier };\n const factoryReturn = (<TNested extends AnyNestedUnion>(\n nest: NestedUnionFieldsBuilder<TSchema, UnionMemberName<TSchema, TSelection[\"type\"]>, TNested>,\n ) => {\n // Build new path for this field\n const currentPath = getCurrentFieldPath();\n const newPath = appendToPath(currentPath, {\n field: fieldName,\n parentType: typeName,\n isList: isListType(type.modifier),\n });\n\n // Run nested builders with updated path context\n const nestedUnion = withFieldPath(newPath, () =>\n mapValues(\n nest as Record<string, NestedObjectFieldsBuilder<TSchema, string, AnyNestedObject> | undefined>,\n (builder, memberName) => {\n if (!builder) {\n throw new Error(`Builder is undefined for member name: ${memberName}`);\n }\n return builder({ f: createFieldFactories(schema, memberName) });\n },\n ),\n ) as TNested;\n\n return wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: nestedUnion,\n });\n }) as unknown as AnyFieldSelectionFactoryReturn<TAlias>;\n\n return factoryReturn;\n }\n\n if (type.kind === \"scalar\" || type.kind === \"enum\" || type.kind === \"typename\") {\n const factoryReturn: AnyFieldSelectionFactoryReturn<TAlias> = wrap({\n parent: typeName,\n field: fieldName,\n type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: null,\n });\n return factoryReturn;\n }\n\n throw new Error(`Unsupported field type: ${type satisfies never}`);\n };\n\n return [fieldName, factory] as const;\n });\n\n const factories: Record<string, AnyFieldSelectionFactory> = Object.fromEntries(entries);\n\n return factories as unknown as FieldSelectionFactories<TSchema, TTypeName>;\n};\n","/**\n * Context passed to the definition factory during evaluation.\n */\nexport type LazyEvaluatorContext = {\n canonicalId: string;\n};\n\n/**\n * Factory function that produces the definition value.\n * Can be sync or async.\n */\nexport type LazyDefinitionFactory<T> = (context: LazyEvaluatorContext | null) => T | Promise<T>;\n\n/**\n * Function that provides dependencies to evaluate before the main definition.\n */\nexport type LazyDependencyProvider<TDep> = () => TDep[];\n\n/**\n * Internal generator that handles the evaluation protocol.\n */\nexport type LazyEvaluatorExecutor<T> = (context: LazyEvaluatorContext | null) => Generator<Promise<void>, T, void>;\n\n/**\n * Creates a lazy evaluator with caching, async support, and dependency ordering.\n *\n * @param define - Factory function that produces the value\n * @param getDeps - Optional function returning dependencies to evaluate first\n * @param createDepGenerator - Function to create evaluation generator for a dependency\n * @returns An executor generator function\n */\nexport const createLazyEvaluator = <T, TDep>(\n define: LazyDefinitionFactory<T>,\n getDeps: LazyDependencyProvider<TDep> | undefined,\n createDepGenerator: (dep: TDep) => Generator<Promise<void>, void, void>,\n): LazyEvaluatorExecutor<T> => {\n let cache: { value: T } | null = null;\n let promise: Promise<void> | null = null;\n\n return function* execute(context: LazyEvaluatorContext | null): Generator<Promise<void>, T, void> {\n if (cache) {\n return cache.value;\n }\n\n if (promise) {\n yield promise;\n // biome-ignore lint/style/noNonNullAssertion: cache is guaranteed to be set after promise resolves\n return cache!.value;\n }\n\n if (getDeps) {\n // Need to evaluate the dependencies before the current element is evaluated.\n //\n // When dependencies is evaluated while the current element is being evaluated,\n // the evaluation method will be synchronous regardless of how the current builder\n // performs. If the dependencies need to be evaluated asynchronously, they throw an error.\n for (const dep of getDeps()) {\n yield* createDepGenerator(dep);\n }\n }\n\n const defined = define(context);\n if (!(defined instanceof Promise)) {\n return (cache = { value: defined }).value;\n }\n\n // Create a promise to resolve the value of the element asynchronously.\n // Yield the promise to make the builder process handle the asynchronous operation if it supports it.\n promise = defined.then((value) => {\n cache = { value };\n promise = null;\n });\n\n yield promise;\n // biome-ignore lint/style/noNonNullAssertion: cache is guaranteed to be set after promise resolves\n return cache!.value;\n };\n};\n\n/**\n * Creates an evaluation generator from an executor.\n * Wraps the executor's generator and discards its return value.\n */\nexport function* createEvaluationGenerator<T>(\n executor: LazyEvaluatorExecutor<T>,\n context: LazyEvaluatorContext | null,\n): Generator<Promise<void>, void, void> {\n yield* executor(context);\n}\n\n/**\n * Executes the evaluator synchronously.\n * Throws if async operation is encountered.\n */\nexport const evaluateSync = <T>(executor: LazyEvaluatorExecutor<T>, context: LazyEvaluatorContext | null): T => {\n const result = executor(context).next();\n\n if (!result.done) {\n throw new Error(\"Async operation is not supported in sync evaluation.\");\n }\n\n return result.value;\n};\n","import {\n createLazyEvaluator,\n type LazyEvaluatorContext,\n type LazyEvaluatorExecutor,\n createEvaluationGenerator as lazyCreateEvaluationGenerator,\n evaluateSync as lazyEvaluateSync,\n} from \"./lazy-evaluator\";\n\nconst GQL_ELEMENT_FACTORY = Symbol(\"GQL_ELEMENT_FACTORY\");\nconst GQL_ELEMENT_CONTEXT = Symbol(\"GQL_ELEMENT_CONTEXT\");\n\nexport type GqlElementContext = LazyEvaluatorContext;\n\nexport type GqlElementDefinitionFactory<T> = (context: GqlElementContext | null) => T | Promise<T>;\n\nexport type GqlElementAttachment<TElement extends object, TName extends string, TValue extends object> = {\n name: TName;\n createValue: (element: TElement) => TValue;\n};\n\nexport abstract class GqlElement<TDefinition extends object, TInfer extends object> {\n declare readonly $infer: TInfer;\n\n private [GQL_ELEMENT_FACTORY]: LazyEvaluatorExecutor<TDefinition>;\n private [GQL_ELEMENT_CONTEXT]: GqlElementContext | null = null;\n\n protected constructor(define: GqlElementDefinitionFactory<TDefinition>, getDeps?: () => GqlElement<any, any>[]) {\n this[GQL_ELEMENT_FACTORY] = createLazyEvaluator(define, getDeps, GqlElement.createEvaluationGenerator);\n\n Object.defineProperty(this, \"$infer\", {\n get() {\n throw new Error(\"This property is only for type meta. Do not access this property directly.\");\n },\n });\n }\n\n public attach<TName extends string, TValue extends object>(attachment: GqlElementAttachment<this, TName, TValue>) {\n let cache: TValue | null = null;\n\n Object.defineProperty(this, attachment.name, {\n get() {\n if (cache) {\n return cache;\n }\n\n GqlElement.evaluateInstantly(this);\n\n return (cache = attachment.createValue(this));\n },\n });\n\n return this as this & { [_ in TName]: TValue };\n }\n\n static setContext<TElement extends GqlElement<any, any>>(element: TElement, context: GqlElementContext): void {\n element[GQL_ELEMENT_CONTEXT] = context;\n }\n\n static createEvaluationGenerator(element: GqlElement<any, any>): Generator<Promise<void>, void, void> {\n return lazyCreateEvaluationGenerator(element[GQL_ELEMENT_FACTORY], element[GQL_ELEMENT_CONTEXT]);\n }\n\n private static evaluateInstantly<TValue extends object>(element: GqlElement<TValue, any>): TValue {\n return lazyEvaluateSync(element[GQL_ELEMENT_FACTORY], element[GQL_ELEMENT_CONTEXT]);\n }\n\n static evaluateSync(element: GqlElement<any, any>): void {\n void GqlElement.evaluateInstantly(element);\n }\n\n static get<TValue extends object>(element: GqlElement<TValue, any>): TValue {\n return GqlElement.evaluateInstantly(element);\n }\n}\n","/** Fragment helper types mirroring the `gql.fragment` API. */\n\nimport type { OptionalArg } from \"../../utils/empty-object\";\nimport type { AnyAssignableInput, AnyFields, AssignableInput, InferFields } from \"../fragment\";\nimport type { AnyGraphqlSchema } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement } from \"./gql-element\";\n\nexport type AnyFragment = Fragment<string, any, AnyFields, any>;\n\nexport type FragmentInferMeta<TVariables, TOutput extends object> = {\n readonly input: TVariables;\n readonly output: TOutput;\n};\n\ninterface FragmentArtifact<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n> {\n readonly typename: TTypeName;\n readonly spread: (variables: TVariables) => TFields;\n}\n\ndeclare const __FRAGMENT_BRAND__: unique symbol;\nexport class Fragment<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TOutput extends object,\n >\n extends GqlElement<FragmentArtifact<TTypeName, TVariables, TFields>, FragmentInferMeta<TVariables, TOutput>>\n implements FragmentArtifact<TTypeName, TVariables, TFields>\n{\n private declare readonly [__FRAGMENT_BRAND__]: void;\n\n private constructor(define: () => FragmentArtifact<TTypeName, TVariables, TFields>) {\n super(define);\n }\n\n public get typename() {\n return GqlElement.get(this).typename;\n }\n public get spread() {\n return GqlElement.get(this).spread;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n >(\n define: () => {\n typename: TTypeName;\n spread: (variables: OptionalArg<AssignableInput<TSchema, TVariableDefinitions>>) => TFields;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Output = InferFields<TSchema, TFields> & { [key: symbol]: never };\n type Variables = OptionalArg<AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Fragment<TTypeName, Variables, Fields, Output>(define as () => FragmentArtifact<TTypeName, Variables, Fields>);\n }\n}\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { AnyFields, InferFields } from \"../fragment\";\nimport type { AnyConstAssignableInput, AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement, type GqlElementContext } from \"./gql-element\";\n\nexport type AnyOperation = AnyOperationOf<\"query\"> | AnyOperationOf<\"mutation\"> | AnyOperationOf<\"subscription\">;\nexport type AnyOperationOf<TOperationType extends OperationType> = Operation<\n TOperationType,\n string,\n string[],\n any,\n AnyFields,\n any\n>;\n\nexport type OperationInferMeta<TVariables, TData extends object> = {\n readonly input: TVariables;\n readonly output: TData;\n};\n\ndeclare const __OPERATION_BRAND__: unique symbol;\n\ntype OperationArtifact<\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TFields extends Partial<AnyFields>,\n TData extends object,\n> = {\n readonly operationType: TOperationType;\n readonly operationName: TOperationName;\n readonly variableNames: TVariableNames;\n readonly documentSource: () => TFields;\n readonly document: TypedDocumentNode<TData, TVariables>;\n readonly metadata?: unknown;\n};\n\nexport class Operation<\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TFields extends Partial<AnyFields>,\n TData extends object,\n >\n extends GqlElement<\n OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>,\n OperationInferMeta<TVariables, TData>\n >\n implements OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n{\n private declare readonly [__OPERATION_BRAND__]: void;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) =>\n | OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n | Promise<OperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>>,\n ) {\n super(define);\n }\n\n public get operationType() {\n return GqlElement.get(this).operationType;\n }\n public get operationName() {\n return GqlElement.get(this).operationName;\n }\n public get variableNames() {\n return GqlElement.get(this).variableNames;\n }\n public get documentSource() {\n return GqlElement.get(this).documentSource;\n }\n public get document() {\n return GqlElement.get(this).document;\n }\n public get metadata() {\n return GqlElement.get(this).metadata;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n >(\n define: (context: GqlElementContext | null) =>\n | {\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n documentSource: () => TFields;\n document: TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVariableDefinitions>>;\n metadata?: unknown;\n }\n | Promise<{\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n documentSource: () => TFields;\n document: TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVariableDefinitions>>;\n metadata?: unknown;\n }>,\n ) {\n return new Operation(define);\n }\n}\n","/**\n * Fragment usage context using shared value container pattern.\n *\n * This module tracks fragment usages during operation building,\n * allowing metadata from spread fragments to be collected and aggregated.\n * Similar to field-path-context, uses a shared mutable container.\n */\n\nimport type { FieldPath } from \"./field-path-context\";\n\n/**\n * Record of a fragment being spread in an operation.\n * Stores metadata builder (not fragment reference) since fragment cannot reference itself.\n *\n * @template TFragmentMetadata - The type of metadata produced by the fragment's metadata builder\n */\nexport type FragmentUsageRecord<TFragmentMetadata = unknown> = {\n /** Metadata builder factory from the fragment, if defined */\n readonly metadataBuilder: (() => TFragmentMetadata | Promise<TFragmentMetadata>) | null;\n /** Field path where the fragment was spread */\n readonly path: FieldPath | null;\n};\n\n/**\n * Shared mutable container for collecting fragment usages.\n * Only synchronous access is supported.\n */\nconst fragmentUsageContext: { current: FragmentUsageRecord[] | null } = {\n current: null,\n};\n\n/**\n * Run a function with fragment usage collection enabled.\n * Returns both the function result and collected fragment usages.\n *\n * @internal\n */\nexport const withFragmentUsageCollection = <T>(fn: () => T): { result: T; usages: FragmentUsageRecord[] } => {\n const previousCollector = fragmentUsageContext.current;\n const usages: FragmentUsageRecord[] = [];\n fragmentUsageContext.current = usages;\n try {\n const result = fn();\n return { result, usages };\n } finally {\n fragmentUsageContext.current = previousCollector;\n }\n};\n\n/**\n * Record a fragment usage. Called when fragment.spread() is invoked.\n * No-op if not in a collection context.\n *\n * @internal\n */\nexport const recordFragmentUsage = (record: FragmentUsageRecord): void => {\n if (fragmentUsageContext.current) {\n fragmentUsageContext.current.push(record);\n }\n};\n","import {\n type AnyAssignableInput,\n type AssigningInput,\n createVarRefFromNestedValue,\n createVarRefFromVariable,\n isVarRef,\n} from \"../types/fragment\";\nimport type { AnyGraphqlSchema, InferInputProfile } from \"../types/schema\";\nimport type { AnyVarRef, InputTypeSpecifiers, NestedValue } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\n\nexport const createVarAssignments = <TSchema extends AnyGraphqlSchema, TVariableDefinitions extends InputTypeSpecifiers>(\n definitions: TVariableDefinitions,\n providedValues: AnyAssignableInput | void,\n): AssigningInput<TSchema, TVariableDefinitions> => {\n return mapValues(definitions, (_definition, key): AnyVarRef => {\n const varName = key as string;\n if (!providedValues || providedValues[varName] === undefined) {\n return createVarRefFromNestedValue<InferInputProfile<TSchema, typeof _definition>>(undefined);\n }\n\n const provided = providedValues[varName];\n if (isVarRef(provided)) {\n return provided;\n }\n\n return createVarRefFromNestedValue<InferInputProfile<TSchema, typeof _definition>>(provided as NestedValue);\n }) as AssigningInput<TSchema, TVariableDefinitions>;\n};\n\nexport const createVarRefs = <TSchema extends AnyGraphqlSchema, TVarDefinitions extends InputTypeSpecifiers>(\n definitions: TVarDefinitions,\n) =>\n mapValues(definitions as InputTypeSpecifiers, (_ref, name) =>\n createVarRefFromVariable<InferInputProfile<TSchema, typeof _ref>>(name),\n ) as AssigningInput<TSchema, TVarDefinitions>;\n","import { type FieldsBuilder, Fragment } from \"../types/element\";\nimport type { AnyFields, AssigningInput } from \"../types/fragment\";\nimport type { AnyMetadataAdapter, DefaultMetadataAdapter, ExtractAdapterTypes, FragmentMetadataBuilder } from \"../types/metadata\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { getCurrentFieldPath } from \"./field-path-context\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { recordFragmentUsage } from \"./fragment-usage-context\";\nimport { createVarAssignments, type createVarRefs } from \"./input\";\n\n/**\n * Type alias for a fragment builder function for a specific object type.\n * Used in codegen to generate explicit fragment builder types instead of mapped types.\n */\nexport type FragmentBuilderFor<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n> = <TFields extends AnyFields, TVarDefinitions extends InputTypeSpecifiers = {}>(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>,\n ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"]\n >;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n}) => ReturnType<typeof Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>>;\n\nexport const createGqlFragmentComposers = <\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n>(\n schema: NoInfer<TSchema>,\n _adapter?: TAdapter,\n) => {\n type TFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"];\n\n type FragmentBuilder<TTypeName extends keyof TSchema[\"object\"] & string> = <\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers = {},\n >(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>, TFragmentMetadata>;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => ReturnType<typeof Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>>;\n\n const createFragmentComposer = <TTypeName extends keyof TSchema[\"object\"] & string>(\n typename: TTypeName,\n ): FragmentBuilder<TTypeName> => {\n return <TFields extends AnyFields, TVarDefinitions extends InputTypeSpecifiers = {}>(options: {\n variables?: TVarDefinitions;\n metadata?: FragmentMetadataBuilder<AssigningInput<TSchema, TVarDefinitions>, TFragmentMetadata>;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => {\n const varDefinitions = (options.variables ?? {}) as TVarDefinitions;\n const { metadata, fields } = options;\n\n return Fragment.create<TSchema, TTypeName, TVarDefinitions, TFields>(() => ({\n typename,\n spread: (variables) => {\n const f = createFieldFactories(schema, typename);\n const $ = createVarAssignments<TSchema, TVarDefinitions>(varDefinitions, variables);\n\n recordFragmentUsage({\n metadataBuilder: metadata ? () => metadata({ $ }) : null,\n path: getCurrentFieldPath(),\n });\n\n return fields({ f, $ });\n },\n }));\n };\n };\n\n type FragmentBuildersAll = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string ? FragmentBuilder<TTypeName> : never;\n };\n\n // Include operation roots (Query, Mutation, Subscription) for fragment colocation\n // These allow defining reusable fragments on operation root types\n type FragmentBuilders = FragmentBuildersAll;\n\n return mapValues(schema.object, (_, typename) => createFragmentComposer(typename)) as FragmentBuilders;\n};\n","import type { FieldPath } from \"../../composer/field-path-context\";\nimport type { OperationMetadata } from \"./metadata\";\n\n/**\n * Information about a fragment's metadata when spread in an operation.\n */\nexport type FragmentMetaInfo<TFragmentMetadata> = {\n /** The evaluated metadata from the fragment, if defined */\n readonly metadata: TFragmentMetadata | undefined;\n /** Field path where the fragment was spread */\n readonly fieldPath: FieldPath | null;\n};\n\n/**\n * Metadata adapter that defines how fragment metadata is aggregated\n * and provides schema-level configuration.\n *\n * This adapter allows complete customization of:\n * - Fragment metadata type (TFragmentMetadata)\n * - How fragment metadata is aggregated (aggregateFragmentMetadata)\n * - Schema-level fixed values available to all operation metadata builders (schemaLevel)\n *\n * Note: Operation metadata type is inferred from the operation's metadata callback return type.\n *\n * @template TFragmentMetadata - The metadata type returned by fragment metadata builders\n * @template TAggregatedFragmentMetadata - The type returned by aggregateFragmentMetadata\n * @template TSchemaLevel - The type of schema-level configuration values\n */\nexport type MetadataAdapter<TFragmentMetadata = unknown, TAggregatedFragmentMetadata = unknown, TSchemaLevel = unknown> = {\n /**\n * Aggregates metadata from all spread fragments in an operation.\n * Called with the metadata from each spread fragment.\n * The return type becomes the `fragmentMetadata` parameter in operation metadata builders.\n */\n readonly aggregateFragmentMetadata: (fragments: readonly FragmentMetaInfo<TFragmentMetadata>[]) => TAggregatedFragmentMetadata;\n /**\n * Schema-level fixed values that are passed to all operation metadata builders.\n * Useful for configuration that should be consistent across all operations.\n */\n readonly schemaLevel?: TSchemaLevel;\n};\n\n/**\n * Extracts the type parameters from a MetadataAdapter.\n */\nexport type ExtractAdapterTypes<T> = T extends MetadataAdapter<infer TFragment, infer TAggregated, infer TSchemaLevel>\n ? {\n fragmentMetadata: TFragment;\n aggregatedFragmentMetadata: TAggregated;\n schemaLevel: TSchemaLevel;\n }\n : never;\n\n/**\n * Generic type for any metadata adapter.\n */\nexport type AnyMetadataAdapter = MetadataAdapter<any, any, any>;\n\n/**\n * Unified adapter that combines helpers and metadata configuration.\n *\n * @template THelpers - Custom helper functions accessible in gql composer callbacks\n * @template TFragmentMetadata - The metadata type returned by fragment metadata builders\n * @template TAggregatedFragmentMetadata - The type returned by aggregateFragmentMetadata\n * @template TSchemaLevel - The type of schema-level configuration values\n *\n * @example\n * ```typescript\n * const adapter = defineAdapter({\n * helpers: {\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * },\n * },\n * metadata: {\n * aggregateFragmentMetadata: (fragments) => fragments.map((m) => m.metadata),\n * schemaLevel: { apiVersion: \"v2\" },\n * },\n * });\n * ```\n */\nexport type Adapter<\n THelpers extends object = object,\n TFragmentMetadata = unknown,\n TAggregatedFragmentMetadata = unknown,\n TSchemaLevel = unknown,\n> = {\n /** Custom helper functions accessible in gql composer callbacks */\n readonly helpers?: THelpers;\n /** Metadata configuration for fragments and operations */\n readonly metadata?: MetadataAdapter<TFragmentMetadata, TAggregatedFragmentMetadata, TSchemaLevel>;\n};\n\n/**\n * Generic type for any unified adapter.\n */\nexport type AnyAdapter = Adapter<any, any, any, any>;\n\n/**\n * Extracts the type parameters from a unified Adapter.\n */\nexport type ExtractUnifiedAdapterTypes<T> = T extends Adapter<\n infer THelpers,\n infer TFragment,\n infer TAggregated,\n infer TSchemaLevel\n>\n ? {\n helpers: THelpers;\n fragmentMetadata: TFragment;\n aggregatedFragmentMetadata: TAggregated;\n schemaLevel: TSchemaLevel;\n }\n : never;\n\n/**\n * Default adapter that maintains backwards compatibility with the original behavior.\n * Uses OperationMetadata for fragment metadata and aggregates by collecting metadata into a readonly array.\n */\nexport type DefaultMetadataAdapter = MetadataAdapter<OperationMetadata, readonly (OperationMetadata | undefined)[]>;\n\n/**\n * Default unified adapter type.\n */\nexport type DefaultAdapter = Adapter<object, OperationMetadata, readonly (OperationMetadata | undefined)[]>;\n\n/**\n * Creates the default adapter instance.\n * @internal\n */\nexport const createDefaultAdapter = (): DefaultMetadataAdapter => ({\n aggregateFragmentMetadata: (fragments) => fragments.map((m) => m.metadata),\n});\n\n/**\n * The default adapter instance.\n */\nexport const defaultMetadataAdapter: DefaultMetadataAdapter = createDefaultAdapter();\n","import { type FieldsBuilder, Operation } from \"../types/element\";\nimport type { AnyFields } from \"../types/fragment\";\nimport type {\n AnyMetadataAdapter,\n DefaultMetadataAdapter,\n ExtractAdapterTypes,\n FragmentMetaInfo,\n MetadataBuilder,\n} from \"../types/metadata\";\nimport { defaultMetadataAdapter } from \"../types/metadata\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { buildDocument } from \"./build-document\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { withFragmentUsageCollection } from \"./fragment-usage-context\";\nimport { createVarRefs } from \"./input\";\n\nexport const createOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n>(\n schema: NoInfer<TSchema>,\n adapter?: TAdapter,\n) => {\n const resolvedAdapter = adapter ?? (defaultMetadataAdapter as TAdapter);\n\n type TFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"fragmentMetadata\"];\n type TAggregatedFragmentMetadata = ExtractAdapterTypes<TAdapter>[\"aggregatedFragmentMetadata\"];\n type TSchemaLevel = ExtractAdapterTypes<TAdapter>[\"schemaLevel\"];\n\n return <TOperationType extends OperationType>(operationType: TOperationType) => {\n type TTypeName = TSchema[\"operations\"][TOperationType] & keyof TSchema[\"object\"] & string;\n const operationTypeName: TTypeName | null = schema.operations[operationType];\n if (operationTypeName === null) {\n throw new Error(`Operation type ${operationType} is not defined in schema roots`);\n }\n\n return <\n TOperationName extends string,\n TFields extends AnyFields,\n TVarDefinitions extends InputTypeSpecifiers = {},\n TOperationMetadata = unknown,\n >(options: {\n name: TOperationName;\n variables?: TVarDefinitions;\n metadata?: MetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, TVarDefinitions>>,\n TOperationMetadata,\n TAggregatedFragmentMetadata,\n TSchemaLevel\n >;\n fields: FieldsBuilder<TSchema, TTypeName, TVarDefinitions, TFields>;\n }) => {\n return Operation.create<TSchema, TOperationType, TOperationName, TVarDefinitions, TFields>(() => {\n const { name: operationName } = options;\n const variables = (options.variables ?? {}) as TVarDefinitions;\n const $ = createVarRefs<TSchema, TVarDefinitions>(variables);\n const f = createFieldFactories(schema, operationTypeName);\n\n // Collect fragment usages during field building\n const { result: fields, usages: fragmentUsages } = withFragmentUsageCollection(() => options.fields({ f, $ }));\n\n const document = buildDocument<TSchema, TFields, TVarDefinitions>({\n operationName,\n operationType,\n variables,\n fields,\n });\n\n const createDefinition = (metadata: TOperationMetadata | undefined) => ({\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof TVarDefinitions & string)[],\n documentSource: () => fields,\n document,\n metadata,\n });\n\n // Check if any fragment has a metadata builder\n const hasFragmentMetadata = fragmentUsages.some((u) => u.metadataBuilder);\n\n if (!hasFragmentMetadata && !options.metadata) {\n // No metadata to evaluate\n return createDefinition(undefined);\n }\n\n // Evaluate fragment metadata first (sync or async)\n const fragmentMetadataResults: (TFragmentMetadata | undefined | Promise<TFragmentMetadata>)[] = fragmentUsages.map(\n (usage) => (usage.metadataBuilder ? usage.metadataBuilder() : undefined),\n );\n\n // Check if any fragment metadata is async\n const hasAsyncFragmentMetadata = fragmentMetadataResults.some((r) => r instanceof Promise);\n\n // Helper to aggregate and call operation metadata builder\n const buildOperationMetadata = (\n resolvedFragmentMetadata: (TFragmentMetadata | undefined)[],\n ): TOperationMetadata | undefined | Promise<TOperationMetadata | undefined> => {\n // Build FragmentMetaInfo array for adapter\n const fragmentMetaInfos: FragmentMetaInfo<TFragmentMetadata>[] = fragmentUsages.map((usage, index) => ({\n metadata: resolvedFragmentMetadata[index],\n fieldPath: usage.path,\n }));\n\n // Aggregate using the adapter\n const aggregatedFragmentMetadata = resolvedAdapter.aggregateFragmentMetadata(\n fragmentMetaInfos,\n ) as TAggregatedFragmentMetadata;\n\n // Call operation metadata builder with aggregated fragment metadata and schema-level config\n const schemaLevel = resolvedAdapter.schemaLevel as TSchemaLevel | undefined;\n return options.metadata?.({ $, document, fragmentMetadata: aggregatedFragmentMetadata, schemaLevel });\n };\n\n if (hasAsyncFragmentMetadata) {\n // Handle async fragment metadata\n return Promise.all(fragmentMetadataResults).then(async (resolvedFragmentMetadata) => {\n const operationMetadata = await buildOperationMetadata(resolvedFragmentMetadata);\n return createDefinition(operationMetadata);\n });\n }\n\n // All fragment metadata is sync, evaluate operation metadata\n const syncFragmentMetadata = fragmentMetadataResults as (TFragmentMetadata | undefined)[];\n const operationMetadataResult = buildOperationMetadata(syncFragmentMetadata);\n\n if (operationMetadataResult instanceof Promise) {\n return operationMetadataResult.then(createDefinition);\n }\n\n return createDefinition(operationMetadataResult);\n });\n };\n };\n};\n","import type {\n AllInputTypeNames,\n AnyConstDirectiveAttachments,\n AnyGraphqlSchema,\n ConstAssignableInputValue,\n InferInputKind,\n} from \"../types/schema\";\nimport type { InputTypeKind, TypeModifier } from \"../types/type-foundation\";\nimport {\n getNameAt,\n getValueAt,\n getVariablePath,\n getVarRefInner,\n getVarRefName,\n getVarRefValue,\n} from \"../types/type-foundation/var-ref\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\n\n/**\n * Type for the default value function for a variable.\n */\ntype AssignableDefaultValue<\n TSchema extends AnyGraphqlSchema,\n TKind extends InputTypeKind,\n TName extends string,\n TModifier extends TypeModifier,\n> = ConstAssignableInputValue<\n TSchema,\n {\n scalar: { kind: \"scalar\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n enum: { kind: \"enum\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n input: { kind: \"input\"; name: TName; modifier: TModifier; directives: {}; defaultValue: null };\n }[TKind]\n>;\n\n/**\n * Variable specifier type.\n */\nexport type VarSpecifier<\n TKind extends InputTypeKind,\n TTypeName extends string,\n TModifier extends TypeModifier,\n TDefaultFn extends (() => unknown) | null,\n TDirectives extends AnyConstDirectiveAttachments,\n> = {\n kind: TKind;\n name: TTypeName;\n modifier: TModifier;\n defaultValue: TDefaultFn extends null\n ? null\n : {\n default: ReturnType<NonNullable<TDefaultFn>>;\n };\n directives: TDirectives;\n};\n\n/**\n * Creates a variable method for a specific input type.\n * This is used by codegen to generate type-specific variable methods.\n *\n * @deprecated Use createVarMethodFactory instead for proper type inference with nested input objects.\n */\nexport const createVarMethod = <TKind extends InputTypeKind, TTypeName extends string>(kind: TKind, typeName: TTypeName) => {\n return <\n TSchema extends AnyGraphqlSchema,\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n ): VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives> =>\n ({\n kind,\n name: typeName,\n modifier,\n defaultValue: extras?.default ? { default: extras.default() } : null,\n directives: extras?.directives ?? {},\n }) as VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives>;\n};\n\n/**\n * Creates a factory function for generating schema-scoped variable methods.\n * This ensures proper type inference for nested input objects by binding the schema type upfront.\n *\n * @example\n * ```typescript\n * const createMethod = createVarMethodFactory<typeof schema>();\n * const inputTypeMethods = {\n * Boolean: createMethod(\"scalar\", \"Boolean\"),\n * user_bool_exp: createMethod(\"input\", \"user_bool_exp\"),\n * } satisfies InputTypeMethods<typeof schema>;\n * ```\n */\nexport const createVarMethodFactory = <TSchema extends AnyGraphqlSchema>() => {\n return <TKind extends InputTypeKind, TTypeName extends AllInputTypeNames<TSchema>>(\n kind: TKind,\n typeName: TTypeName,\n ): InputTypeMethod<TSchema, TKind, TTypeName> => {\n return ((modifier, extras) => ({\n kind,\n name: typeName,\n modifier,\n defaultValue: extras?.default ? { default: extras.default() } : null,\n directives: extras?.directives ?? {},\n })) as InputTypeMethod<TSchema, TKind, TTypeName>;\n };\n};\n\n/**\n * Type for a single input type method.\n */\nexport type InputTypeMethod<TSchema extends AnyGraphqlSchema, TKind extends InputTypeKind, TTypeName extends string> = <\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n>(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n) => VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives>;\n\n/**\n * Type for all input type methods in a schema.\n */\nexport type InputTypeMethods<TSchema extends AnyGraphqlSchema> = {\n [TName in AllInputTypeNames<TSchema>]: InputTypeMethod<TSchema, InferInputKind<TSchema, TName>, TName>;\n};\n\n/**\n * Type for a wrapped variable method that includes the variable name in the result.\n */\ntype WrappedVarMethod<\n TVarName extends string,\n TSchema extends AnyGraphqlSchema,\n TKind extends InputTypeKind,\n TTypeName extends string,\n> = <\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n>(\n modifier: TModifier,\n extras?: {\n default?: TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>);\n directives?: TDirectives;\n },\n) => { [K in TVarName]: VarSpecifier<TKind, TTypeName, TModifier, TDefaultFn, TDirectives> };\n\n/**\n * Type for the variable builder methods for a specific variable name.\n */\nexport type VarBuilderMethods<TVarName extends string, TSchema extends AnyGraphqlSchema> = {\n [TName in AllInputTypeNames<TSchema>]: WrappedVarMethod<TVarName, TSchema, InferInputKind<TSchema, TName>, TName>;\n};\n\n/**\n * Type for the variable builder function.\n */\nexport type VarBuilder<TSchema extends AnyGraphqlSchema> = {\n <TVarName extends string>(varName: TVarName): VarBuilderMethods<TVarName, TSchema>;\n getName: typeof getVarRefName;\n getValue: typeof getVarRefValue;\n getInner: typeof getVarRefInner;\n getNameAt: typeof getNameAt;\n getValueAt: typeof getValueAt;\n getVariablePath: typeof getVariablePath;\n};\n\n/**\n * Generic input type method that can be called with any modifier.\n */\ntype AnyInputTypeMethod = (\n modifier: TypeModifier,\n extras?: { default?: () => unknown; directives?: AnyConstDirectiveAttachments },\n) => unknown;\n\n/**\n * Creates a variable builder that uses injected input type methods.\n */\nexport const createVarBuilder = <TSchema extends AnyGraphqlSchema>(\n inputTypeMethods: InputTypeMethods<TSchema>,\n): VarBuilder<TSchema> => {\n const varBuilder = <TVarName extends string>(varName: TVarName): VarBuilderMethods<TVarName, TSchema> => {\n const wrappedMethods = {} as VarBuilderMethods<TVarName, TSchema>;\n\n for (const [typeName, method] of Object.entries(inputTypeMethods) as [string, AnyInputTypeMethod][]) {\n Object.defineProperty(wrappedMethods, typeName, {\n value: ((modifier, extras) => wrapByKey(varName, method(modifier, extras))) satisfies AnyInputTypeMethod,\n writable: false,\n configurable: true,\n });\n }\n\n return wrappedMethods;\n };\n\n varBuilder.getName = getVarRefName;\n varBuilder.getValue = getVarRefValue;\n varBuilder.getInner = getVarRefInner;\n varBuilder.getNameAt = getNameAt;\n varBuilder.getValueAt = getValueAt;\n varBuilder.getVariablePath = getVariablePath;\n\n return varBuilder as VarBuilder<TSchema>;\n};\n","import type { AnyFragment, AnyOperation } from \"../types/element\";\nimport type { Adapter, AnyAdapter, AnyMetadataAdapter, DefaultAdapter, DefaultMetadataAdapter } from \"../types/metadata\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport { createColocateHelper } from \"./colocate\";\nimport { createGqlFragmentComposers, type FragmentBuilderFor } from \"./fragment\";\nimport { createOperationComposerFactory } from \"./operation\";\nimport { createVarBuilder, type InputTypeMethods } from \"./var-builder\";\n\nexport type GqlElementComposer<TContext> = <TResult extends AnyFragment | AnyOperation>(\n composeElement: (context: TContext) => TResult,\n) => TResult;\n\n/**\n * Extracts the helpers type from an adapter.\n */\ntype ExtractHelpers<TAdapter extends AnyAdapter> = TAdapter extends Adapter<infer THelpers, unknown, unknown, unknown>\n ? THelpers\n : object;\n\n/**\n * Extracts the metadata adapter type from an adapter.\n * Handles optional metadata property correctly.\n */\nexport type ExtractMetadataAdapter<TAdapter extends AnyAdapter> = TAdapter extends { metadata?: infer M }\n ? NonNullable<M> extends AnyMetadataAdapter\n ? NonNullable<M>\n : DefaultMetadataAdapter\n : DefaultMetadataAdapter;\n\n/**\n * Default fragment builders type computed from schema.\n * This is the mapped type that's expensive to compute for large schemas.\n */\nexport type FragmentBuildersAll<\n TSchema extends AnyGraphqlSchema,\n TAdapter extends AnyMetadataAdapter = DefaultMetadataAdapter,\n> = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string\n ? FragmentBuilderFor<TSchema, TTypeName, TAdapter>\n : never;\n};\n\nexport type GqlElementComposerOptions<TSchema extends AnyGraphqlSchema, TAdapter extends AnyAdapter = DefaultAdapter> = {\n adapter?: TAdapter;\n inputTypeMethods: InputTypeMethods<TSchema>;\n};\n\n/**\n * Creates a GQL element composer for a given schema.\n *\n * @typeParam TSchema - The GraphQL schema type\n * @typeParam TAdapter - The adapter type (optional)\n * @typeParam TFragmentBuilders - Pre-computed fragment builders type (optional, for codegen optimization)\n */\nexport const createGqlElementComposer = <\n TSchema extends AnyGraphqlSchema,\n TFragmentBuilders,\n TAdapter extends AnyAdapter = DefaultAdapter,\n>(\n schema: NoInfer<TSchema>,\n options: GqlElementComposerOptions<NoInfer<TSchema>, NoInfer<TAdapter>>,\n) => {\n type THelpers = ExtractHelpers<TAdapter>;\n type TMetadataAdapter = ExtractMetadataAdapter<TAdapter>;\n const { adapter, inputTypeMethods } = options;\n const helpers = adapter?.helpers as THelpers | undefined;\n const metadataAdapter = adapter?.metadata as TMetadataAdapter | undefined;\n const fragment = createGqlFragmentComposers<TSchema, TMetadataAdapter>(schema, metadataAdapter) as TFragmentBuilders;\n const createOperationComposer = createOperationComposerFactory<TSchema, TMetadataAdapter>(schema, metadataAdapter);\n\n // Wrap operation composers in objects with an `operation` method for extensibility\n // This allows adding more factories (e.g., query.subscription, query.fragment) in the future\n const context = {\n fragment,\n query: { operation: createOperationComposer(\"query\") },\n mutation: { operation: createOperationComposer(\"mutation\") },\n subscription: { operation: createOperationComposer(\"subscription\") },\n $var: createVarBuilder<TSchema>(inputTypeMethods),\n $colocate: createColocateHelper(),\n ...(helpers ?? ({} as THelpers)),\n };\n\n const elementComposer: GqlElementComposer<typeof context> = (composeElement) => composeElement(context);\n\n return elementComposer;\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { m as OperationType, p as OperationRoots } from "./schema-BV6-A34l.cjs";
2
- import { A as AnyFragment, D as AnyOperationOf, ot as StripFunctions } from "./index-DiVmvPZL.cjs";
1
+ import { m as OperationType, p as OperationRoots } from "./schema-Dx1yyjYB.cjs";
2
+ import { A as AnyFragment, D as AnyOperationOf, ot as StripFunctions } from "./index-BC4pZsnr.cjs";
3
3
 
4
4
  //#region packages/core/src/runtime/fragment.d.ts
5
5
  type RuntimeFragmentInput = {
package/dist/runtime.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { m as OperationType, p as OperationRoots } from "./schema-BYVVJQ-n.js";
2
- import { A as AnyFragment, D as AnyOperationOf, ot as StripFunctions } from "./index-DE5NtRAp.js";
1
+ import { m as OperationType, p as OperationRoots } from "./schema-Doa7B6U2.js";
2
+ import { A as AnyFragment, D as AnyOperationOf, ot as StripFunctions } from "./index-Baqa0tNC.js";
3
3
 
4
4
  //#region packages/core/src/runtime/fragment.d.ts
5
5
  type RuntimeFragmentInput = {
@@ -141,9 +141,9 @@ declare namespace TypeProfile {
141
141
  type AssignableObjectTypeProfile<TProfileObject extends {
142
142
  readonly [key: string]: WithMeta;
143
143
  }> = Simplify<{ readonly [K in OptionalProfileKeys<TProfileObject>]+?: TProfileObject[K] extends WithMeta ? AssignableType<TProfileObject[K]> : never } & { readonly [K in RequiredProfileKeys<TProfileObject>]-?: TProfileObject[K] extends WithMeta ? AssignableType<TProfileObject[K]> : never }>;
144
- type Type<TProfile extends TypeProfile.WithMeta> = (TProfile[0] extends [PrimitiveTypeProfile] ? ApplyTypeModifier<TProfile[0][0]["value"], TProfile[1]> : TProfile[0] extends {
144
+ type Type<TProfile extends TypeProfile.WithMeta> = ApplyTypeModifier<TProfile[0] extends [PrimitiveTypeProfile] ? TProfile[0][0]["value"] : TProfile[0] extends {
145
145
  readonly [key: string]: WithMeta;
146
- } ? ObjectTypeProfile<TProfile[0]> : never) | (TProfile[2] extends WITH_DEFAULT_INPUT ? undefined : never);
146
+ } ? ObjectTypeProfile<TProfile[0]> : never, TProfile[1]> | (TProfile[2] extends WITH_DEFAULT_INPUT ? undefined : never);
147
147
  type AssignableSignature<TProfile extends TypeProfile.WithMeta> = ApplyTypeModifier<"[TYPE_SIGNATURE]", TProfile[1]> | (TProfile[2] extends WITH_DEFAULT_INPUT ? undefined : never);
148
148
  type Signature<TProfile extends TypeProfile.WithMeta> = ApplyTypeModifier<"[TYPE_SIGNATURE]", TProfile[1]> extends infer T ? TProfile[2] extends WITH_DEFAULT_INPUT ? Exclude<T, undefined> : T : never;
149
149
  type AssignableVarRefMeta<TProfile extends TypeProfile.WithMeta> = {
@@ -634,7 +634,7 @@ type UnionDefinition = {
634
634
  * When depth is exhausted, returns `never` to cause a type error.
635
635
  * This prevents infinite recursion in self-referential types like `bool_exp`.
636
636
  */
637
- type InferInputProfile<TSchema extends AnyGraphqlSchema, TSpecifier extends InputTypeSpecifier, TDepth extends DepthCounter = GetInputTypeDepth<TSchema["__inputDepthOverrides"], TSpecifier["name"], TSchema["__defaultInputDepth"]>> = IsDepthExhausted<TDepth> extends true ? never : { [_ in TSchema["label"]]: [TSpecifier extends InputScalarSpecifier ? [TSchema["scalar"][TSpecifier["name"]]["$type"]["inputProfile"]] : TSpecifier extends InputEnumSpecifier ? [TSchema["enum"][TSpecifier["name"]]["$type"]["inputProfile"]] : TSchema["input"][TSpecifier["name"]]["fields"] extends infer TFields ? { [K in keyof TFields]: TFields[K] extends InputTypeSpecifier ? InferInputProfile<TSchema, TFields[K], DecrementDepth<TDepth>> : never } : never, TSpecifier["modifier"], TSpecifier["defaultValue"] extends AnyDefaultValue ? TypeProfile.WITH_DEFAULT_INPUT : undefined] }[TSchema["label"]];
637
+ type InferInputProfile<TSchema extends AnyGraphqlSchema, TSpecifier extends InputTypeSpecifier, TDepth extends DepthCounter = GetInputTypeDepth<TSchema["__inputDepthOverrides"], TSpecifier["name"], TSchema["__defaultInputDepth"]>> = { [_ in TSchema["label"]]: IsDepthExhausted<TDepth> extends true ? never : [TSpecifier extends InputScalarSpecifier ? [TSchema["scalar"][TSpecifier["name"]]["$type"]["inputProfile"]] : TSpecifier extends InputEnumSpecifier ? [TSchema["enum"][TSpecifier["name"]]["$type"]["inputProfile"]] : TSchema["input"][TSpecifier["name"]]["fields"] extends infer TFields ? { [K in keyof TFields]: TFields[K] extends InputTypeSpecifier ? InferInputProfile<TSchema, TFields[K], DecrementDepth<TDepth>> : never } : never, TSpecifier["modifier"], TSpecifier["defaultValue"] extends AnyDefaultValue ? TypeProfile.WITH_DEFAULT_INPUT : undefined] }[TSchema["label"]];
638
638
  type InferOutputProfile<TSchema extends AnyGraphqlSchema, TSpecifier extends OutputInferrableTypeSpecifier> = { [_ in TSchema["label"]]: [(TSpecifier extends OutputScalarSpecifier ? TSchema["scalar"][TSpecifier["name"]] : TSchema["enum"][TSpecifier["name"]])["$type"]["outputProfile"]] }[TSchema["label"]];
639
639
  type PickTypeSpecifierByFieldName<TSchema extends AnyGraphqlSchema, TTypeName$1 extends keyof TSchema["object"], TFieldName$1 extends keyof TSchema["object"][TTypeName$1]["fields"]> = TSchema["object"][TTypeName$1]["fields"][TFieldName$1];
640
640
  type InputFieldRecord<TSchema extends AnyGraphqlSchema, TSpecifier extends InputTypeSpecifier> = TSchema["input"][TSpecifier["name"]]["fields"];
@@ -651,4 +651,4 @@ type AllInputTypeNames<TSchema extends AnyGraphqlSchema> = (keyof TSchema["scala
651
651
  type InferInputKind<TSchema extends AnyGraphqlSchema, TName extends AllInputTypeNames<TSchema>> = TName extends keyof TSchema["scalar"] ? "scalar" : TName extends keyof TSchema["enum"] ? "enum" : TName extends keyof TSchema["input"] ? "input" : never;
652
652
  //#endregion
653
653
  export { MetadataAdapter as $, OutputInferrableTypeSpecifier as A, TypeProfile as At, DepthCounter as B, isListType as Bt, InputInferrableTypeSpecifier as C, getVariablePath as Ct, InputTypeSpecifier as D, GetConstAssignableType as Dt, InputTypeKind as E, GetAssigningType as Et, OutputTypeSpecifiers as F, ConstValues as Ft, Adapter as G, InputDepthOverrides as H, OutputTypenameSpecifier as I, FieldPath as It, DefaultAdapter as J, AnyAdapter as K, OutputUnionSpecifier as L, FieldPathSegment as Lt, OutputScalarSpecifier as M, TypeModifier as Mt, OutputTypeKind as N, ValidTypeModifier as Nt, InputTypeSpecifiers as O, GetModifiedType as Ot, OutputTypeSpecifier as P, ConstValue as Pt, FragmentMetaInfo as Q, DecrementDepth as R, appendToPath as Rt, InputEnumSpecifier as S, getVarRefValue as St, InputScalarSpecifier as T, isVarRef as Tt, IsDepthExhausted as U, GetInputTypeDepth as V, withFieldPath as Vt, NumberToDepth as W, ExtractAdapterTypes as X, DefaultMetadataAdapter as Y, ExtractUnifiedAdapterTypes as Z, UnionDefinition as _, createVarRefFromVariable as _t, EnumDefinition as a, MetadataBuilder as at, AnyDefaultValue as b, getVarRefInner as bt, InferOutputProfile as c, AnyVarRef as ct, ObjectDefinition as d, PathSegment as dt, createDefaultAdapter as et, ObjectFieldRecord as f, SelectableProxy as ft, ScalarDefinition as g, createVarRefFromNestedValue as gt, PickTypeSpecifierByFieldName as h, VarRefInner as ht, AnyTypeName as i, FragmentMetadataBuilderTools as it, OutputObjectSpecifier as j, ApplyTypeModifier as jt, OutputEnumSpecifier as k, PrimitiveTypeProfile as kt, InputDefinition as l, AnyVarRefMeta as lt, OperationType as m, VarRef as mt, AnyFieldName as n, ExtractMetadata as nt, InferInputKind as o, MetadataBuilderTools as ot, OperationRoots as p, Selector as pt, AnyMetadataAdapter as q, AnyGraphqlSchema as r, FragmentMetadataBuilder as rt, InferInputProfile as s, OperationMetadata as st, AllInputTypeNames as t, defaultMetadataAdapter as tt, InputFieldRecord as u, NestedValue as ut, UnionMemberName as v, getNameAt as vt, InputInputObjectSpecifier as w, hasVarRefInside as wt, AnyTypeSpecifier as x, getVarRefName as xt, UnionTypeRecord as y, getValueAt as yt, DefaultDepth as z, getCurrentFieldPath as zt };
654
- //# sourceMappingURL=schema-BYVVJQ-n.d.ts.map
654
+ //# sourceMappingURL=schema-Doa7B6U2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-Doa7B6U2.d.ts","names":[],"sources":["../src/composer/field-path-context.ts","../src/types/type-foundation/const-value.ts","../src/types/type-foundation/type-modifier-core.generated.ts","../src/types/type-foundation/type-profile.ts","../src/types/type-foundation/var-ref.ts","../src/types/metadata/metadata.ts","../src/types/metadata/adapter.ts","../src/types/type-foundation/depth-counter.ts","../src/types/type-foundation/type-specifier.ts","../src/utils/type-meta.ts","../src/types/schema/schema.ts"],"sourcesContent":[],"mappings":"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"}