@soda-gql/core 0.0.9 → 0.1.0

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.
Files changed (38) hide show
  1. package/README.md +312 -0
  2. package/dist/{index-CFNJ_Aa6.d.ts → index-DYwkqPzd.d.ts} +124 -294
  3. package/dist/index-DYwkqPzd.d.ts.map +1 -0
  4. package/dist/index-Db9ogofS.d.ts +365 -0
  5. package/dist/index-Db9ogofS.d.ts.map +1 -0
  6. package/dist/{index-DHh8XRal.d.cts → index-Dth0NSJt.d.cts} +124 -294
  7. package/dist/index-Dth0NSJt.d.cts.map +1 -0
  8. package/dist/index-zGZ61WLt.d.cts +365 -0
  9. package/dist/index-zGZ61WLt.d.cts.map +1 -0
  10. package/dist/index.cjs +132 -44
  11. package/dist/index.d.cts +3 -2
  12. package/dist/index.d.ts +3 -2
  13. package/dist/index.js +129 -45
  14. package/dist/index.js.map +1 -1
  15. package/dist/merge-CeMx09is.js +74 -0
  16. package/dist/merge-CeMx09is.js.map +1 -0
  17. package/dist/merge-ZxKV1syS.cjs +85 -0
  18. package/dist/metadata/index.cjs +62 -0
  19. package/dist/metadata/index.d.cts +71 -0
  20. package/dist/metadata/index.d.cts.map +1 -0
  21. package/dist/metadata/index.d.ts +71 -0
  22. package/dist/metadata/index.d.ts.map +1 -0
  23. package/dist/metadata/index.js +59 -0
  24. package/dist/metadata/index.js.map +1 -0
  25. package/dist/runtime/index.cjs +5 -3
  26. package/dist/runtime/index.d.cts +2 -1
  27. package/dist/runtime/index.d.cts.map +1 -1
  28. package/dist/runtime/index.d.ts +2 -1
  29. package/dist/runtime/index.d.ts.map +1 -1
  30. package/dist/runtime/index.js +5 -3
  31. package/dist/runtime/index.js.map +1 -1
  32. package/dist/{slice-ua5mSfhV.js → slice-BuSNc8vw.js} +27 -5
  33. package/dist/slice-BuSNc8vw.js.map +1 -0
  34. package/dist/{slice-DlVY4UJG.cjs → slice-C-FIQK-f.cjs} +43 -3
  35. package/package.json +8 -1
  36. package/dist/index-CFNJ_Aa6.d.ts.map +0 -1
  37. package/dist/index-DHh8XRal.d.cts.map +0 -1
  38. package/dist/slice-ua5mSfhV.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["value","field","curr: Readonly<{ modifier: string; type: TypeNode }>","cache: { value: TDefinition } | null","define","define","define","define","define","paths","fields","cacheMap: CacheMap","factory: AnyFieldSelectionFactory","factoryReturn: AnyFieldSelectionFactoryReturn<TAlias>","operationTypeName: TTypeName | null","operationTypeName: TTypeName | null","elementComposer: GqlElementComposer<typeof composers, typeof helper>"],"sources":["../src/composer/build-document.ts","../src/types/element/gql-element.ts","../src/types/element/composed-operation.ts","../src/types/element/fields-builder.ts","../src/types/element/inline-operation.ts","../src/types/element/model.ts","../src/types/element/slice.ts","../src/composer/projection-path-graph.ts","../src/composer/composed-operation.ts","../src/utils/wrap-by-key.ts","../src/composer/fields-builder.ts","../src/composer/inline-operation.ts","../src/composer/model.ts","../src/composer/slice.ts","../src/types/type-foundation/modified-type-name.ts","../src/composer/var-builder.ts","../src/composer/gql-composer.ts","../src/utils/type-meta.ts","../src/schema/type-specifier-builder.ts","../src/schema/schema-builder.ts"],"sourcesContent":["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 === \"const-value\") {\n return buildConstValueNode(inner.value);\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 ? { kind: Kind.ARGUMENT, name: { kind: Kind.NAME, value: name }, value: valueNode } : 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: { kind: Kind.NAMED_TYPE, name: { kind: Kind.NAME, value: typeName } },\n selectionSet: { kind: Kind.SELECTION_SET, selections: buildField(object) },\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 { kind: Kind.LIST, values: value.map((item) => buildConstValueNode(item)).filter((item) => item !== null) };\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 }> = { modifier, type: baseType };\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: { kind: Kind.NON_NULL_TYPE, type: { kind: Kind.LIST_TYPE, type: curr.type } },\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, () => ({ kind: Kind.NAMED_TYPE, name: { kind: Kind.NAME, value: ref.name } })),\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","const GQL_ELEMENT_FACTORY = Symbol(\"GQL_ELEMENT_FACTORY\");\nconst GQL_ELEMENT_CONTEXT = Symbol(\"GQL_ELEMENT_CONTEXT\");\n\nexport type GqlElementContext = {\n canonicalId: string;\n};\n\nexport type GqlElementDefinitionFactory<T> = (context: GqlElementContext | null) => T;\n\nexport abstract class GqlElement<TDefinition, TInfer extends object = object> {\n declare readonly $infer: TInfer;\n\n private [GQL_ELEMENT_FACTORY]: GqlElementDefinitionFactory<TDefinition>;\n private [GQL_ELEMENT_CONTEXT]: GqlElementContext | null = null;\n\n protected constructor(define: GqlElementDefinitionFactory<TDefinition>) {\n let cache: { value: TDefinition } | null = null;\n\n this[GQL_ELEMENT_FACTORY] = (context) => {\n if (cache) {\n return cache.value;\n }\n const value = define(context);\n cache = { value };\n return value;\n };\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 static setContext<TElement extends GqlElement<any>>(element: TElement, context: GqlElementContext): void {\n element[GQL_ELEMENT_CONTEXT] = context;\n }\n\n static evaluate(element: GqlElement<any>): void {\n void GqlElement.get(element);\n }\n\n static get<TValue>(element: GqlElement<TValue>): TValue {\n const context = element[GQL_ELEMENT_CONTEXT];\n return element[GQL_ELEMENT_FACTORY](context);\n }\n}\n","/** Operation composition helpers (`gql.query`, `gql.mutation`, `gql.subscription`). */\n\nimport type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { Hidden } from \"../../utils/hidden\";\nimport type { UnionToIntersection } from \"../../utils/type-utils\";\nimport type { AnyFields, AssigningInput, InferFields } from \"../fragment\";\nimport type { AnyGraphqlRuntimeAdapter, InferExecutionResultProjection, NormalizedExecutionResult } from \"../runtime\";\nimport type { AnyConstAssignableInput, AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement, type GqlElementContext } from \"./gql-element\";\nimport type { AnySlicePayloads } from \"./slice\";\n\nexport type AnyComposedOperation =\n | AnyComposedOperationOf<\"query\">\n | AnyComposedOperationOf<\"mutation\">\n | AnyComposedOperationOf<\"subscription\">;\nexport type AnyComposedOperationOf<TOperationType extends OperationType> = ComposedOperation<\n AnyGraphqlRuntimeAdapter,\n TOperationType,\n string,\n string[],\n any,\n any,\n any\n>;\n\nexport type ComposedOperationInferMeta<TVariables, TRawData extends object, TProjectedData extends object> = {\n readonly input: TVariables;\n readonly output: { readonly raw: TRawData; readonly projected: TProjectedData };\n};\n\ndeclare const __COMPOSED_OPERATION_BRAND__: unique symbol;\n\ntype ComposedOperationDefinition<\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TRawData extends object,\n TProjectedData extends object,\n> = {\n readonly operationType: TOperationType;\n readonly operationName: TOperationName;\n readonly variableNames: TVariableNames;\n readonly projectionPathGraph: ProjectionPathGraphNode;\n readonly document: TypedDocumentNode<TRawData, TVariables>;\n readonly parse: (result: NormalizedExecutionResult<TRuntimeAdapter, TRawData, any>) => TProjectedData;\n};\n\nexport class ComposedOperation<\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TRawData extends object,\n TProjectedData extends object,\n >\n extends GqlElement<\n ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >,\n ComposedOperationInferMeta<TVariables, TRawData, TProjectedData>\n >\n implements\n ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >\n{\n declare readonly [__COMPOSED_OPERATION_BRAND__]: Hidden<{\n operationType: TOperationType;\n }>;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) => ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >,\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 projectionPathGraph() {\n return GqlElement.get(this).projectionPathGraph;\n }\n public get document() {\n return GqlElement.get(this).document;\n }\n public get parse() {\n return GqlElement.get(this).parse;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TSliceFragments extends AnySlicePayloads,\n >(\n define: (context: import(\"./gql-element\").GqlElementContext | null) => {\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n projectionPathGraph: ProjectionPathGraphNode;\n document: TypedDocumentNode<\n InferComposedOperationRawData<TSchema, TSliceFragments>,\n ConstAssignableInput<TSchema, TVariableDefinitions>\n >;\n parse: (\n result: NormalizedExecutionResult<TRuntimeAdapter, InferComposedOperationRawData<TSchema, TSliceFragments>, any>,\n ) => {\n [K in keyof TSliceFragments]: InferExecutionResultProjection<TSliceFragments[K][\"projection\"]>;\n };\n },\n ) {\n return new ComposedOperation(define);\n }\n}\n\nexport type ProjectionPathGraphNode = {\n readonly matches: { label: string; path: string; exact: boolean }[];\n readonly children: { readonly [segment: string]: ProjectionPathGraphNode };\n};\n\nexport type ConcatSlicePayloads<TSlicePayloads extends AnySlicePayloads> = UnionToIntersection<\n {\n [TLabel in keyof TSlicePayloads & string]: TSlicePayloads[TLabel] extends { getFields: () => infer TFields }\n ? { [K in keyof TFields & string as `${TLabel}_${K}`]: TFields[K] }\n : {};\n }[keyof TSlicePayloads & string]\n> &\n AnyFields;\n\nexport type InferComposedOperationRawData<\n TSchema extends AnyGraphqlSchema,\n TSlicePayloads extends AnySlicePayloads,\n> = InferFields<TSchema, ConcatSlicePayloads<TSlicePayloads>>;\n\nexport type ComposedOperationDefinitionBuilder<\n TSchema extends AnyGraphqlSchema,\n TVarDefinitions extends InputTypeSpecifiers,\n TSliceContents extends AnySlicePayloads,\n> = (tools: { $: NoInfer<AssigningInput<TSchema, TVarDefinitions>> }) => TSliceContents;\n","/** Field builder factories shared by model and slice helpers. */\n\nimport type { IfEmpty } from \"../../utils/empty-object\";\nimport type { UnionToIntersection } from \"../../utils/type-utils\";\nimport type {\n AbstractFieldSelection,\n AnyAssignableInput,\n AnyDirectiveAttachments,\n AnyFieldSelection,\n AnyFields,\n AnyNestedObject,\n AnyNestedUnion,\n AssigningInput,\n FieldSelectionTemplateOf,\n} from \"../fragment\";\nimport type { AnyGraphqlSchema, ObjectFieldRecord, UnionMemberName } from \"../schema\";\nimport type {\n InputTypeSpecifiers,\n OutputEnumSpecifier,\n OutputObjectSpecifier,\n OutputScalarSpecifier,\n OutputTypenameSpecifier,\n OutputUnionSpecifier,\n} from \"../type-foundation\";\n\nexport const mergeFields = <TFieldEntries extends AnyFields[]>(fields: TFieldEntries) =>\n Object.assign({}, ...fields) as MergeFields<TFieldEntries>;\n\nexport type MergeFields<TFieldEntries extends AnyFields[]> = UnionToIntersection<\n TFieldEntries[number]\n> extends infer TFieldsIntersection\n ? {\n [TFieldName in keyof TFieldsIntersection]: TFieldsIntersection[TFieldName] extends AnyFieldSelection\n ? TFieldsIntersection[TFieldName]\n : never;\n } & {}\n : never;\n\n/**\n * Builder signature exposed to userland `model` and `slice` helpers. The\n * tooling `f`/`fields`/`_` aliases provide ergonomic access to GraphQL fields\n * while preserving the original schema information for inference.\n */\nexport type FieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields[],\n> = (tools: NoInfer<FieldsBuilderTools<TSchema, TTypeName, TVariableDefinitions>>) => TFields;\n\nexport type FieldsBuilderTools<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n> = {\n f: FieldSelectionFactories<TSchema, TTypeName>;\n $: AssigningInput<TSchema, TVariableDefinitions>;\n};\n\n/** Narrow builder used when a field resolves to an object and we need nested selections. */\nexport type NestedObjectFieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TFields extends AnyNestedObject[],\n> = (tools: NoInfer<NestedObjectFieldsBuilderTools<TSchema, TTypeName>>) => TFields;\n\nexport type NestedObjectFieldsBuilderTools<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n> = {\n f: FieldSelectionFactories<TSchema, TTypeName>;\n};\n\nexport type NestedUnionFieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TMemberName extends string,\n TUnionFields extends AnyNestedUnion,\n> = {\n [TTypename in keyof TUnionFields & TMemberName]?: NestedObjectFieldsBuilder<\n TSchema,\n TTypename,\n NonNullable<TUnionFields[TTypename]>[]\n >;\n};\n\n/** Map each field to a factory capable of emitting fully-typed references. */\nexport type FieldSelectionFactories<TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string> = {\n [TFieldName in keyof ObjectFieldRecord<TSchema, TTypeName>]: TFieldName extends string\n ? FieldSelectionFactory<TSchema, FieldSelectionTemplateOf<TSchema, TTypeName, TFieldName>>\n : never;\n};\n\nexport type AnyFieldSelectionFactory = <TAlias extends string | null = null>(\n fieldArgs: AnyAssignableInput | void,\n extras?: { alias?: TAlias; directives?: AnyDirectiveAttachments },\n) => AnyFieldSelectionFactoryReturn<TAlias>;\n\nexport type FieldSelectionFactory<TSchema extends AnyGraphqlSchema, TSelection extends AnyFieldSelection> = <\n TAlias extends string | null = null,\n>(\n fieldArgs: TSelection[\"args\"] | IfEmpty<TSelection[\"args\"], void | null>,\n extras?: { alias?: TAlias; directives?: TSelection[\"directives\"] },\n) => FieldSelectionFactoryReturn<TSchema, TSelection, TAlias>;\n\nexport type AnyFieldSelectionFactoryReturn<TAlias extends string | null> =\n | FieldSelectionFactoryReturn<AnyGraphqlSchema, AnyFieldSelection & { type: OutputObjectSpecifier }, TAlias>\n | FieldSelectionFactoryReturn<AnyGraphqlSchema, AnyFieldSelection & { type: OutputUnionSpecifier }, TAlias>\n | FieldSelectionFactoryReturn<\n AnyGraphqlSchema,\n AnyFieldSelection & { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier },\n TAlias\n >;\n\nexport type FieldSelectionFactoryReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection,\n TAlias extends string | null,\n> = TSelection extends { type: OutputObjectSpecifier }\n ? FieldSelectionFactoryObjectReturn<TSchema, TSelection, TAlias>\n : TSelection extends { type: OutputUnionSpecifier }\n ? FieldSelectionFactoryUnionReturn<TSchema, TSelection, TAlias>\n : TSelection extends { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier }\n ? FieldSelectionFactoryPrimitiveReturn<TSelection, TAlias>\n : never;\n\nexport type FieldSelectionFactoryObjectReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection & { type: OutputObjectSpecifier },\n TAlias extends string | null,\n> = <TNested extends AnyNestedObject[]>(\n nest: NestedObjectFieldsBuilder<TSchema, TSelection[\"type\"][\"name\"], TNested>,\n) => {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n { object: MergeFields<TNested> }\n >;\n};\n\nexport type FieldSelectionFactoryUnionReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection & { type: OutputUnionSpecifier },\n TAlias extends string | null,\n> = <TNested extends AnyNestedUnion>(\n nest: NestedUnionFieldsBuilder<TSchema, UnionMemberName<TSchema, TSelection[\"type\"]>, TNested>,\n) => {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n { union: TNested }\n >;\n};\n\nexport type FieldSelectionFactoryPrimitiveReturn<\n TSelection extends AnyFieldSelection & { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier },\n TAlias extends string | null,\n> = {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n {}\n >;\n};\n\nexport type FieldSelectionFactoryFieldArguments<TFieldSelectionTemplate extends AnyFieldSelection> =\n | TFieldSelectionTemplate[\"args\"]\n | IfEmpty<TFieldSelectionTemplate[\"args\"], void | null>;\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { Hidden } from \"../../utils/hidden\";\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 AnyInlineOperation =\n | AnyInlineOperationOf<\"query\">\n | AnyInlineOperationOf<\"mutation\">\n | AnyInlineOperationOf<\"subscription\">;\nexport type AnyInlineOperationOf<TOperationType extends OperationType> = InlineOperation<\n TOperationType,\n string,\n string[],\n any,\n AnyFields,\n any\n>;\n\nexport type InlineOperationInferMeta<TVariables, TData extends object> = {\n readonly input: TVariables;\n readonly output: TData;\n};\n\ndeclare const __INLINE_OPERATION_BRAND__: unique symbol;\n\ntype InlineOperationArtifact<\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};\n\nexport class InlineOperation<\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 InlineOperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>,\n InlineOperationInferMeta<TVariables, TData>\n >\n implements InlineOperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n{\n declare readonly [__INLINE_OPERATION_BRAND__]: Hidden<{\n operationType: TOperationType;\n }>;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) => InlineOperationArtifact<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\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 operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n documentSource: () => TFields;\n document: TypedDocumentNode<InferFields<TSchema, TFields>, ConstAssignableInput<TSchema, TVariableDefinitions>>;\n },\n ) {\n return new InlineOperation(define);\n }\n}\n","/** Model helper types mirroring the `gql.model` API. */\n\nimport type { SwitchIfEmpty } from \"../../utils/empty-object\";\nimport type { Hidden } from \"../../utils/hidden\";\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 AnyModel = Model<string, any, AnyFields, any, any>;\n\nexport type ModelInferMeta<TVariables, TRaw extends object, TNormalized extends object> = {\n readonly input: TVariables;\n readonly output: { readonly raw: TRaw; readonly normalized: TNormalized };\n};\n\ninterface ModelArtifact<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TRaw extends object,\n TNormalized extends object,\n> {\n readonly typename: TTypeName;\n readonly fragment: (variables: TVariables) => TFields;\n readonly normalize: (raw: TRaw) => TNormalized;\n}\n\ndeclare const __MODEL_BRAND__: unique symbol;\nexport class Model<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TRaw extends object,\n TNormalized extends object,\n >\n extends GqlElement<\n ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>,\n ModelInferMeta<TVariables, TRaw, TNormalized>\n >\n implements ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>\n{\n declare readonly [__MODEL_BRAND__]: Hidden<{\n input: TVariables;\n output: TNormalized;\n }>;\n\n private constructor(define: () => ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>) {\n super(define);\n }\n\n public get typename() {\n return GqlElement.get(this).typename;\n }\n public get fragment() {\n return GqlElement.get(this).fragment;\n }\n public get normalize() {\n return GqlElement.get(this).normalize;\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 TNormalized extends object,\n >(\n define: () => {\n typename: TTypeName;\n fragment: (variables: SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>) => TFields;\n normalize: (raw: NoInfer<InferFields<TSchema, TFields>>) => TNormalized;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Raw = InferFields<TSchema, TFields> & { [key: symbol]: never };\n type Variables = SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Model(define as () => ModelArtifact<TTypeName, Variables, Fields, Raw, TNormalized>);\n }\n}\n","import type { SwitchIfEmpty } from \"../../utils/empty-object\";\nimport type { Hidden } from \"../../utils/hidden\";\nimport type { AnyAssignableInput, AnyFields, AssignableInput } from \"../fragment\";\nimport type { AnyProjection, InferExecutionResultProjection } from \"../runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement } from \"./gql-element\";\n\nexport type AnySlice = AnySliceOf<\"query\"> | AnySliceOf<\"mutation\"> | AnySliceOf<\"subscription\">;\nexport type AnySliceOf<TOperationType extends OperationType> = Slice<TOperationType, any, AnyFields, AnyProjection>;\n\nexport type SliceInferMeta<TVariables, TProjected> = {\n readonly input: TVariables;\n readonly output: TProjected;\n};\n\ntype SliceDefinition<\n TOperationType extends OperationType,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n> = {\n readonly operationType: TOperationType;\n readonly embed: (variables: TVariables) => SlicePayload<TVariables, TFields, TProjection>;\n};\n\ndeclare const __OPERATION_SLICE_BRAND__: unique symbol;\nexport class Slice<\n TOperationType extends OperationType,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n >\n extends GqlElement<\n SliceDefinition<TOperationType, TVariables, TFields, TProjection>,\n SliceInferMeta<TVariables, InferExecutionResultProjection<TProjection>>\n >\n implements SliceDefinition<TOperationType, TVariables, TFields, TProjection>\n{\n declare readonly [__OPERATION_SLICE_BRAND__]: Hidden<{\n operationType: TOperationType;\n output: InferExecutionResultProjection<TProjection>;\n }>;\n\n private constructor(define: () => SliceDefinition<TOperationType, TVariables, TFields, TProjection>) {\n super(define);\n }\n\n public get operationType() {\n return GqlElement.get(this).operationType;\n }\n public get embed() {\n return GqlElement.get(this).embed;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TOperationType extends OperationType,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n TProjection extends AnyProjection,\n >(\n define: () => {\n operationType: TOperationType;\n embed: (\n variables: SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>,\n ) => SlicePayload<\n SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>,\n TFields,\n TProjection\n >;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Variables = SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Slice(define as () => SliceDefinition<TOperationType, Variables, Fields, TProjection>);\n }\n}\n\nexport type AnySlicePayloads = { [key: string]: AnySlicePayload };\n\nexport type AnySlicePayload = SlicePayload<AnyAssignableInput | void, AnyFields, AnyProjection>;\nexport type SlicePayload<\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n> = {\n variables: TVariables;\n getFields: () => TFields;\n projection: TProjection;\n};\n\nexport type InferOutputOfSlice<TSlice extends AnySliceOf<any>> = ReturnType<TSlice[typeof __OPERATION_SLICE_BRAND__]>[\"output\"];\n","import type { AnySlicePayload, ProjectionPathGraphNode } from \"../types/element\";\nimport { mapValues } from \"../utils/map-values\";\n\ntype ExecutionResultProjectionPathGraphIntermediate = {\n [segment: string]: { label: string; raw: string; segments: string[] }[];\n};\n\nfunction createPathGraph(paths: ExecutionResultProjectionPathGraphIntermediate[string]): ProjectionPathGraphNode {\n const intermediate = paths.reduce(\n (acc: ExecutionResultProjectionPathGraphIntermediate, { label, raw, segments: [segment, ...segments] }) => {\n if (segment) {\n (acc[segment] || (acc[segment] = [])).push({ label, raw, segments });\n }\n return acc;\n },\n {},\n );\n\n return {\n matches: paths.map(({ label, raw, segments }) => ({ label, path: raw, exact: segments.length === 0 })),\n children: mapValues(intermediate, (paths) => createPathGraph(paths)),\n } satisfies ProjectionPathGraphNode;\n}\n\nexport function createPathGraphFromSliceEntries(fragments: { [key: string]: AnySlicePayload }) {\n const paths = Object.entries(fragments).flatMap(([label, slice]) =>\n Array.from(\n new Map(\n slice.projection.paths.map(({ full: raw, segments }) => {\n const [first, ...rest] = segments;\n return [raw, { label, raw, segments: [`${label}_${first}`, ...rest] }];\n }),\n ).values(),\n ),\n );\n\n return createPathGraph(paths);\n}\n","import { createExecutionResultParser } from \"../runtime/parse-execution-result\";\nimport {\n type AnySlicePayloads,\n ComposedOperation,\n type ComposedOperationDefinitionBuilder,\n type ConcatSlicePayloads,\n} from \"../types/element\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { buildDocument } from \"./build-document\";\nimport { createVarRefs, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\nimport { createPathGraphFromSliceEntries } from \"./projection-path-graph\";\n\nexport const createComposedOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n>() => {\n return <TOperationType extends OperationType>(operationType: TOperationType) => {\n return <\n TOperationName extends string,\n TSliceFragments extends AnySlicePayloads,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n operationName: TOperationName;\n variables?: TVarDefinitions;\n },\n builder: ComposedOperationDefinitionBuilder<TSchema, MergeVarDefinitions<TVarDefinitions>, TSliceFragments>,\n ) => {\n return ComposedOperation.create<\n TSchema,\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n MergeVarDefinitions<TVarDefinitions>,\n TSliceFragments\n >(() => {\n const { operationName } = options;\n const variables = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const $ = createVarRefs<TSchema, typeof variables>(variables);\n const fragments = builder({ $ });\n\n const fields = Object.fromEntries(\n Object.entries(fragments).flatMap(([label, { getFields: fields }]) =>\n Object.entries(fields).map(([key, reference]) => [`${label}_${key}`, reference]),\n ),\n ) as ConcatSlicePayloads<TSliceFragments>;\n const projectionPathGraph = createPathGraphFromSliceEntries(fragments);\n\n return {\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof MergeVarDefinitions<TVarDefinitions> & string)[],\n projectionPathGraph,\n document: buildDocument({\n operationName,\n operationType,\n variables,\n fields,\n }),\n parse: createExecutionResultParser({ fragments, projectionPathGraph }),\n };\n });\n };\n };\n};\n","export function wrapByKey<TName extends string, TValue>(name: TName, value: TValue) {\n return {\n [name]: value,\n } as {\n [K in TName]: TValue;\n };\n}\n","import {\n type AnyFieldSelectionFactory,\n type AnyFieldSelectionFactoryReturn,\n type FieldSelectionFactories,\n type FieldSelectionFactoryObjectReturn,\n type FieldSelectionFactoryPrimitiveReturn,\n type FieldSelectionFactoryUnionReturn,\n mergeFields,\n type NestedObjectFieldsBuilder,\n type 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\";\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 wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: mergeFields(nest({ f: createFieldFactories(schema, type.name) })),\n union: null,\n } satisfies AnyFieldSelection)) 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 wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: 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 mergeFields(builder({ f: createFieldFactories(schema, memberName) }));\n },\n ) as TNested,\n } satisfies AnyFieldSelection)) 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","import { type FieldsBuilder, InlineOperation, type MergeFields, mergeFields } from \"../types/element\";\nimport type { AnyFields } from \"../types/fragment\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\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 { createVarRefs, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createInlineOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n _TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n>(\n schema: NoInfer<TSchema>,\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 <TOperationName extends string, TFields extends AnyFields[], TVarDefinitions extends InputTypeSpecifiers[] = [{}]>(\n options: {\n operationName: TOperationName;\n variables?: TVarDefinitions;\n },\n fieldBuilder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFields>,\n ) => {\n return InlineOperation.create<\n TSchema,\n TOperationType,\n TOperationName,\n MergeVarDefinitions<TVarDefinitions>,\n MergeFields<TFields>\n >(() => {\n const { operationName } = options;\n const variables = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const $ = createVarRefs<TSchema, MergeVarDefinitions<TVarDefinitions>>(variables);\n const f = createFieldFactories(schema, operationTypeName);\n const fields = mergeFields(fieldBuilder({ f, $ }));\n\n return {\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof MergeVarDefinitions<TVarDefinitions> & string)[],\n documentSource: () => fields,\n document: buildDocument({\n operationName,\n operationType,\n variables,\n fields,\n }),\n };\n });\n };\n };\n};\n","import { type FieldsBuilder, type MergeFields, Model, mergeFields } from \"../types/element\";\nimport type { AnyFields, InferFields } from \"../types/fragment\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { createVarAssignments, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createGqlModelComposers = <TSchema extends AnyGraphqlSchema>(schema: NoInfer<TSchema>) => {\n type ModelBuilder<TTypeName extends keyof TSchema[\"object\"] & string> = <\n TFieldEntries extends AnyFields[],\n TNormalized extends object,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n variables?: TVarDefinitions;\n },\n builder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n normalize: (raw: NoInfer<InferFields<TSchema, MergeFields<TFieldEntries>>>) => TNormalized,\n ) => ReturnType<\n typeof Model.create<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TNormalized>\n >;\n\n const createModelComposer = <TTypeName extends keyof TSchema[\"object\"] & string>(\n typename: TTypeName,\n ): ModelBuilder<TTypeName> => {\n return <TFieldEntries extends AnyFields[], TNormalized extends object, TVarDefinitions extends InputTypeSpecifiers[] = [{}]>(\n options: {\n variables?: TVarDefinitions;\n },\n builder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n normalize: (raw: NoInfer<InferFields<TSchema, MergeFields<TFieldEntries>>>) => TNormalized,\n ) =>\n Model.create<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TNormalized>(() => {\n const varDefinitions = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n return {\n typename,\n fragment: (variables) => {\n const f = createFieldFactories(schema, typename);\n const $ = createVarAssignments<TSchema, MergeVarDefinitions<TVarDefinitions>>(varDefinitions, variables);\n return mergeFields(builder({ f, $ }));\n },\n normalize,\n };\n });\n };\n\n type ModelBuildersAll = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string ? ModelBuilder<TTypeName> : never;\n };\n type ModelBuilders = Omit<ModelBuildersAll, TSchema[\"operations\"][OperationType] & keyof ModelBuildersAll>;\n\n return mapValues(schema.object, (_, typename) => createModelComposer(typename)) as ModelBuilders;\n};\n","import { handleProjectionBuilder } from \"../runtime/slice\";\nimport {\n type ExecutionResultProjectionsBuilder,\n type FieldsBuilder,\n type MergeFields,\n mergeFields,\n Slice,\n} from \"../types/element\";\nimport type { AnyFields } from \"../types/fragment\";\nimport type { AnyGraphqlRuntimeAdapter, AnyProjection } from \"../types/runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { createFieldFactories } from \"./fields-builder\";\nimport { createVarAssignments, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createSliceComposerFactory = <TSchema extends AnyGraphqlSchema, TRuntimeAdapter extends AnyGraphqlRuntimeAdapter>(\n schema: NoInfer<TSchema>,\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 TFieldEntries extends AnyFields[],\n TProjection extends AnyProjection,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n variables?: TVarDefinitions;\n },\n fieldBuilder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n projectionBuilder: ExecutionResultProjectionsBuilder<TSchema, TRuntimeAdapter, MergeFields<TFieldEntries>, TProjection>,\n ) =>\n Slice.create<TSchema, TOperationType, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TProjection>(() => {\n const varDefinitions = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const projection = handleProjectionBuilder(projectionBuilder);\n\n return {\n operationType,\n embed: (variables) => {\n const f = createFieldFactories(schema, operationTypeName);\n const $ = createVarAssignments<TSchema, typeof varDefinitions>(varDefinitions, variables);\n const fields = mergeFields(fieldBuilder({ f, $ }));\n return { variables, getFields: () => fields, projection };\n },\n };\n });\n };\n};\n","import type { TypeModifier, ValidTypeModifier } from \"./type-modifier-core.generated\";\n\nexport type ModifiedTypeName<\n // Wrapping by array to avoid type distribution\n TNameCandidate extends [string],\n TName extends TNameCandidate[0],\n TModifier extends TypeModifier,\n> = [string] extends TNameCandidate // For abstract implementation\n ? `${TName}:${TModifier}`\n : TNameCandidate extends [TName]\n ? // First, user inputs TName based on TNameCandidate\n NoInfer<`${TNameCandidate[0]}`> | (TName & NoInfer<TypeModifier extends TModifier ? never : string>)\n : // With valid TName, user can input TModifier based on TypeModifierNS.ValidTypeModifier\n `${TName}:${TModifier & ValidTypeModifier}`;\n\nexport function parseModifiedTypeName<TNameCandidate extends [string], TName extends string, TModifier extends TypeModifier>(\n nameAndModifier: ModifiedTypeName<TNameCandidate, TName, TModifier>,\n) {\n if (typeof nameAndModifier !== \"string\") {\n throw new Error(`Invalid modified type name: ${nameAndModifier}`);\n }\n\n const [name, modifier] = nameAndModifier.split(\":\") as [TName, TModifier];\n return { name, modifier };\n}\n","import type { AnyConstDirectiveAttachments, AnyGraphqlSchema, ConstAssignableInputValue } from \"../types/schema\";\nimport { type AnyTypeSpecifier, type ModifiedTypeName, parseModifiedTypeName, type TypeModifier } from \"../types/type-foundation\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\n\ntype AssignableDefaultValue<\n TSchema extends AnyGraphqlSchema,\n TKind extends \"scalar\" | \"enum\" | \"input\",\n TName extends keyof TSchema[TKind] & 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\nexport const createVarBuilder = <TSchema extends AnyGraphqlSchema>(schema: TSchema) => {\n const $ = <TVarName extends string>(varName: TVarName) => {\n const createVarSpecifierBuilder = <TKind extends \"scalar\" | \"enum\" | \"input\">(kind: TKind) => {\n type VarSpecifier<\n TTypeName extends keyof TSchema[TKind] & string,\n TModifier extends TypeModifier,\n TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | 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 return <\n const TTypeName extends keyof TSchema[TKind] & string,\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n type: ModifiedTypeName<[keyof TSchema[TKind] & string], TTypeName, TModifier>,\n extras?: {\n default?:\n | (TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>))\n | (NoInfer<TDefaultFn> extends null ? () => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier> : never);\n directives?: TDirectives;\n },\n ) =>\n wrapByKey(varName, {\n kind,\n ...parseModifiedTypeName(type),\n defaultValue: extras?.default ? { default: extras.default() } : null,\n } satisfies AnyTypeSpecifier as VarSpecifier<TTypeName, TModifier, TDefaultFn, TDirectives>);\n };\n\n return {\n scalar: createVarSpecifierBuilder(\"scalar\"),\n enum: createVarSpecifierBuilder(\"enum\"),\n input: createVarSpecifierBuilder(\"input\"),\n\n byField: <\n const TTypeName extends keyof TSchema[\"object\"] & string,\n const TFieldName extends keyof TSchema[\"object\"][TTypeName][\"fields\"] & string,\n const TArgName extends keyof TSchema[\"object\"][TTypeName][\"fields\"][TFieldName][\"arguments\"] & string,\n >(\n typeName: TTypeName,\n fieldName: TFieldName,\n argName: TArgName,\n ) => {\n const argTypeRef = schema.object[typeName]?.fields[fieldName]?.arguments[argName];\n\n if (!argTypeRef) {\n throw new Error(`Argument ${argName} not found in field ${fieldName} of type ${typeName}`);\n }\n\n // TODO: clone\n return { ...argTypeRef } as TSchema[\"object\"][TTypeName][\"fields\"][TFieldName][\"arguments\"][TArgName];\n },\n };\n };\n\n return { $ };\n};\n","import type { AnyComposedOperation, AnyInlineOperation, AnyModel, AnySlice } from \"../types/element\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport { createComposedOperationComposerFactory } from \"./composed-operation\";\nimport { createInlineOperationComposerFactory } from \"./inline-operation\";\nimport { createGqlModelComposers } from \"./model\";\nimport { createSliceComposerFactory } from \"./slice\";\nimport { createVarBuilder } from \"./var-builder\";\n\nexport type GqlElementComposer<TComposers, THelper> = <\n TResult extends AnyModel | AnySlice | AnyComposedOperation | AnyInlineOperation,\n>(\n composeElement: (composers: TComposers, helper: THelper) => TResult,\n) => TResult;\n\nexport const createGqlElementComposer = <TSchema extends AnyGraphqlSchema, TRuntimeAdapter extends AnyGraphqlRuntimeAdapter>(\n schema: NoInfer<TSchema>,\n) => {\n const model = createGqlModelComposers<TSchema>(schema);\n const createSliceComposer = createSliceComposerFactory<TSchema, TRuntimeAdapter>(schema);\n const createComposedOperationFactory = createComposedOperationComposerFactory<TSchema, TRuntimeAdapter>();\n const createInlineOperationComposer = createInlineOperationComposerFactory<TSchema, TRuntimeAdapter>(schema);\n const composers = {\n model,\n query: {\n slice: createSliceComposer(\"query\"),\n composed: createComposedOperationFactory(\"query\"),\n inline: createInlineOperationComposer(\"query\"),\n },\n mutation: {\n slice: createSliceComposer(\"mutation\"),\n composed: createComposedOperationFactory(\"mutation\"),\n inline: createInlineOperationComposer(\"mutation\"),\n },\n subscription: {\n slice: createSliceComposer(\"subscription\"),\n composed: createComposedOperationFactory(\"subscription\"),\n inline: createInlineOperationComposer(\"subscription\"),\n },\n };\n\n const helper = {\n ...createVarBuilder(schema),\n };\n\n const elementComposer: GqlElementComposer<typeof composers, typeof helper> = (composeElement) =>\n composeElement(composers, helper);\n\n return elementComposer;\n};\n","export interface WithTypeMeta<T extends object> {\n readonly $type: T;\n}\n\nexport const withTypeMeta = <TTarget extends WithTypeMeta<TTypeMeta>, TTypeMeta extends object>(\n target: Omit<NoInfer<TTarget>, \"$type\">,\n): TTarget => {\n if (process.env.NODE_ENV !== \"production\") {\n if ((typeof target !== \"object\" && typeof target !== \"function\") || target === null) {\n throw new Error(\"Target must be an object or a function.\");\n }\n\n Object.defineProperty(target, \"$type\", {\n get() {\n throw new Error(\"This property is only for type inference. Do not access this property directly.\");\n },\n });\n }\n\n return target as TTarget;\n};\n","import type { AnyConstDirectiveAttachments } from \"../types/schema\";\nimport {\n type AnyTypeSpecifier,\n type InputTypeKind,\n type InputTypeSpecifiers,\n type ModifiedTypeName,\n type OutputTypeKind,\n parseModifiedTypeName,\n type TypeModifier,\n} from \"../types/type-foundation\";\nimport type { ConstValue } from \"../types/type-foundation/const-value\";\n\nconst createUnsafeInputTypeSpecifierFactory = <const TKind extends InputTypeKind>(kind: TKind) => {\n type UnsafeInputTypeSpecifier<\n TName extends string,\n TModifier extends TypeModifier,\n TDefaultFactory extends (() => ConstValue) | null,\n TDirectives extends AnyConstDirectiveAttachments,\n > = {\n kind: TKind;\n name: TName;\n modifier: TModifier;\n defaultValue: TDefaultFactory extends null ? null : { default: ReturnType<NonNullable<TDefaultFactory>> };\n directives: TDirectives;\n };\n\n return <\n const TName extends string,\n const TModifier extends TypeModifier,\n const TDefaultFactory extends (() => ConstValue) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n type: ModifiedTypeName<[string], TName, TModifier>,\n extras: {\n default?: TDefaultFactory;\n directives?: TDirectives;\n },\n ): UnsafeInputTypeSpecifier<TName, TModifier, TDefaultFactory, TDirectives> =>\n ({\n kind,\n ...parseModifiedTypeName(type),\n defaultValue: extras.default ? { default: extras.default() } : null,\n }) satisfies AnyTypeSpecifier as UnsafeInputTypeSpecifier<TName, TModifier, TDefaultFactory, TDirectives>;\n};\n\nexport const unsafeInputType = {\n scalar: createUnsafeInputTypeSpecifierFactory(\"scalar\"),\n enum: createUnsafeInputTypeSpecifierFactory(\"enum\"),\n input: createUnsafeInputTypeSpecifierFactory(\"input\"),\n};\n\nconst createUnsafeOutputTypeSpecifierFactory = <const TKind extends OutputTypeKind>(kind: TKind) => {\n type UnsafeOutputTypeSpecifier<TName extends string, TModifier extends TypeModifier, TArguments extends InputTypeSpecifiers> = {\n kind: TKind;\n name: TName;\n modifier: TModifier;\n arguments: TArguments;\n };\n\n return <const TName extends string, const TModifier extends TypeModifier, const TArguments extends InputTypeSpecifiers = {}>(\n type: ModifiedTypeName<[string], TName, TModifier>,\n extras: {\n arguments?: TArguments;\n },\n ): UnsafeOutputTypeSpecifier<TName, TModifier, InputTypeSpecifiers extends TArguments ? {} : TArguments> =>\n ({\n kind,\n ...parseModifiedTypeName(type),\n arguments: extras.arguments ?? ({} as TArguments),\n }) satisfies AnyTypeSpecifier as UnsafeOutputTypeSpecifier<\n TName,\n TModifier,\n InputTypeSpecifiers extends TArguments ? {} : TArguments\n >;\n};\n\nexport const unsafeOutputType = {\n scalar: createUnsafeOutputTypeSpecifierFactory(\"scalar\"),\n enum: createUnsafeOutputTypeSpecifierFactory(\"enum\"),\n object: createUnsafeOutputTypeSpecifierFactory(\"object\"),\n union: createUnsafeOutputTypeSpecifierFactory(\"union\"),\n typename: createUnsafeOutputTypeSpecifierFactory(\"typename\"),\n};\n","import type {\n EnumDefinition,\n InputDefinition,\n ObjectDefinition,\n OperationRoots,\n ScalarDefinition,\n UnionDefinition,\n} from \"../types/schema\";\nimport { withTypeMeta } from \"../utils/type-meta\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\nimport { unsafeOutputType } from \"./type-specifier-builder\";\n\nexport const defineScalar = <const TName extends string, TInput, TOutput>(name: NoInfer<TName>) =>\n wrapByKey(\n name,\n withTypeMeta({ name }) satisfies ScalarDefinition<{\n name: TName;\n input: TInput;\n output: TOutput;\n }>,\n );\n\nexport const define = <const TName extends string>(name: TName) => ({\n enum: <const TValues extends EnumDefinition<{ name: TName; values: string }>[\"values\"]>(values: TValues) =>\n withTypeMeta({ name, values }) satisfies EnumDefinition<{\n name: TName;\n values: Extract<keyof TValues, string>;\n }>,\n\n input: <TFields extends InputDefinition[\"fields\"]>(fields: TFields) =>\n ({\n name,\n fields,\n }) satisfies InputDefinition,\n\n object: <TFields extends ObjectDefinition[\"fields\"]>(fields: TFields) =>\n ({\n name,\n fields: {\n __typename: unsafeOutputType.typename(`${name}:!`, {}),\n ...fields,\n },\n }) satisfies ObjectDefinition,\n\n union: <TTypes extends UnionDefinition[\"types\"]>(types: TTypes) =>\n ({\n name,\n types,\n }) satisfies UnionDefinition,\n});\n\nexport const defineOperationRoots = <const TOperationRoots extends OperationRoots>(operationRoots: TOperationRoots) =>\n operationRoots;\n"],"mappings":";;;;AA2BA,MAAa,sBAAsB,UAAqD;AACtF,KAAI,UAAU,OACZ,QAAO;AAGT,KAAI,UAAU,KACZ,QAAO,EACL,MAAM,KAAK,MACZ;AAGH,KAAI,iBAAiB,QAAQ;EAC3B,MAAM,QAAQ,OAAO,SAAS,MAAM;AACpC,MAAI,MAAM,SAAS,WACjB,QAAO;GACL,MAAM,KAAK;GACX,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO,MAAM;IAAM;GAC7C;AAGH,MAAI,MAAM,SAAS,cACjB,QAAO,oBAAoB,MAAM,MAAM;AAGzC,QAAM,IAAI,MAAM,yBAAyB,QAAwB;;AAGnE,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,MAAM,KAAK,SAAS,mBAAmB,KAAK,CAAC,CAAC,QAAQ,SAAS,SAAS,KAAK;EACtF;AAGH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,OAAO,QAAQ,MAAM,CAC1B,KAAK,CAAC,KAAKA,aAAmC;GAC7C,MAAM,YAAY,mBAAmBA,QAAM;AAC3C,UAAO,YACH;IACE,MAAM,KAAK;IACX,MAAM;KAAE,MAAM,KAAK;KAAM,OAAO;KAAK;IACrC,OAAO;IACR,GACD;IACJ,CACD,QAAQ,SAAS,SAAS,KAAK;EACnC;AAGH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX;EACD;AAGH,KAAI,OAAO,UAAU,SAGnB,QAAO;EACL,MAFc,CAAC,OAAO,UAAU,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,IAAI,GAExD,KAAK,QAAQ,KAAK;EAClC,OAAO,MAAM,UAAU;EACxB;AAGH,KAAI,OAAO,UAAU,UACnB,QAAO;EACL,MAAM,KAAK;EACX;EACD;AAGH,OAAM,IAAI,MAAM,uBAAuB,OAAQ,QAAyB;;AAG1E,MAAM,kBAAkB,SACtB,OAAO,QAAQ,QAAQ,EAAE,CAAC,CACvB,KAAK,CAAC,MAAM,WAAgC;CAC3C,MAAM,YAAY,mBAAmB,MAAM;AAC3C,QAAO,YAAY;EAAE,MAAM,KAAK;EAAU,MAAM;GAAE,MAAM,KAAK;GAAM,OAAO;GAAM;EAAE,OAAO;EAAW,GAAG;EACvG,CACD,QAAQ,SAAS,SAAS,KAAK;AAEpC,MAAM,uBAAuB,UAC3B,OAAO,QAAQ,MAAM,CAClB,KAAK,CAAC,UAAU,YAAuC;AACtD,QAAO,SACH;EACE,MAAM,KAAK;EACX,eAAe;GAAE,MAAM,KAAK;GAAY,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAU;GAAE;EACpF,cAAc;GAAE,MAAM,KAAK;GAAe,YAAY,WAAW,OAAO;GAAE;EAC3E,GACD;EACJ,CACD,QAAQ,SAAS,SAAS,KAAK;AAEpC,MAAM,cAAc,UAClB,OAAO,QAAQ,MAAM,CAAC,KACnB,CAAC,OAAO,EAAE,MAAM,gBAAO,QAAQ,cAAyB;CACvD,MAAM,KAAK;CACX,MAAM;EAAE,MAAM,KAAK;EAAM,OAAOC;EAAO;CACvC,OAAO,UAAUA,UAAQ;EAAE,MAAM,KAAK;EAAM,OAAO;EAAO,GAAG;CAC7D,WAAW,eAAe,KAAK;CAC/B,cAAc,SACV;EACE,MAAM,KAAK;EACX,YAAY,WAAW,OAAO;EAC/B,GACD,QACE;EACE,MAAM,KAAK;EACX,YAAY,oBAAoB,MAAM;EACvC,GACD;CACP,EACF;AAEH,MAAa,uBAAuB,UAA6C;AAC/E,KAAI,UAAU,OACZ,QAAO;AAGT,KAAI,UAAU,KACZ,QAAO,EAAE,MAAM,KAAK,MAAM;AAG5B,KAAI,OAAO,UAAU,SACnB,QAAO;EAAE,MAAM,KAAK;EAAQ;EAAO;AAGrC,KAAI,OAAO,UAAU,UACnB,QAAO;EAAE,MAAM,KAAK;EAAS;EAAO;AAGtC,KAAI,OAAO,UAAU,SAGnB,QAAO;EAAE,MADO,CAAC,OAAO,UAAU,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,IAAI,GACjD,KAAK,QAAQ,KAAK;EAAK,OAAO,MAAM,UAAU;EAAE;AAG3E,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO;EAAE,MAAM,KAAK;EAAM,QAAQ,MAAM,KAAK,SAAS,oBAAoB,KAAK,CAAC,CAAC,QAAQ,SAAS,SAAS,KAAK;EAAE;AAGpH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,OAAO,QAAQ,MAAM,CAC1B,KAAK,CAAC,KAAKD,aAAwC;GAClD,MAAM,YAAY,oBAAoBA,QAAM;AAC5C,UAAO,YACH;IACE,MAAM,KAAK;IACX,MAAM;KAAE,MAAM,KAAK;KAAM,OAAO;KAAK;IACrC,OAAO;IACR,GACD;IACJ,CACD,QAAQ,SAAS,SAAS,KAAK;EACnC;AAGH,OAAM,IAAI,MAAM,uBAAuB,OAAQ,QAAyB;;AAG1E,MAAa,yBAAyB,UAAwB,cAA6C;CACzG,MAAM,WAAW,WAAW;AAE5B,KAAI,aAAa,IACf,QAAO;AAGT,KAAI,aAAa,IACf,QAAO;EAAE,MAAM,KAAK;EAAe,MAAM;EAAU;AAMrD,KAAI,CADyB,oBACH,KAAK,SAAS,CACtC,OAAM,IAAI,MAAM,qBAAqB,WAAW;CAKlD,IAAIE,OAAuD;EAAE;EAAU,MAAM;EAAU;AAEvF,QAAO,KAAK,SAAS,SAAS,GAAG;AAE/B,MAAI,KAAK,SAAS,WAAW,IAAI,EAAE;AAEjC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM,KAAK;IACZ;AACD;;AAGF,MAAI,KAAK,SAAS,WAAW,IAAI,EAAE;AAEjC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM,KAAK,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO;KAAE,MAAM,KAAK;KAAe,MAAM,KAAK;KAAM;IACxG;AACD;;AAIF,MAAI,KAAK,SAAS,WAAW,MAAM,EAAE;AAEnC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM;KAAE,MAAM,KAAK;KAAW,MAAM,KAAK;KAAM;IAChD;AACD;;AAGF,MAAI,KAAK,SAAS,WAAW,MAAM,EAAE;AAEnC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM;KAAE,MAAM,KAAK;KAAe,MAAM;MAAE,MAAM,KAAK;MAAW,MAAM,KAAK;MAAM;KAAE;IACpF;AACD;;AAGF,QAAM,IAAI,MAAM,qBAAqB,KAAK,WAAW;;AAGvD,QAAO,KAAK;;AAGd,MAAM,kBAAkB,cAA6D;AACnF,QAAO,OAAO,QAAQ,UAAU,CAAC,KAC9B,CAAC,MAAM,UAAkC;EACxC,MAAM,KAAK;EACX,UAAU;GAAE,MAAM,KAAK;GAAU,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAM;GAAE;EACzE,cAAe,IAAI,gBAAgB,oBAAoB,IAAI,aAAa,QAAQ,IAAK;EACrF,MAAM,sBAAsB,IAAI,iBAAiB;GAAE,MAAM,KAAK;GAAY,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO,IAAI;IAAM;GAAE,EAAE;EACzH,EACF;;AAGH,MAAa,0BAA0B,cAAgD;AACrF,SAAQ,WAAR;EACE,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,WACH,QAAO,kBAAkB;EAC3B,KAAK,eACH,QAAO,kBAAkB;EAC3B,QACE,OAAM,IAAI,MAAM,2BAA2B,YAAY;;;AAK7D,MAAa,iBAIX,YAKsG;CACtG,MAAM,EAAE,eAAe,eAAe,WAAW,WAAW;AAC5D,QAAO;EACL,MAAM,KAAK;EACX,aAAa,CACX;GACE,MAAM,KAAK;GACX,WAAW,uBAAuB,cAAc;GAChD,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAe;GAC/C,qBAAqB,eAAe,UAAU;GAE9C,cAAc;IACZ,MAAM,KAAK;IACX,YAAY,WAAW,OAAO;IAC/B;GACF,CACF;EACF;;;;;ACzTH,MAAM,sBAAsB,OAAO,sBAAsB;AACzD,MAAM,sBAAsB,OAAO,sBAAsB;AAQzD,IAAsB,aAAtB,MAAsB,WAAwD;CAG5E,CAAS;CACT,CAAS,uBAAiD;CAE1D,AAAU,YAAY,UAAkD;EACtE,IAAIC,QAAuC;AAE3C,OAAK,wBAAwB,YAAY;AACvC,OAAI,MACF,QAAO,MAAM;GAEf,MAAM,QAAQC,SAAO,QAAQ;AAC7B,WAAQ,EAAE,OAAO;AACjB,UAAO;;AAGT,SAAO,eAAe,MAAM,UAAU,EACpC,MAAM;AACJ,SAAM,IAAI,MAAM,6EAA6E;KAEhG,CAAC;;CAGJ,OAAO,WAA6C,SAAmB,SAAkC;AACvG,UAAQ,uBAAuB;;CAGjC,OAAO,SAAS,SAAgC;AAC9C,EAAK,WAAW,IAAI,QAAQ;;CAG9B,OAAO,IAAY,SAAqC;EACtD,MAAM,UAAU,QAAQ;AACxB,SAAO,QAAQ,qBAAqB,QAAQ;;;;;;ACMhD,IAAa,oBAAb,MAAa,0BASH,WAsBV;CAKE,AAAQ,YACN,UAWA;AACA,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,sBAAsB;AAC/B,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,QAAQ;AACjB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAQL,UAeA;AACA,SAAO,IAAI,kBAAkBA,SAAO;;;;;;ACxHxC,MAAa,eAAkD,WAC7D,OAAO,OAAO,EAAE,EAAE,GAAG,OAAO;;;;ACgB9B,IAAa,kBAAb,MAAa,wBAQH,WAKV;CAKE,AAAQ,YACN,UAGA;AACA,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,iBAAiB;AAC1B,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAOA;AACA,SAAO,IAAI,gBAAgBA,SAAO;;;;;;ACtEtC,IAAa,QAAb,MAAa,cAOH,WAKV;CAME,AAAQ,YAAY,UAAgF;AAClG,QAAMC,SAAO;;CAGf,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,YAAY;AACrB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAKA;AAKA,SAAO,IAAI,MAAMA,SAA8E;;;;;;ACnDnG,IAAa,QAAb,MAAa,cAMH,WAKV;CAME,AAAQ,YAAY,UAAiF;AACnG,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,QAAQ;AACjB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAUA;AAIA,SAAO,IAAI,MAAMA,SAAgF;;;;;;ACrErG,SAAS,gBAAgB,OAAwF;CAC/G,MAAM,eAAe,MAAM,QACxB,KAAqD,EAAE,OAAO,KAAK,UAAU,CAAC,SAAS,GAAG,gBAAgB;AACzG,MAAI,QACF,EAAC,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,KAAK;GAAE;GAAO;GAAK;GAAU,CAAC;AAEtE,SAAO;IAET,EAAE,CACH;AAED,QAAO;EACL,SAAS,MAAM,KAAK,EAAE,OAAO,KAAK,gBAAgB;GAAE;GAAO,MAAM;GAAK,OAAO,SAAS,WAAW;GAAG,EAAE;EACtG,UAAU,UAAU,eAAe,YAAU,gBAAgBC,QAAM,CAAC;EACrE;;AAGH,SAAgB,gCAAgC,WAA+C;AAY7F,QAAO,gBAXO,OAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,WACvD,MAAM,KACJ,IAAI,IACF,MAAM,WAAW,MAAM,KAAK,EAAE,MAAM,KAAK,eAAe;EACtD,MAAM,CAAC,OAAO,GAAG,QAAQ;AACzB,SAAO,CAAC,KAAK;GAAE;GAAO;GAAK,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK;GAAE,CAAC;GACtE,CACH,CAAC,QAAQ,CACX,CACF,CAE4B;;;;;ACrB/B,MAAa,+CAGN;AACL,SAA8C,kBAAkC;AAC9E,UAKE,SAIA,YACG;AACH,UAAO,kBAAkB,aAOjB;IACN,MAAM,EAAE,kBAAkB;IAC1B,MAAM,YAAY,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;IAEnF,MAAM,YAAY,QAAQ,EAAE,GADlB,cAAyC,UAAU,EAC9B,CAAC;IAEhC,MAAM,SAAS,OAAO,YACpB,OAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,WAAWC,gBACtD,OAAO,QAAQA,SAAO,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC,CACjF,CACF;IACD,MAAM,sBAAsB,gCAAgC,UAAU;AAEtE,WAAO;KACL;KACA;KACA,eAAe,OAAO,KAAK,UAAU;KACrC;KACA,UAAU,cAAc;MACtB;MACA;MACA;MACA;MACD,CAAC;KACF,OAAO,4BAA4B;MAAE;MAAW;MAAqB,CAAC;KACvE;KACD;;;;;;;AChER,SAAgB,UAAwC,MAAa,OAAe;AAClF,QAAO,GACJ,OAAO,OACT;;;;;ACuBH,MAAM,mCAAmB,IAAI,SAAqC;AAClE,MAAM,0BAA0B,WAA6B;CAC3D,MAAM,iBAAiB,iBAAiB,IAAI,OAAO;AACnD,KAAI,eACF,QAAO;CAGT,MAAMC,2BAAqB,IAAI,KAAK;AACpC,kBAAiB,IAAI,QAAQ,SAAS;AACtC,QAAO;;AAGT,MAAa,wBACX,QACA,aACgD;CAChD,MAAM,WAAW,uBAAuB,OAAO;CAC/C,MAAM,SAAS,SAAS,IAAI,SAAS;AACrC,KAAI,OACF,QAAO;CAGT,MAAM,YAAY,0BAA0B,QAAQ,SAAS;AAC7D,UAAS,IAAI,UAAU,UAAiE;AAExF,QAAO;;AAGT,MAAM,6BACJ,QACA,aACgD;CAChD,MAAM,UAAU,OAAO,OAAO;AAC9B,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,QAAQ,SAAS,mCAAmC;CAGtE,MAAM,UAAU,OAAO,QAAQ,QAAQ,OAAO,CAAC,KAAK,CAAC,WAAW,UAA8C;EAC5G,MAAMC,WACJ,WACA,WACG;GACH,MAAM,QAAW,UAAa,UAAW,QAAQ,SAAS,WAAqD,MAAM;AAErH,OAAI,KAAK,SAAS,UAAU;IAE1B,MAAMC,kBACJ,SAEA,KAAK;KACH,QAAQ;KACR,OAAO;KACD;KACN,MAAM,aAAa,EAAE;KACrB,YAAY,QAAQ,cAAc,EAAE;KACpC,QAAQ,YAAY,KAAK,EAAE,GAAG,qBAAqB,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;KACzE,OAAO;KACR,CAA6B;AAEhC,WAAO;;AAGT,OAAI,KAAK,SAAS,SAAS;IAEzB,MAAMA,kBACJ,SAEA,KAAK;KACH,QAAQ;KACR,OAAO;KACD;KACN,MAAM,aAAa,EAAE;KACrB,YAAY,QAAQ,cAAc,EAAE;KACpC,QAAQ;KACR,OAAO,UACL,OACC,SAAS,eAAe;AACvB,UAAI,CAAC,QACH,OAAM,IAAI,MAAM,yCAAyC,aAAa;AAExE,aAAO,YAAY,QAAQ,EAAE,GAAG,qBAAqB,QAAQ,WAAW,EAAE,CAAC,CAAC;OAE/E;KACF,CAA6B;AAEhC,WAAO;;AAGT,OAAI,KAAK,SAAS,YAAY,KAAK,SAAS,UAAU,KAAK,SAAS,WAWlE,QAT8D,KAAK;IACjE,QAAQ;IACR,OAAO;IACP;IACA,MAAM,aAAa,EAAE;IACrB,YAAY,QAAQ,cAAc,EAAE;IACpC,QAAQ;IACR,OAAO;IACR,CAA6B;AAIhC,SAAM,IAAI,MAAM,2BAA2B,OAAuB;;AAGpE,SAAO,CAAC,WAAW,QAAQ;GAC3B;AAIF,QAF4D,OAAO,YAAY,QAAQ;;;;;AC5HzF,MAAa,wCAIX,WACG;AACH,SAA8C,kBAAkC;EAE9E,MAAMC,oBAAsC,OAAO,WAAW;AAC9D,MAAI,sBAAsB,KACxB,OAAM,IAAI,MAAM,kBAAkB,cAAc,iCAAiC;AAGnF,UACE,SAIA,iBACG;AACH,UAAO,gBAAgB,aAMf;IACN,MAAM,EAAE,kBAAkB;IAC1B,MAAM,YAAY,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;IACnF,MAAM,IAAI,cAA6D,UAAU;IAEjF,MAAM,SAAS,YAAY,aAAa;KAAE,GADhC,qBAAqB,QAAQ,kBAAkB;KACZ;KAAG,CAAC,CAAC;AAElD,WAAO;KACL;KACA;KACA,eAAe,OAAO,KAAK,UAAU;KACrC,sBAAsB;KACtB,UAAU,cAAc;MACtB;MACA;MACA;MACA;MACD,CAAC;KACH;KACD;;;;;;;AC/CR,MAAa,2BAA6D,WAA6B;CAerG,MAAM,uBACJ,aAC4B;AAC5B,UACE,SAGA,SACA,cAEA,MAAM,aAAgH;GACpH,MAAM,iBAAiB,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;AACxF,UAAO;IACL;IACA,WAAW,cAAc;AAGvB,YAAO,YAAY,QAAQ;MAAE,GAFnB,qBAAqB,QAAQ,SAAS;MAEhB,GADtB,qBAAoE,gBAAgB,UAAU;MACrE,CAAC,CAAC;;IAEvC;IACD;IACD;;AAQN,QAAO,UAAU,OAAO,SAAS,GAAG,aAAa,oBAAoB,SAAS,CAAC;;;;;ACpCjF,MAAa,8BACX,WACG;AACH,SAA8C,kBAAkC;EAE9E,MAAMC,oBAAsC,OAAO,WAAW;AAC9D,MAAI,sBAAsB,KACxB,OAAM,IAAI,MAAM,kBAAkB,cAAc,iCAAiC;AAGnF,UAKE,SAGA,cACA,sBAEA,MAAM,aAAqH;GACzH,MAAM,iBAAiB,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;GACxF,MAAM,aAAa,wBAAwB,kBAAkB;AAE7D,UAAO;IACL;IACA,QAAQ,cAAc;KAGpB,MAAM,SAAS,YAAY,aAAa;MAAE,GAFhC,qBAAqB,QAAQ,kBAAkB;MAEZ,GADnC,qBAAqD,gBAAgB,UAAU;MACzC,CAAC,CAAC;AAClD,YAAO;MAAE;MAAW,iBAAiB;MAAQ;MAAY;;IAE5D;IACD;;;;;;ACnCR,SAAgB,sBACd,iBACA;AACA,KAAI,OAAO,oBAAoB,SAC7B,OAAM,IAAI,MAAM,+BAA+B,kBAAkB;CAGnE,MAAM,CAAC,MAAM,YAAY,gBAAgB,MAAM,IAAI;AACnD,QAAO;EAAE;EAAM;EAAU;;;;;ACL3B,MAAa,oBAAsD,WAAoB;CACrF,MAAM,KAA8B,YAAsB;EACxD,MAAM,6BAAwE,SAAgB;AAkB5F,WAME,MACA,WAOA,UAAU,SAAS;IACjB;IACA,GAAG,sBAAsB,KAAK;IAC9B,cAAc,QAAQ,UAAU,EAAE,SAAS,OAAO,SAAS,EAAE,GAAG;IACjE,CAA2F;;AAGhG,SAAO;GACL,QAAQ,0BAA0B,SAAS;GAC3C,MAAM,0BAA0B,OAAO;GACvC,OAAO,0BAA0B,QAAQ;GAEzC,UAKE,UACA,WACA,YACG;IACH,MAAM,aAAa,OAAO,OAAO,WAAW,OAAO,YAAY,UAAU;AAEzE,QAAI,CAAC,WACH,OAAM,IAAI,MAAM,YAAY,QAAQ,sBAAsB,UAAU,WAAW,WAAW;AAI5F,WAAO,EAAE,GAAG,YAAY;;GAE3B;;AAGH,QAAO,EAAE,GAAG;;;;;ACtEd,MAAa,4BACX,WACG;CACH,MAAM,QAAQ,wBAAiC,OAAO;CACtD,MAAM,sBAAsB,2BAAqD,OAAO;CACxF,MAAM,iCAAiC,wCAAkE;CACzG,MAAM,gCAAgC,qCAA+D,OAAO;CAC5G,MAAM,YAAY;EAChB;EACA,OAAO;GACL,OAAO,oBAAoB,QAAQ;GACnC,UAAU,+BAA+B,QAAQ;GACjD,QAAQ,8BAA8B,QAAQ;GAC/C;EACD,UAAU;GACR,OAAO,oBAAoB,WAAW;GACtC,UAAU,+BAA+B,WAAW;GACpD,QAAQ,8BAA8B,WAAW;GAClD;EACD,cAAc;GACZ,OAAO,oBAAoB,eAAe;GAC1C,UAAU,+BAA+B,eAAe;GACxD,QAAQ,8BAA8B,eAAe;GACtD;EACF;CAED,MAAM,SAAS,EACb,GAAG,iBAAiB,OAAO,EAC5B;CAED,MAAMC,mBAAwE,mBAC5E,eAAe,WAAW,OAAO;AAEnC,QAAO;;;;;AC5CT,MAAa,gBACX,WACY;AACZ,KAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,MAAK,OAAO,WAAW,YAAY,OAAO,WAAW,cAAe,WAAW,KAC7E,OAAM,IAAI,MAAM,0CAA0C;AAG5D,SAAO,eAAe,QAAQ,SAAS,EACrC,MAAM;AACJ,SAAM,IAAI,MAAM,kFAAkF;KAErG,CAAC;;AAGJ,QAAO;;;;;ACPT,MAAM,yCAA4E,SAAgB;AAchG,SAME,MACA,YAKC;EACC;EACA,GAAG,sBAAsB,KAAK;EAC9B,cAAc,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,EAAE,GAAG;EAChE;;AAGL,MAAa,kBAAkB;CAC7B,QAAQ,sCAAsC,SAAS;CACvD,MAAM,sCAAsC,OAAO;CACnD,OAAO,sCAAsC,QAAQ;CACtD;AAED,MAAM,0CAA8E,SAAgB;AAQlG,SACE,MACA,YAIC;EACC;EACA,GAAG,sBAAsB,KAAK;EAC9B,WAAW,OAAO,aAAc,EAAE;EACnC;;AAOL,MAAa,mBAAmB;CAC9B,QAAQ,uCAAuC,SAAS;CACxD,MAAM,uCAAuC,OAAO;CACpD,QAAQ,uCAAuC,SAAS;CACxD,OAAO,uCAAuC,QAAQ;CACtD,UAAU,uCAAuC,WAAW;CAC7D;;;;ACtED,MAAa,gBAA6D,SACxE,UACE,MACA,aAAa,EAAE,MAAM,CAAC,CAKvB;AAEH,MAAa,UAAsC,UAAiB;CAClE,OAAwF,WACtF,aAAa;EAAE;EAAM;EAAQ,CAAC;CAKhC,QAAmD,YAChD;EACC;EACA;EACD;CAEH,SAAqD,YAClD;EACC;EACA,QAAQ;GACN,YAAY,iBAAiB,SAAS,GAAG,KAAK,KAAK,EAAE,CAAC;GACtD,GAAG;GACJ;EACF;CAEH,QAAiD,WAC9C;EACC;EACA;EACD;CACJ;AAED,MAAa,wBAAsE,mBACjF"}
1
+ {"version":3,"file":"index.js","names":["value","field","curr: Readonly<{ modifier: string; type: TypeNode }>","cache: { value: TDefinition } | null","promise: Promise<void> | null","define","define","define","define","define","paths","options","fields","cacheMap: CacheMap","factory: AnyFieldSelectionFactory","factoryReturn: AnyFieldSelectionFactoryReturn<TAlias>","operationTypeName: TTypeName | null","operationTypeName: TTypeName | null","elementComposer: GqlElementComposer<typeof composers, typeof helper>"],"sources":["../src/composer/build-document.ts","../src/types/element/gql-element.ts","../src/types/element/composed-operation.ts","../src/types/element/fields-builder.ts","../src/types/element/inline-operation.ts","../src/types/element/model.ts","../src/types/element/slice.ts","../src/composer/projection-path-graph.ts","../src/composer/composed-operation.ts","../src/utils/wrap-by-key.ts","../src/composer/fields-builder.ts","../src/composer/inline-operation.ts","../src/composer/model.ts","../src/composer/slice.ts","../src/types/type-foundation/modified-type-name.ts","../src/composer/var-builder.ts","../src/composer/gql-composer.ts","../src/composer/helpers.ts","../src/utils/type-meta.ts","../src/schema/type-specifier-builder.ts","../src/schema/schema-builder.ts"],"sourcesContent":["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 === \"const-value\") {\n return buildConstValueNode(inner.value);\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","const GQL_ELEMENT_FACTORY = Symbol(\"GQL_ELEMENT_FACTORY\");\nconst GQL_ELEMENT_CONTEXT = Symbol(\"GQL_ELEMENT_CONTEXT\");\n\nexport type GqlElementContext = {\n canonicalId: string;\n};\n\nexport type GqlElementDefinitionFactory<T> = (context: GqlElementContext | null) => T | Promise<T>;\ntype GqlElementDefinitionFactoryExecutor<T> = (context: GqlElementContext | null) => Generator<Promise<void>, T, void>;\n\nexport abstract class GqlElement<TDefinition extends object, TInfer extends object = object> {\n declare readonly $infer: TInfer;\n\n private [GQL_ELEMENT_FACTORY]: GqlElementDefinitionFactoryExecutor<TDefinition>;\n private [GQL_ELEMENT_CONTEXT]: GqlElementContext | null = null;\n\n protected constructor(define: GqlElementDefinitionFactory<TDefinition>, getDeps?: () => GqlElement<any>[]) {\n let cache: { value: TDefinition } | null = null;\n let promise: Promise<void> | null = null;\n\n this[GQL_ELEMENT_FACTORY] = function* execute(\n context: GqlElementContext | null,\n ): Generator<Promise<void>, TDefinition, void> {\n if (cache) {\n return cache.value;\n }\n\n if (promise) {\n yield promise;\n // biome-ignore lint/style/noNonNullAssertion: promise is guaranteed to be set\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* GqlElement.createEvaluationGenerator(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\n return cache!.value;\n };\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 static setContext<TElement extends GqlElement<any>>(element: TElement, context: GqlElementContext): void {\n element[GQL_ELEMENT_CONTEXT] = context;\n }\n\n static *createEvaluationGenerator(element: GqlElement<any>): Generator<Promise<void>, void, void> {\n const context = element[GQL_ELEMENT_CONTEXT];\n yield* element[GQL_ELEMENT_FACTORY](context);\n }\n\n private static evaluateInstantly<TValue extends object>(element: GqlElement<TValue>): TValue {\n const context = element[GQL_ELEMENT_CONTEXT];\n const result = element[GQL_ELEMENT_FACTORY](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\n static evaluateSync(element: GqlElement<any>): void {\n void GqlElement.evaluateInstantly(element);\n }\n\n static get<TValue extends object>(element: GqlElement<TValue>): TValue {\n return GqlElement.evaluateInstantly(element);\n }\n}\n","/** Operation composition helpers (`gql.query`, `gql.mutation`, `gql.subscription`). */\n\nimport type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { Hidden } from \"../../utils/hidden\";\nimport type { UnionToIntersection } from \"../../utils/type-utils\";\nimport type { AnyFields, AssigningInput, InferFields } from \"../fragment\";\nimport type { OperationMetadata } from \"../metadata\";\nimport type { AnyGraphqlRuntimeAdapter, InferExecutionResultProjection, NormalizedExecutionResult } from \"../runtime\";\nimport type { AnyConstAssignableInput, AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement, type GqlElementContext } from \"./gql-element\";\nimport type { AnySlicePayloads } from \"./slice\";\n\nexport type AnyComposedOperation =\n | AnyComposedOperationOf<\"query\">\n | AnyComposedOperationOf<\"mutation\">\n | AnyComposedOperationOf<\"subscription\">;\nexport type AnyComposedOperationOf<TOperationType extends OperationType> = ComposedOperation<\n AnyGraphqlRuntimeAdapter,\n TOperationType,\n string,\n string[],\n any,\n any,\n any\n>;\n\nexport type ComposedOperationInferMeta<TVariables, TRawData extends object, TProjectedData extends object> = {\n readonly input: TVariables;\n readonly output: { readonly raw: TRawData; readonly projected: TProjectedData };\n};\n\ndeclare const __COMPOSED_OPERATION_BRAND__: unique symbol;\n\ntype ComposedOperationDefinition<\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TRawData extends object,\n TProjectedData extends object,\n> = {\n readonly operationType: TOperationType;\n readonly operationName: TOperationName;\n readonly variableNames: TVariableNames;\n readonly projectionPathGraph: ProjectionPathGraphNode;\n readonly document: TypedDocumentNode<TRawData, TVariables>;\n readonly parse: (result: NormalizedExecutionResult<TRuntimeAdapter, TRawData, any>) => TProjectedData;\n readonly metadata?: OperationMetadata;\n};\n\nexport class ComposedOperation<\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableNames extends string[],\n TVariables extends AnyConstAssignableInput,\n TRawData extends object,\n TProjectedData extends object,\n >\n extends GqlElement<\n ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >,\n ComposedOperationInferMeta<TVariables, TRawData, TProjectedData>\n >\n implements\n ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >\n{\n declare readonly [__COMPOSED_OPERATION_BRAND__]: Hidden<{\n operationType: TOperationType;\n }>;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) =>\n | ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >\n | Promise<\n ComposedOperationDefinition<\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n TVariableNames,\n TVariables,\n TRawData,\n TProjectedData\n >\n >,\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 projectionPathGraph() {\n return GqlElement.get(this).projectionPathGraph;\n }\n public get document() {\n return GqlElement.get(this).document;\n }\n public get parse() {\n return GqlElement.get(this).parse;\n }\n public get metadata() {\n return GqlElement.get(this).metadata;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n TOperationType extends OperationType,\n TOperationName extends string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TSliceFragments extends AnySlicePayloads,\n >(\n define: (context: import(\"./gql-element\").GqlElementContext | null) =>\n | {\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n projectionPathGraph: ProjectionPathGraphNode;\n document: TypedDocumentNode<\n InferComposedOperationRawData<TSchema, TSliceFragments>,\n ConstAssignableInput<TSchema, TVariableDefinitions>\n >;\n parse: (\n result: NormalizedExecutionResult<TRuntimeAdapter, InferComposedOperationRawData<TSchema, TSliceFragments>, any>,\n ) => {\n [K in keyof TSliceFragments]: InferExecutionResultProjection<TSliceFragments[K][\"projection\"]>;\n };\n metadata?: OperationMetadata;\n }\n | Promise<{\n operationType: TOperationType;\n operationName: TOperationName;\n variableNames: (keyof TVariableDefinitions & string)[];\n projectionPathGraph: ProjectionPathGraphNode;\n document: TypedDocumentNode<\n InferComposedOperationRawData<TSchema, TSliceFragments>,\n ConstAssignableInput<TSchema, TVariableDefinitions>\n >;\n parse: (\n result: NormalizedExecutionResult<TRuntimeAdapter, InferComposedOperationRawData<TSchema, TSliceFragments>, any>,\n ) => {\n [K in keyof TSliceFragments]: InferExecutionResultProjection<TSliceFragments[K][\"projection\"]>;\n };\n metadata?: OperationMetadata;\n }>,\n ) {\n return new ComposedOperation(define);\n }\n}\n\nexport type ProjectionPathGraphNode = {\n readonly matches: { label: string; path: string; exact: boolean }[];\n readonly children: { readonly [segment: string]: ProjectionPathGraphNode };\n};\n\nexport type ConcatSlicePayloads<TSlicePayloads extends AnySlicePayloads> = UnionToIntersection<\n {\n [TLabel in keyof TSlicePayloads & string]: TSlicePayloads[TLabel] extends { getFields: () => infer TFields }\n ? { [K in keyof TFields & string as `${TLabel}_${K}`]: TFields[K] }\n : {};\n }[keyof TSlicePayloads & string]\n> &\n AnyFields;\n\nexport type InferComposedOperationRawData<\n TSchema extends AnyGraphqlSchema,\n TSlicePayloads extends AnySlicePayloads,\n> = InferFields<TSchema, ConcatSlicePayloads<TSlicePayloads>>;\n\nexport type ComposedOperationDefinitionBuilder<\n TSchema extends AnyGraphqlSchema,\n TVarDefinitions extends InputTypeSpecifiers,\n TSliceContents extends AnySlicePayloads,\n> = (tools: { $: NoInfer<AssigningInput<TSchema, TVarDefinitions>> }) => TSliceContents;\n","/** Field builder factories shared by model and slice helpers. */\n\nimport type { IfEmpty } from \"../../utils/empty-object\";\nimport type { UnionToIntersection } from \"../../utils/type-utils\";\nimport type {\n AbstractFieldSelection,\n AnyAssignableInput,\n AnyDirectiveAttachments,\n AnyFieldSelection,\n AnyFields,\n AnyNestedObject,\n AnyNestedUnion,\n AssigningInput,\n FieldSelectionTemplateOf,\n} from \"../fragment\";\nimport type { AnyGraphqlSchema, ObjectFieldRecord, UnionMemberName } from \"../schema\";\nimport type {\n InputTypeSpecifiers,\n OutputEnumSpecifier,\n OutputObjectSpecifier,\n OutputScalarSpecifier,\n OutputTypenameSpecifier,\n OutputUnionSpecifier,\n} from \"../type-foundation\";\n\nexport const mergeFields = <TFieldEntries extends AnyFields[]>(fields: TFieldEntries) =>\n Object.assign({}, ...fields) as MergeFields<TFieldEntries>;\n\nexport type MergeFields<TFieldEntries extends AnyFields[]> = UnionToIntersection<\n TFieldEntries[number]\n> extends infer TFieldsIntersection\n ? {\n [TFieldName in keyof TFieldsIntersection]: TFieldsIntersection[TFieldName] extends AnyFieldSelection\n ? TFieldsIntersection[TFieldName]\n : never;\n } & {}\n : never;\n\n/**\n * Builder signature exposed to userland `model` and `slice` helpers. The\n * tooling `f`/`fields`/`_` aliases provide ergonomic access to GraphQL fields\n * while preserving the original schema information for inference.\n */\nexport type FieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields[],\n> = (tools: NoInfer<FieldsBuilderTools<TSchema, TTypeName, TVariableDefinitions>>) => TFields;\n\nexport type FieldsBuilderTools<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TVariableDefinitions extends InputTypeSpecifiers,\n> = {\n f: FieldSelectionFactories<TSchema, TTypeName>;\n $: AssigningInput<TSchema, TVariableDefinitions>;\n};\n\n/** Narrow builder used when a field resolves to an object and we need nested selections. */\nexport type NestedObjectFieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n TFields extends AnyNestedObject[],\n> = (tools: NoInfer<NestedObjectFieldsBuilderTools<TSchema, TTypeName>>) => TFields;\n\nexport type NestedObjectFieldsBuilderTools<\n TSchema extends AnyGraphqlSchema,\n TTypeName extends keyof TSchema[\"object\"] & string,\n> = {\n f: FieldSelectionFactories<TSchema, TTypeName>;\n};\n\nexport type NestedUnionFieldsBuilder<\n TSchema extends AnyGraphqlSchema,\n TMemberName extends string,\n TUnionFields extends AnyNestedUnion,\n> = {\n [TTypename in keyof TUnionFields & TMemberName]?: NestedObjectFieldsBuilder<\n TSchema,\n TTypename,\n NonNullable<TUnionFields[TTypename]>[]\n >;\n};\n\n/** Map each field to a factory capable of emitting fully-typed references. */\nexport type FieldSelectionFactories<TSchema extends AnyGraphqlSchema, TTypeName extends keyof TSchema[\"object\"] & string> = {\n [TFieldName in keyof ObjectFieldRecord<TSchema, TTypeName>]: TFieldName extends string\n ? FieldSelectionFactory<TSchema, FieldSelectionTemplateOf<TSchema, TTypeName, TFieldName>>\n : never;\n};\n\nexport type AnyFieldSelectionFactory = <TAlias extends string | null = null>(\n fieldArgs: AnyAssignableInput | void,\n extras?: { alias?: TAlias; directives?: AnyDirectiveAttachments },\n) => AnyFieldSelectionFactoryReturn<TAlias>;\n\nexport type FieldSelectionFactory<TSchema extends AnyGraphqlSchema, TSelection extends AnyFieldSelection> = <\n TAlias extends string | null = null,\n>(\n fieldArgs: TSelection[\"args\"] | IfEmpty<TSelection[\"args\"], void | null>,\n extras?: { alias?: TAlias; directives?: TSelection[\"directives\"] },\n) => FieldSelectionFactoryReturn<TSchema, TSelection, TAlias>;\n\nexport type AnyFieldSelectionFactoryReturn<TAlias extends string | null> =\n | FieldSelectionFactoryReturn<AnyGraphqlSchema, AnyFieldSelection & { type: OutputObjectSpecifier }, TAlias>\n | FieldSelectionFactoryReturn<AnyGraphqlSchema, AnyFieldSelection & { type: OutputUnionSpecifier }, TAlias>\n | FieldSelectionFactoryReturn<\n AnyGraphqlSchema,\n AnyFieldSelection & { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier },\n TAlias\n >;\n\nexport type FieldSelectionFactoryReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection,\n TAlias extends string | null,\n> = TSelection extends { type: OutputObjectSpecifier }\n ? FieldSelectionFactoryObjectReturn<TSchema, TSelection, TAlias>\n : TSelection extends { type: OutputUnionSpecifier }\n ? FieldSelectionFactoryUnionReturn<TSchema, TSelection, TAlias>\n : TSelection extends { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier }\n ? FieldSelectionFactoryPrimitiveReturn<TSelection, TAlias>\n : never;\n\nexport type FieldSelectionFactoryObjectReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection & { type: OutputObjectSpecifier },\n TAlias extends string | null,\n> = <TNested extends AnyNestedObject[]>(\n nest: NestedObjectFieldsBuilder<TSchema, TSelection[\"type\"][\"name\"], TNested>,\n) => {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n { object: MergeFields<TNested> }\n >;\n};\n\nexport type FieldSelectionFactoryUnionReturn<\n TSchema extends AnyGraphqlSchema,\n TSelection extends AnyFieldSelection & { type: OutputUnionSpecifier },\n TAlias extends string | null,\n> = <TNested extends AnyNestedUnion>(\n nest: NestedUnionFieldsBuilder<TSchema, UnionMemberName<TSchema, TSelection[\"type\"]>, TNested>,\n) => {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n { union: TNested }\n >;\n};\n\nexport type FieldSelectionFactoryPrimitiveReturn<\n TSelection extends AnyFieldSelection & { type: OutputTypenameSpecifier | OutputScalarSpecifier | OutputEnumSpecifier },\n TAlias extends string | null,\n> = {\n [_ in TAlias extends null ? TSelection[\"field\"] : TAlias]: AbstractFieldSelection<\n TSelection[\"parent\"],\n TSelection[\"field\"],\n TSelection[\"type\"],\n TSelection[\"args\"],\n TSelection[\"directives\"],\n {}\n >;\n};\n\nexport type FieldSelectionFactoryFieldArguments<TFieldSelectionTemplate extends AnyFieldSelection> =\n | TFieldSelectionTemplate[\"args\"]\n | IfEmpty<TFieldSelectionTemplate[\"args\"], void | null>;\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type { Hidden } from \"../../utils/hidden\";\nimport type { AnyFields, InferFields } from \"../fragment\";\nimport type { OperationMetadata } from \"../metadata\";\nimport type { AnyConstAssignableInput, AnyGraphqlSchema, ConstAssignableInput, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement, type GqlElementContext } from \"./gql-element\";\n\nexport type AnyInlineOperation =\n | AnyInlineOperationOf<\"query\">\n | AnyInlineOperationOf<\"mutation\">\n | AnyInlineOperationOf<\"subscription\">;\nexport type AnyInlineOperationOf<TOperationType extends OperationType> = InlineOperation<\n TOperationType,\n string,\n string[],\n any,\n AnyFields,\n any\n>;\n\nexport type InlineOperationInferMeta<TVariables, TData extends object> = {\n readonly input: TVariables;\n readonly output: TData;\n};\n\ndeclare const __INLINE_OPERATION_BRAND__: unique symbol;\n\ntype InlineOperationArtifact<\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?: OperationMetadata;\n};\n\nexport class InlineOperation<\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 InlineOperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>,\n InlineOperationInferMeta<TVariables, TData>\n >\n implements InlineOperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n{\n declare readonly [__INLINE_OPERATION_BRAND__]: Hidden<{\n operationType: TOperationType;\n }>;\n\n private constructor(\n define: (\n context: GqlElementContext | null,\n ) =>\n | InlineOperationArtifact<TOperationType, TOperationName, TVariableNames, TVariables, TFields, TData>\n | Promise<InlineOperationArtifact<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?: OperationMetadata;\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?: OperationMetadata;\n }>,\n ) {\n return new InlineOperation(define);\n }\n}\n","/** Model helper types mirroring the `gql.model` API. */\n\nimport type { SwitchIfEmpty } from \"../../utils/empty-object\";\nimport type { Hidden } from \"../../utils/hidden\";\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 AnyModel = Model<string, any, AnyFields, any, any>;\n\nexport type ModelInferMeta<TVariables, TRaw extends object, TNormalized extends object> = {\n readonly input: TVariables;\n readonly output: { readonly raw: TRaw; readonly normalized: TNormalized };\n};\n\ninterface ModelArtifact<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TRaw extends object,\n TNormalized extends object,\n> {\n readonly typename: TTypeName;\n readonly fragment: (variables: TVariables) => TFields;\n readonly normalize: (raw: TRaw) => TNormalized;\n}\n\ndeclare const __MODEL_BRAND__: unique symbol;\nexport class Model<\n TTypeName extends string,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TRaw extends object,\n TNormalized extends object,\n >\n extends GqlElement<\n ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>,\n ModelInferMeta<TVariables, TRaw, TNormalized>\n >\n implements ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>\n{\n declare readonly [__MODEL_BRAND__]: Hidden<{\n input: TVariables;\n output: TNormalized;\n }>;\n\n private constructor(define: () => ModelArtifact<TTypeName, TVariables, TFields, TRaw, TNormalized>) {\n super(define);\n }\n\n public get typename() {\n return GqlElement.get(this).typename;\n }\n public get fragment() {\n return GqlElement.get(this).fragment;\n }\n public get normalize() {\n return GqlElement.get(this).normalize;\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 TNormalized extends object,\n >(\n define: () => {\n typename: TTypeName;\n fragment: (variables: SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>) => TFields;\n normalize: (raw: NoInfer<InferFields<TSchema, TFields>>) => TNormalized;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Raw = InferFields<TSchema, TFields> & { [key: symbol]: never };\n type Variables = SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Model(define as () => ModelArtifact<TTypeName, Variables, Fields, Raw, TNormalized>);\n }\n}\n","import type { SwitchIfEmpty } from \"../../utils/empty-object\";\nimport type { Hidden } from \"../../utils/hidden\";\nimport type { AnyAssignableInput, AnyFields, AssignableInput } from \"../fragment\";\nimport type { SliceMetadata } from \"../metadata\";\nimport type { AnyProjection, InferExecutionResultProjection } from \"../runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../schema\";\nimport type { InputTypeSpecifiers } from \"../type-foundation\";\nimport { GqlElement } from \"./gql-element\";\n\nexport type AnySlice = AnySliceOf<\"query\"> | AnySliceOf<\"mutation\"> | AnySliceOf<\"subscription\">;\nexport type AnySliceOf<TOperationType extends OperationType> = Slice<TOperationType, any, AnyFields, AnyProjection>;\n\nexport type SliceInferMeta<TVariables, TProjected> = {\n readonly input: TVariables;\n readonly output: TProjected;\n};\n\ntype SliceDefinition<\n TOperationType extends OperationType,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n> = {\n readonly operationType: TOperationType;\n readonly embed: (variables: TVariables) => SlicePayload<TVariables, TFields, TProjection>;\n};\n\ndeclare const __OPERATION_SLICE_BRAND__: unique symbol;\nexport class Slice<\n TOperationType extends OperationType,\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n >\n extends GqlElement<\n SliceDefinition<TOperationType, TVariables, TFields, TProjection>,\n SliceInferMeta<TVariables, InferExecutionResultProjection<TProjection>>\n >\n implements SliceDefinition<TOperationType, TVariables, TFields, TProjection>\n{\n declare readonly [__OPERATION_SLICE_BRAND__]: Hidden<{\n operationType: TOperationType;\n output: InferExecutionResultProjection<TProjection>;\n }>;\n\n private constructor(define: () => SliceDefinition<TOperationType, TVariables, TFields, TProjection>) {\n super(define);\n }\n\n public get operationType() {\n return GqlElement.get(this).operationType;\n }\n public get embed() {\n return GqlElement.get(this).embed;\n }\n\n static create<\n TSchema extends AnyGraphqlSchema,\n TOperationType extends OperationType,\n TVariableDefinitions extends InputTypeSpecifiers,\n TFields extends AnyFields,\n TProjection extends AnyProjection,\n >(\n define: () => {\n operationType: TOperationType;\n embed: (\n variables: SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>,\n ) => SlicePayload<\n SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>,\n TFields,\n TProjection\n >;\n },\n ) {\n type Fields = TFields & { [key: symbol]: never };\n type Variables = SwitchIfEmpty<TVariableDefinitions, void, AssignableInput<TSchema, TVariableDefinitions>>;\n\n return new Slice(define as () => SliceDefinition<TOperationType, Variables, Fields, TProjection>);\n }\n}\n\nexport type AnySlicePayloads = { [key: string]: AnySlicePayload };\n\nexport type AnySlicePayload = SlicePayload<AnyAssignableInput | void, AnyFields, AnyProjection>;\nexport type SlicePayload<\n TVariables extends Partial<AnyAssignableInput> | void,\n TFields extends Partial<AnyFields>,\n TProjection extends AnyProjection,\n> = {\n variables: TVariables;\n getFields: () => TFields;\n projection: TProjection;\n metadata?: SliceMetadata | Promise<SliceMetadata>;\n};\n\nexport type InferOutputOfSlice<TSlice extends AnySliceOf<any>> = ReturnType<TSlice[typeof __OPERATION_SLICE_BRAND__]>[\"output\"];\n","import type { AnySlicePayload, ProjectionPathGraphNode } from \"../types/element\";\nimport { mapValues } from \"../utils/map-values\";\n\ntype ExecutionResultProjectionPathGraphIntermediate = {\n [segment: string]: { label: string; raw: string; segments: string[] }[];\n};\n\nfunction createPathGraph(paths: ExecutionResultProjectionPathGraphIntermediate[string]): ProjectionPathGraphNode {\n const intermediate = paths.reduce(\n (acc: ExecutionResultProjectionPathGraphIntermediate, { label, raw, segments: [segment, ...segments] }) => {\n if (segment) {\n (acc[segment] || (acc[segment] = [])).push({ label, raw, segments });\n }\n return acc;\n },\n {},\n );\n\n return {\n matches: paths.map(({ label, raw, segments }) => ({ label, path: raw, exact: segments.length === 0 })),\n children: mapValues(intermediate, (paths) => createPathGraph(paths)),\n } satisfies ProjectionPathGraphNode;\n}\n\nexport function createPathGraphFromSliceEntries(fragments: { [key: string]: AnySlicePayload }) {\n const paths = Object.entries(fragments).flatMap(([label, slice]) =>\n Array.from(\n new Map(\n slice.projection.paths.map(({ full: raw, segments }) => {\n const [first, ...rest] = segments;\n return [raw, { label, raw, segments: [`${label}_${first}`, ...rest] }];\n }),\n ).values(),\n ),\n );\n\n return createPathGraph(paths);\n}\n","import { defaultMergeSliceMetadata } from \"../metadata/merge\";\nimport { createExecutionResultParser } from \"../runtime/parse-execution-result\";\nimport {\n type AnySlicePayloads,\n ComposedOperation,\n type ComposedOperationDefinitionBuilder,\n type ConcatSlicePayloads,\n} from \"../types/element\";\nimport type { AnyMetadataAdapter, MetadataBuilder, OperationMetadata, SliceMetadata } from \"../types/metadata\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { buildDocument } from \"./build-document\";\nimport { createVarRefs, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\nimport { createPathGraphFromSliceEntries } from \"./projection-path-graph\";\n\nexport type ComposedOperationComposerOptions = {\n metadataAdapter?: AnyMetadataAdapter;\n};\n\nexport const createComposedOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n>(\n options: ComposedOperationComposerOptions = {},\n) => {\n const { metadataAdapter } = options;\n return <TOperationType extends OperationType>(operationType: TOperationType) => {\n return <\n TOperationName extends string,\n TSliceFragments extends AnySlicePayloads,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n operationName: TOperationName;\n variables?: TVarDefinitions;\n metadata?: MetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, MergeVarDefinitions<TVarDefinitions>>>,\n OperationMetadata\n >;\n },\n builder: ComposedOperationDefinitionBuilder<TSchema, MergeVarDefinitions<TVarDefinitions>, TSliceFragments>,\n ) => {\n return ComposedOperation.create<\n TSchema,\n TRuntimeAdapter,\n TOperationType,\n TOperationName,\n MergeVarDefinitions<TVarDefinitions>,\n TSliceFragments\n >(() => {\n const { operationName } = options;\n const variables = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const $ = createVarRefs<TSchema, typeof variables>(variables);\n const fragments = builder({ $ });\n\n const fields = Object.fromEntries(\n Object.entries(fragments).flatMap(([label, { getFields: fields }]) =>\n Object.entries(fields).map(([key, reference]) => [`${label}_${key}`, reference]),\n ),\n ) as ConcatSlicePayloads<TSliceFragments>;\n const projectionPathGraph = createPathGraphFromSliceEntries(fragments);\n\n const document = buildDocument({\n operationName,\n operationType,\n variables,\n fields,\n });\n const operationMetadataResult = options.metadata?.({ $, document });\n\n // Collect metadata from all slices\n const sliceMetadataResults = Object.values(fragments)\n .map((fragment) => fragment.metadata)\n .filter((m): m is SliceMetadata | Promise<SliceMetadata> => m != null);\n\n const mergeSliceMetadata = metadataAdapter?.mergeSliceMetadata ?? defaultMergeSliceMetadata;\n\n const createDefinition = (operationMetadata: OperationMetadata | undefined, sliceMetadataList: SliceMetadata[]) => {\n const metadata = mergeSliceMetadata(operationMetadata ?? {}, sliceMetadataList);\n return {\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof MergeVarDefinitions<TVarDefinitions> & string)[],\n projectionPathGraph,\n document,\n parse: createExecutionResultParser({ fragments, projectionPathGraph }),\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n };\n\n // Check if any metadata is a Promise\n const hasAsyncOperationMetadata = operationMetadataResult instanceof Promise;\n const hasAsyncSliceMetadata = sliceMetadataResults.some((m) => m instanceof Promise);\n\n if (hasAsyncOperationMetadata || hasAsyncSliceMetadata) {\n // Resolve all promises and create definition\n return Promise.all([\n hasAsyncOperationMetadata ? operationMetadataResult : Promise.resolve(operationMetadataResult),\n Promise.all(sliceMetadataResults.map((m) => (m instanceof Promise ? m : Promise.resolve(m)))),\n ]).then(([operationMetadata, sliceMetadataList]) => createDefinition(operationMetadata, sliceMetadataList));\n }\n\n return createDefinition(operationMetadataResult, sliceMetadataResults as SliceMetadata[]);\n });\n };\n };\n};\n","export function wrapByKey<TName extends string, TValue>(name: TName, value: TValue) {\n return {\n [name]: value,\n } as {\n [K in TName]: TValue;\n };\n}\n","import {\n type AnyFieldSelectionFactory,\n type AnyFieldSelectionFactoryReturn,\n type FieldSelectionFactories,\n type FieldSelectionFactoryObjectReturn,\n type FieldSelectionFactoryPrimitiveReturn,\n type FieldSelectionFactoryUnionReturn,\n mergeFields,\n type NestedObjectFieldsBuilder,\n type 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\";\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 wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: mergeFields(nest({ f: createFieldFactories(schema, type.name) })),\n union: null,\n } satisfies AnyFieldSelection)) 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 wrap({\n parent: typeName,\n field: fieldName,\n type: type,\n args: fieldArgs ?? {},\n directives: extras?.directives ?? {},\n object: null,\n union: 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 mergeFields(builder({ f: createFieldFactories(schema, memberName) }));\n },\n ) as TNested,\n } satisfies AnyFieldSelection)) 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","import { type FieldsBuilder, InlineOperation, type MergeFields, mergeFields } from \"../types/element\";\nimport type { AnyFields } from \"../types/fragment\";\nimport type { MetadataBuilder, OperationMetadata } from \"../types/metadata\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\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 { createVarRefs, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createInlineOperationComposerFactory = <\n TSchema extends AnyGraphqlSchema,\n _TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n>(\n schema: NoInfer<TSchema>,\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 <TOperationName extends string, TFields extends AnyFields[], TVarDefinitions extends InputTypeSpecifiers[] = [{}]>(\n options: {\n operationName: TOperationName;\n variables?: TVarDefinitions;\n metadata?: MetadataBuilder<\n ReturnType<typeof createVarRefs<TSchema, MergeVarDefinitions<TVarDefinitions>>>,\n OperationMetadata\n >;\n },\n fieldBuilder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFields>,\n ) => {\n return InlineOperation.create<\n TSchema,\n TOperationType,\n TOperationName,\n MergeVarDefinitions<TVarDefinitions>,\n MergeFields<TFields>\n >(() => {\n const { operationName } = options;\n const variables = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const $ = createVarRefs<TSchema, MergeVarDefinitions<TVarDefinitions>>(variables);\n const f = createFieldFactories(schema, operationTypeName);\n const fields = mergeFields(fieldBuilder({ f, $ }));\n\n const document = buildDocument({\n operationName,\n operationType,\n variables,\n fields,\n });\n const metadataResult = options.metadata?.({ $, document });\n\n const createDefinition = (metadata: OperationMetadata | undefined) => ({\n operationType,\n operationName,\n variableNames: Object.keys(variables) as (keyof MergeVarDefinitions<TVarDefinitions> & string)[],\n documentSource: () => fields,\n document,\n metadata,\n });\n\n if (metadataResult instanceof Promise) {\n return metadataResult.then(createDefinition);\n }\n\n return createDefinition(metadataResult);\n });\n };\n };\n};\n","import { type FieldsBuilder, type MergeFields, Model, mergeFields } from \"../types/element\";\nimport type { AnyFields, InferFields } from \"../types/fragment\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\nimport { mapValues } from \"../utils/map-values\";\nimport { createFieldFactories } from \"./fields-builder\";\nimport { createVarAssignments, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createGqlModelComposers = <TSchema extends AnyGraphqlSchema>(schema: NoInfer<TSchema>) => {\n type ModelBuilder<TTypeName extends keyof TSchema[\"object\"] & string> = <\n TFieldEntries extends AnyFields[],\n TNormalized extends object,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n variables?: TVarDefinitions;\n },\n builder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n normalize: (raw: NoInfer<InferFields<TSchema, MergeFields<TFieldEntries>>>) => TNormalized,\n ) => ReturnType<\n typeof Model.create<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TNormalized>\n >;\n\n const createModelComposer = <TTypeName extends keyof TSchema[\"object\"] & string>(\n typename: TTypeName,\n ): ModelBuilder<TTypeName> => {\n return <TFieldEntries extends AnyFields[], TNormalized extends object, TVarDefinitions extends InputTypeSpecifiers[] = [{}]>(\n options: {\n variables?: TVarDefinitions;\n },\n builder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n normalize: (raw: NoInfer<InferFields<TSchema, MergeFields<TFieldEntries>>>) => TNormalized,\n ) =>\n Model.create<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TNormalized>(() => {\n const varDefinitions = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n return {\n typename,\n fragment: (variables) => {\n const f = createFieldFactories(schema, typename);\n const $ = createVarAssignments<TSchema, MergeVarDefinitions<TVarDefinitions>>(varDefinitions, variables);\n return mergeFields(builder({ f, $ }));\n },\n normalize,\n };\n });\n };\n\n type ModelBuildersAll = {\n readonly [TTypeName in keyof TSchema[\"object\"]]: TTypeName extends string ? ModelBuilder<TTypeName> : never;\n };\n type ModelBuilders = Omit<ModelBuildersAll, TSchema[\"operations\"][OperationType] & keyof ModelBuildersAll>;\n\n return mapValues(schema.object, (_, typename) => createModelComposer(typename)) as ModelBuilders;\n};\n","import { handleProjectionBuilder } from \"../runtime/slice\";\nimport {\n type ExecutionResultProjectionsBuilder,\n type FieldsBuilder,\n type MergeFields,\n mergeFields,\n Slice,\n} from \"../types/element\";\nimport type { AnyFields, AssigningInput } from \"../types/fragment\";\nimport type { SliceMetadataBuilder } from \"../types/metadata\";\nimport type { AnyGraphqlRuntimeAdapter, AnyProjection } from \"../types/runtime\";\nimport type { AnyGraphqlSchema, OperationType } from \"../types/schema\";\nimport type { InputTypeSpecifiers } from \"../types/type-foundation\";\n\nimport { createFieldFactories } from \"./fields-builder\";\nimport { createVarAssignments, type MergeVarDefinitions, mergeVarDefinitions } from \"./input\";\n\nexport const createSliceComposerFactory = <TSchema extends AnyGraphqlSchema, TRuntimeAdapter extends AnyGraphqlRuntimeAdapter>(\n schema: NoInfer<TSchema>,\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 TFieldEntries extends AnyFields[],\n TProjection extends AnyProjection,\n TVarDefinitions extends InputTypeSpecifiers[] = [{}],\n >(\n options: {\n variables?: TVarDefinitions;\n metadata?: SliceMetadataBuilder<AssigningInput<TSchema, MergeVarDefinitions<TVarDefinitions>>>;\n },\n fieldBuilder: FieldsBuilder<TSchema, TTypeName, MergeVarDefinitions<TVarDefinitions>, TFieldEntries>,\n projectionBuilder: ExecutionResultProjectionsBuilder<TSchema, TRuntimeAdapter, MergeFields<TFieldEntries>, TProjection>,\n ) =>\n Slice.create<TSchema, TOperationType, MergeVarDefinitions<TVarDefinitions>, MergeFields<TFieldEntries>, TProjection>(() => {\n const varDefinitions = mergeVarDefinitions((options.variables ?? []) as TVarDefinitions);\n const projection = handleProjectionBuilder(projectionBuilder);\n const { metadata: metadataOption } = options;\n\n return {\n operationType,\n embed: (variables) => {\n const f = createFieldFactories(schema, operationTypeName);\n const $ = createVarAssignments<TSchema, typeof varDefinitions>(varDefinitions, variables);\n const fields = mergeFields(fieldBuilder({ f, $ }));\n const metadata = metadataOption?.({ $ });\n return { variables, getFields: () => fields, projection, metadata };\n },\n };\n });\n };\n};\n","import type { TypeModifier, ValidTypeModifier } from \"./type-modifier-core.generated\";\n\nexport type ModifiedTypeName<\n // Wrapping by array to avoid type distribution\n TNameCandidate extends [string],\n TName extends TNameCandidate[0],\n TModifier extends TypeModifier,\n> = [string] extends TNameCandidate // For abstract implementation\n ? `${TName}:${TModifier}`\n : TNameCandidate extends [TName]\n ? // First, user inputs TName based on TNameCandidate\n NoInfer<`${TNameCandidate[0]}`> | (TName & NoInfer<TypeModifier extends TModifier ? never : string>)\n : // With valid TName, user can input TModifier based on TypeModifierNS.ValidTypeModifier\n `${TName}:${TModifier & ValidTypeModifier}`;\n\nexport function parseModifiedTypeName<TNameCandidate extends [string], TName extends string, TModifier extends TypeModifier>(\n nameAndModifier: ModifiedTypeName<TNameCandidate, TName, TModifier>,\n) {\n if (typeof nameAndModifier !== \"string\") {\n throw new Error(`Invalid modified type name: ${nameAndModifier}`);\n }\n\n const [name, modifier] = nameAndModifier.split(\":\") as [TName, TModifier];\n return { name, modifier };\n}\n","import type { AnyConstDirectiveAttachments, AnyGraphqlSchema, ConstAssignableInputValue } from \"../types/schema\";\nimport { type AnyTypeSpecifier, type ModifiedTypeName, parseModifiedTypeName, type TypeModifier } from \"../types/type-foundation\";\nimport { getVarRefInner, getVarRefName, getVarRefValue } from \"../types/type-foundation/var-ref\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\n\ntype AssignableDefaultValue<\n TSchema extends AnyGraphqlSchema,\n TKind extends \"scalar\" | \"enum\" | \"input\",\n TName extends keyof TSchema[TKind] & 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\nexport const createVarBuilder = <TSchema extends AnyGraphqlSchema>(schema: TSchema) => {\n const varBuilder = <TVarName extends string>(varName: TVarName) => {\n const createVarSpecifierBuilder = <TKind extends \"scalar\" | \"enum\" | \"input\">(kind: TKind) => {\n type VarSpecifier<\n TTypeName extends keyof TSchema[TKind] & string,\n TModifier extends TypeModifier,\n TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | 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 return <\n const TTypeName extends keyof TSchema[TKind] & string,\n const TModifier extends TypeModifier,\n const TDefaultFn extends (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n type: ModifiedTypeName<[keyof TSchema[TKind] & string], TTypeName, TModifier>,\n extras?: {\n default?:\n | (TDefaultFn & (() => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier>))\n | (NoInfer<TDefaultFn> extends null ? () => AssignableDefaultValue<TSchema, TKind, TTypeName, TModifier> : never);\n directives?: TDirectives;\n },\n ) =>\n wrapByKey(varName, {\n kind,\n ...parseModifiedTypeName(type),\n defaultValue: extras?.default ? { default: extras.default() } : null,\n } satisfies AnyTypeSpecifier as VarSpecifier<TTypeName, TModifier, TDefaultFn, TDirectives>);\n };\n\n return {\n scalar: createVarSpecifierBuilder(\"scalar\"),\n enum: createVarSpecifierBuilder(\"enum\"),\n input: createVarSpecifierBuilder(\"input\"),\n\n byField: <\n const TTypeName extends keyof TSchema[\"object\"] & string,\n const TFieldName extends keyof TSchema[\"object\"][TTypeName][\"fields\"] & string,\n const TArgName extends keyof TSchema[\"object\"][TTypeName][\"fields\"][TFieldName][\"arguments\"] & string,\n >(\n typeName: TTypeName,\n fieldName: TFieldName,\n argName: TArgName,\n ) => {\n const argTypeRef = schema.object[typeName]?.fields[fieldName]?.arguments[argName];\n\n if (!argTypeRef) {\n throw new Error(`Argument ${argName} not found in field ${fieldName} of type ${typeName}`);\n }\n\n // TODO: clone\n return { ...argTypeRef } as TSchema[\"object\"][TTypeName][\"fields\"][TFieldName][\"arguments\"][TArgName];\n },\n };\n };\n\n const $var = Object.assign(varBuilder, {\n getName: getVarRefName,\n getValue: getVarRefValue,\n getInner: getVarRefInner,\n });\n\n return { $var };\n};\n","import type { AnyComposedOperation, AnyInlineOperation, AnyModel, AnySlice } from \"../types/element\";\nimport type { AnyMetadataAdapter } from \"../types/metadata\";\nimport type { AnyGraphqlRuntimeAdapter } from \"../types/runtime\";\nimport type { AnyGraphqlSchema } from \"../types/schema\";\nimport { createComposedOperationComposerFactory } from \"./composed-operation\";\nimport { createInlineOperationComposerFactory } from \"./inline-operation\";\nimport { createGqlModelComposers } from \"./model\";\nimport { createSliceComposerFactory } from \"./slice\";\nimport { createVarBuilder } from \"./var-builder\";\n\nexport type GqlElementComposer<TComposers, THelper> = <\n TResult extends AnyModel | AnySlice | AnyComposedOperation | AnyInlineOperation,\n>(\n composeElement: (composers: TComposers, helper: THelper) => TResult,\n) => TResult;\n\nexport type GqlElementComposerOptions<THelpers extends object = object> = {\n metadataAdapter?: AnyMetadataAdapter;\n helpers?: THelpers;\n};\n\nexport const createGqlElementComposer = <\n TSchema extends AnyGraphqlSchema,\n TRuntimeAdapter extends AnyGraphqlRuntimeAdapter,\n THelpers extends object = object,\n>(\n schema: NoInfer<TSchema>,\n options: GqlElementComposerOptions<NoInfer<THelpers>> = {} as GqlElementComposerOptions<THelpers>,\n) => {\n const { metadataAdapter, helpers } = options;\n const model = createGqlModelComposers<TSchema>(schema);\n const createSliceComposer = createSliceComposerFactory<TSchema, TRuntimeAdapter>(schema);\n const createComposedOperationFactory = createComposedOperationComposerFactory<TSchema, TRuntimeAdapter>({\n metadataAdapter,\n });\n const createInlineOperationComposer = createInlineOperationComposerFactory<TSchema, TRuntimeAdapter>(schema);\n const composers = {\n model,\n query: {\n slice: createSliceComposer(\"query\"),\n composed: createComposedOperationFactory(\"query\"),\n inline: createInlineOperationComposer(\"query\"),\n },\n mutation: {\n slice: createSliceComposer(\"mutation\"),\n composed: createComposedOperationFactory(\"mutation\"),\n inline: createInlineOperationComposer(\"mutation\"),\n },\n subscription: {\n slice: createSliceComposer(\"subscription\"),\n composed: createComposedOperationFactory(\"subscription\"),\n inline: createInlineOperationComposer(\"subscription\"),\n },\n };\n\n const helper = {\n ...createVarBuilder(schema),\n ...(helpers ?? ({} as THelpers)),\n };\n\n const elementComposer: GqlElementComposer<typeof composers, typeof helper> = (composeElement) =>\n composeElement(composers, helper);\n\n return elementComposer;\n};\n","/**\n * Helper function for defining typed helpers with better inference.\n * Use this when you need explicit typing or when type inference needs assistance.\n *\n * @example\n * ```typescript\n * const gql = createGqlElementComposer(schema, {\n * helpers: defineHelpers({\n * auth: {\n * requiresLogin: () => ({ requiresAuth: true }),\n * adminOnly: () => ({ requiresAuth: true, role: 'admin' }),\n * },\n * }),\n * });\n * ```\n */\nexport const defineHelpers = <T extends object>(helpers: T): T => helpers;\n","export interface WithTypeMeta<T extends object> {\n readonly $type: T;\n}\n\nexport const withTypeMeta = <TTarget extends WithTypeMeta<TTypeMeta>, TTypeMeta extends object>(\n target: Omit<NoInfer<TTarget>, \"$type\">,\n): TTarget => {\n if (process.env.NODE_ENV !== \"production\") {\n if ((typeof target !== \"object\" && typeof target !== \"function\") || target === null) {\n throw new Error(\"Target must be an object or a function.\");\n }\n\n Object.defineProperty(target, \"$type\", {\n get() {\n throw new Error(\"This property is only for type inference. Do not access this property directly.\");\n },\n });\n }\n\n return target as TTarget;\n};\n","import type { AnyConstDirectiveAttachments } from \"../types/schema\";\nimport {\n type AnyTypeSpecifier,\n type InputTypeKind,\n type InputTypeSpecifiers,\n type ModifiedTypeName,\n type OutputTypeKind,\n parseModifiedTypeName,\n type TypeModifier,\n} from \"../types/type-foundation\";\nimport type { ConstValue } from \"../types/type-foundation/const-value\";\n\nconst createUnsafeInputTypeSpecifierFactory = <const TKind extends InputTypeKind>(kind: TKind) => {\n type UnsafeInputTypeSpecifier<\n TName extends string,\n TModifier extends TypeModifier,\n TDefaultFactory extends (() => ConstValue) | null,\n TDirectives extends AnyConstDirectiveAttachments,\n > = {\n kind: TKind;\n name: TName;\n modifier: TModifier;\n defaultValue: TDefaultFactory extends null ? null : { default: ReturnType<NonNullable<TDefaultFactory>> };\n directives: TDirectives;\n };\n\n return <\n const TName extends string,\n const TModifier extends TypeModifier,\n const TDefaultFactory extends (() => ConstValue) | null = null,\n const TDirectives extends AnyConstDirectiveAttachments = {},\n >(\n type: ModifiedTypeName<[string], TName, TModifier>,\n extras: {\n default?: TDefaultFactory;\n directives?: TDirectives;\n },\n ): UnsafeInputTypeSpecifier<TName, TModifier, TDefaultFactory, TDirectives> =>\n ({\n kind,\n ...parseModifiedTypeName(type),\n defaultValue: extras.default ? { default: extras.default() } : null,\n }) satisfies AnyTypeSpecifier as UnsafeInputTypeSpecifier<TName, TModifier, TDefaultFactory, TDirectives>;\n};\n\nexport const unsafeInputType = {\n scalar: createUnsafeInputTypeSpecifierFactory(\"scalar\"),\n enum: createUnsafeInputTypeSpecifierFactory(\"enum\"),\n input: createUnsafeInputTypeSpecifierFactory(\"input\"),\n};\n\nconst createUnsafeOutputTypeSpecifierFactory = <const TKind extends OutputTypeKind>(kind: TKind) => {\n type UnsafeOutputTypeSpecifier<TName extends string, TModifier extends TypeModifier, TArguments extends InputTypeSpecifiers> = {\n kind: TKind;\n name: TName;\n modifier: TModifier;\n arguments: TArguments;\n };\n\n return <const TName extends string, const TModifier extends TypeModifier, const TArguments extends InputTypeSpecifiers = {}>(\n type: ModifiedTypeName<[string], TName, TModifier>,\n extras: {\n arguments?: TArguments;\n },\n ): UnsafeOutputTypeSpecifier<TName, TModifier, InputTypeSpecifiers extends TArguments ? {} : TArguments> =>\n ({\n kind,\n ...parseModifiedTypeName(type),\n arguments: extras.arguments ?? ({} as TArguments),\n }) satisfies AnyTypeSpecifier as UnsafeOutputTypeSpecifier<\n TName,\n TModifier,\n InputTypeSpecifiers extends TArguments ? {} : TArguments\n >;\n};\n\nexport const unsafeOutputType = {\n scalar: createUnsafeOutputTypeSpecifierFactory(\"scalar\"),\n enum: createUnsafeOutputTypeSpecifierFactory(\"enum\"),\n object: createUnsafeOutputTypeSpecifierFactory(\"object\"),\n union: createUnsafeOutputTypeSpecifierFactory(\"union\"),\n typename: createUnsafeOutputTypeSpecifierFactory(\"typename\"),\n};\n","import type {\n EnumDefinition,\n InputDefinition,\n ObjectDefinition,\n OperationRoots,\n ScalarDefinition,\n UnionDefinition,\n} from \"../types/schema\";\nimport { withTypeMeta } from \"../utils/type-meta\";\nimport { wrapByKey } from \"../utils/wrap-by-key\";\nimport { unsafeOutputType } from \"./type-specifier-builder\";\n\nexport const defineScalar = <const TName extends string, TInput, TOutput>(name: NoInfer<TName>) =>\n wrapByKey(\n name,\n withTypeMeta({ name }) satisfies ScalarDefinition<{\n name: TName;\n input: TInput;\n output: TOutput;\n }>,\n );\n\nexport const define = <const TName extends string>(name: TName) => ({\n enum: <const TValues extends EnumDefinition<{ name: TName; values: string }>[\"values\"]>(values: TValues) =>\n withTypeMeta({ name, values }) satisfies EnumDefinition<{\n name: TName;\n values: Extract<keyof TValues, string>;\n }>,\n\n input: <TFields extends InputDefinition[\"fields\"]>(fields: TFields) =>\n ({\n name,\n fields,\n }) satisfies InputDefinition,\n\n object: <TFields extends ObjectDefinition[\"fields\"]>(fields: TFields) =>\n ({\n name,\n fields: {\n __typename: unsafeOutputType.typename(`${name}:!`, {}),\n ...fields,\n },\n }) satisfies ObjectDefinition,\n\n union: <TTypes extends UnionDefinition[\"types\"]>(types: TTypes) =>\n ({\n name,\n types,\n }) satisfies UnionDefinition,\n});\n\nexport const defineOperationRoots = <const TOperationRoots extends OperationRoots>(operationRoots: TOperationRoots) =>\n operationRoots;\n"],"mappings":";;;;;AA2BA,MAAa,sBAAsB,UAAqD;AACtF,KAAI,UAAU,OACZ,QAAO;AAGT,KAAI,UAAU,KACZ,QAAO,EACL,MAAM,KAAK,MACZ;AAGH,KAAI,iBAAiB,QAAQ;EAC3B,MAAM,QAAQ,OAAO,SAAS,MAAM;AACpC,MAAI,MAAM,SAAS,WACjB,QAAO;GACL,MAAM,KAAK;GACX,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO,MAAM;IAAM;GAC7C;AAGH,MAAI,MAAM,SAAS,cACjB,QAAO,oBAAoB,MAAM,MAAM;AAGzC,QAAM,IAAI,MAAM,yBAAyB,QAAwB;;AAGnE,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,MAAM,KAAK,SAAS,mBAAmB,KAAK,CAAC,CAAC,QAAQ,SAAS,SAAS,KAAK;EACtF;AAGH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,OAAO,QAAQ,MAAM,CAC1B,KAAK,CAAC,KAAKA,aAAmC;GAC7C,MAAM,YAAY,mBAAmBA,QAAM;AAC3C,UAAO,YACH;IACE,MAAM,KAAK;IACX,MAAM;KAAE,MAAM,KAAK;KAAM,OAAO;KAAK;IACrC,OAAO;IACR,GACD;IACJ,CACD,QAAQ,SAAS,SAAS,KAAK;EACnC;AAGH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX;EACD;AAGH,KAAI,OAAO,UAAU,SAGnB,QAAO;EACL,MAFc,CAAC,OAAO,UAAU,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,IAAI,GAExD,KAAK,QAAQ,KAAK;EAClC,OAAO,MAAM,UAAU;EACxB;AAGH,KAAI,OAAO,UAAU,UACnB,QAAO;EACL,MAAM,KAAK;EACX;EACD;AAGH,OAAM,IAAI,MAAM,uBAAuB,OAAQ,QAAyB;;AAG1E,MAAM,kBAAkB,SACtB,OAAO,QAAQ,QAAQ,EAAE,CAAC,CACvB,KAAK,CAAC,MAAM,WAAgC;CAC3C,MAAM,YAAY,mBAAmB,MAAM;AAC3C,QAAO,YACH;EACE,MAAM,KAAK;EACX,MAAM;GAAE,MAAM,KAAK;GAAM,OAAO;GAAM;EACtC,OAAO;EACR,GACD;EACJ,CACD,QAAQ,SAAS,SAAS,KAAK;AAEpC,MAAM,uBAAuB,UAC3B,OAAO,QAAQ,MAAM,CAClB,KAAK,CAAC,UAAU,YAAuC;AACtD,QAAO,SACH;EACE,MAAM,KAAK;EACX,eAAe;GACb,MAAM,KAAK;GACX,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAU;GAC3C;EACD,cAAc;GACZ,MAAM,KAAK;GACX,YAAY,WAAW,OAAO;GAC/B;EACF,GACD;EACJ,CACD,QAAQ,SAAS,SAAS,KAAK;AAEpC,MAAM,cAAc,UAClB,OAAO,QAAQ,MAAM,CAAC,KACnB,CAAC,OAAO,EAAE,MAAM,gBAAO,QAAQ,cAAyB;CACvD,MAAM,KAAK;CACX,MAAM;EAAE,MAAM,KAAK;EAAM,OAAOC;EAAO;CACvC,OAAO,UAAUA,UAAQ;EAAE,MAAM,KAAK;EAAM,OAAO;EAAO,GAAG;CAC7D,WAAW,eAAe,KAAK;CAC/B,cAAc,SACV;EACE,MAAM,KAAK;EACX,YAAY,WAAW,OAAO;EAC/B,GACD,QACE;EACE,MAAM,KAAK;EACX,YAAY,oBAAoB,MAAM;EACvC,GACD;CACP,EACF;AAEH,MAAa,uBAAuB,UAA6C;AAC/E,KAAI,UAAU,OACZ,QAAO;AAGT,KAAI,UAAU,KACZ,QAAO,EAAE,MAAM,KAAK,MAAM;AAG5B,KAAI,OAAO,UAAU,SACnB,QAAO;EAAE,MAAM,KAAK;EAAQ;EAAO;AAGrC,KAAI,OAAO,UAAU,UACnB,QAAO;EAAE,MAAM,KAAK;EAAS;EAAO;AAGtC,KAAI,OAAO,UAAU,SAGnB,QAAO;EAAE,MADO,CAAC,OAAO,UAAU,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,IAAI,GACjD,KAAK,QAAQ,KAAK;EAAK,OAAO,MAAM,UAAU;EAAE;AAG3E,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,MAAM,KAAK,SAAS,oBAAoB,KAAK,CAAC,CAAC,QAAQ,SAAS,SAAS,KAAK;EACvF;AAGH,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM,KAAK;EACX,QAAQ,OAAO,QAAQ,MAAM,CAC1B,KAAK,CAAC,KAAKD,aAAwC;GAClD,MAAM,YAAY,oBAAoBA,QAAM;AAC5C,UAAO,YACH;IACE,MAAM,KAAK;IACX,MAAM;KAAE,MAAM,KAAK;KAAM,OAAO;KAAK;IACrC,OAAO;IACR,GACD;IACJ,CACD,QAAQ,SAAS,SAAS,KAAK;EACnC;AAGH,OAAM,IAAI,MAAM,uBAAuB,OAAQ,QAAyB;;AAG1E,MAAa,yBAAyB,UAAwB,cAA6C;CACzG,MAAM,WAAW,WAAW;AAE5B,KAAI,aAAa,IACf,QAAO;AAGT,KAAI,aAAa,IACf,QAAO;EAAE,MAAM,KAAK;EAAe,MAAM;EAAU;AAMrD,KAAI,CADyB,oBACH,KAAK,SAAS,CACtC,OAAM,IAAI,MAAM,qBAAqB,WAAW;CAKlD,IAAIE,OAAuD;EACzD;EACA,MAAM;EACP;AAED,QAAO,KAAK,SAAS,SAAS,GAAG;AAE/B,MAAI,KAAK,SAAS,WAAW,IAAI,EAAE;AAEjC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM,KAAK;IACZ;AACD;;AAGF,MAAI,KAAK,SAAS,WAAW,IAAI,EAAE;AAEjC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM,KAAK,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO;KAAE,MAAM,KAAK;KAAe,MAAM,KAAK;KAAM;IACxG;AACD;;AAIF,MAAI,KAAK,SAAS,WAAW,MAAM,EAAE;AAEnC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM;KAAE,MAAM,KAAK;KAAW,MAAM,KAAK;KAAM;IAChD;AACD;;AAGF,MAAI,KAAK,SAAS,WAAW,MAAM,EAAE;AAEnC,UAAO;IACL,UAAU,KAAK,SAAS,MAAM,EAAE;IAChC,MAAM;KACJ,MAAM,KAAK;KACX,MAAM;MAAE,MAAM,KAAK;MAAW,MAAM,KAAK;MAAM;KAChD;IACF;AACD;;AAGF,QAAM,IAAI,MAAM,qBAAqB,KAAK,WAAW;;AAGvD,QAAO,KAAK;;AAGd,MAAM,kBAAkB,cAA6D;AACnF,QAAO,OAAO,QAAQ,UAAU,CAAC,KAC9B,CAAC,MAAM,UAAkC;EACxC,MAAM,KAAK;EACX,UAAU;GAAE,MAAM,KAAK;GAAU,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAM;GAAE;EACzE,cAAe,IAAI,gBAAgB,oBAAoB,IAAI,aAAa,QAAQ,IAAK;EACrF,MAAM,sBAAsB,IAAI,iBAAiB;GAC/C,MAAM,KAAK;GACX,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO,IAAI;IAAM;GAC3C,EAAE;EACJ,EACF;;AAGH,MAAa,0BAA0B,cAAgD;AACrF,SAAQ,WAAR;EACE,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,WACH,QAAO,kBAAkB;EAC3B,KAAK,eACH,QAAO,kBAAkB;EAC3B,QACE,OAAM,IAAI,MAAM,2BAA2B,YAAY;;;AAK7D,MAAa,iBAIX,YAKsG;CACtG,MAAM,EAAE,eAAe,eAAe,WAAW,WAAW;AAC5D,QAAO;EACL,MAAM,KAAK;EACX,aAAa,CACX;GACE,MAAM,KAAK;GACX,WAAW,uBAAuB,cAAc;GAChD,MAAM;IAAE,MAAM,KAAK;IAAM,OAAO;IAAe;GAC/C,qBAAqB,eAAe,UAAU;GAE9C,cAAc;IACZ,MAAM,KAAK;IACX,YAAY,WAAW,OAAO;IAC/B;GACF,CACF;EACF;;;;;ACjVH,MAAM,sBAAsB,OAAO,sBAAsB;AACzD,MAAM,sBAAsB,OAAO,sBAAsB;AASzD,IAAsB,aAAtB,MAAsB,WAAuE;CAG3F,CAAS;CACT,CAAS,uBAAiD;CAE1D,AAAU,YAAY,UAAkD,SAAmC;EACzG,IAAIC,QAAuC;EAC3C,IAAIC,UAAgC;AAEpC,OAAK,uBAAuB,UAAU,QACpC,SAC6C;AAC7C,OAAI,MACF,QAAO,MAAM;AAGf,OAAI,SAAS;AACX,UAAM;AAEN,WAAO,MAAO;;AAGhB,OAAI,QAMF,MAAK,MAAM,OAAO,SAAS,CACzB,QAAO,WAAW,0BAA0B,IAAI;GAIpD,MAAM,UAAUC,SAAO,QAAQ;AAC/B,OAAI,EAAE,mBAAmB,SACvB,SAAQ,QAAQ,EAAE,OAAO,SAAS,EAAE;AAKtC,aAAU,QAAQ,MAAM,UAAU;AAChC,YAAQ,EAAE,OAAO;AACjB,cAAU;KACV;AAEF,SAAM;AAEN,UAAO,MAAO;;AAGhB,SAAO,eAAe,MAAM,UAAU,EACpC,MAAM;AACJ,SAAM,IAAI,MAAM,6EAA6E;KAEhG,CAAC;;CAGJ,OAAO,WAA6C,SAAmB,SAAkC;AACvG,UAAQ,uBAAuB;;CAGjC,QAAQ,0BAA0B,SAAgE;EAChG,MAAM,UAAU,QAAQ;AACxB,SAAO,QAAQ,qBAAqB,QAAQ;;CAG9C,OAAe,kBAAyC,SAAqC;EAC3F,MAAM,UAAU,QAAQ;EACxB,MAAM,SAAS,QAAQ,qBAAqB,QAAQ,CAAC,MAAM;AAE3D,MAAI,CAAC,OAAO,KACV,OAAM,IAAI,MAAM,uDAAuD;AAGzE,SAAO,OAAO;;CAGhB,OAAO,aAAa,SAAgC;AAClD,EAAK,WAAW,kBAAkB,QAAQ;;CAG5C,OAAO,IAA2B,SAAqC;AACrE,SAAO,WAAW,kBAAkB,QAAQ;;;;;;ACzChD,IAAa,oBAAb,MAAa,0BASH,WAsBV;CAKE,AAAQ,YACN,UAuBA;AACA,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,sBAAsB;AAC/B,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,QAAQ;AACjB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAQL,UAiCA;AACA,SAAO,IAAI,kBAAkBA,SAAO;;;;;;AC3JxC,MAAa,eAAkD,WAC7D,OAAO,OAAO,EAAE,EAAE,GAAG,OAAO;;;;ACkB9B,IAAa,kBAAb,MAAa,wBAQH,WAKV;CAKE,AAAQ,YACN,UAKA;AACA,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,iBAAiB;AAC1B,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAiBA;AACA,SAAO,IAAI,gBAAgBA,SAAO;;;;;;ACvFtC,IAAa,QAAb,MAAa,cAOH,WAKV;CAME,AAAQ,YAAY,UAAgF;AAClG,QAAMC,SAAO;;CAGf,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,WAAW;AACpB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,YAAY;AACrB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAKA;AAKA,SAAO,IAAI,MAAMA,SAA8E;;;;;;AClDnG,IAAa,QAAb,MAAa,cAMH,WAKV;CAME,AAAQ,YAAY,UAAiF;AACnG,QAAMC,SAAO;;CAGf,IAAW,gBAAgB;AACzB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAE9B,IAAW,QAAQ;AACjB,SAAO,WAAW,IAAI,KAAK,CAAC;;CAG9B,OAAO,OAOL,UAUA;AAIA,SAAO,IAAI,MAAMA,SAAgF;;;;;;ACtErG,SAAS,gBAAgB,OAAwF;CAC/G,MAAM,eAAe,MAAM,QACxB,KAAqD,EAAE,OAAO,KAAK,UAAU,CAAC,SAAS,GAAG,gBAAgB;AACzG,MAAI,QACF,EAAC,IAAI,aAAa,IAAI,WAAW,EAAE,GAAG,KAAK;GAAE;GAAO;GAAK;GAAU,CAAC;AAEtE,SAAO;IAET,EAAE,CACH;AAED,QAAO;EACL,SAAS,MAAM,KAAK,EAAE,OAAO,KAAK,gBAAgB;GAAE;GAAO,MAAM;GAAK,OAAO,SAAS,WAAW;GAAG,EAAE;EACtG,UAAU,UAAU,eAAe,YAAU,gBAAgBC,QAAM,CAAC;EACrE;;AAGH,SAAgB,gCAAgC,WAA+C;AAY7F,QAAO,gBAXO,OAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,WACvD,MAAM,KACJ,IAAI,IACF,MAAM,WAAW,MAAM,KAAK,EAAE,MAAM,KAAK,eAAe;EACtD,MAAM,CAAC,OAAO,GAAG,QAAQ;AACzB,SAAO,CAAC,KAAK;GAAE;GAAO;GAAK,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK;GAAE,CAAC;GACtE,CACH,CAAC,QAAQ,CACX,CACF,CAE4B;;;;;ACf/B,MAAa,0CAIX,UAA4C,EAAE,KAC3C;CACH,MAAM,EAAE,oBAAoB;AAC5B,SAA8C,kBAAkC;AAC9E,UAKE,WAQA,YACG;AACH,UAAO,kBAAkB,aAOjB;IACN,MAAM,EAAE,kBAAkBC;IAC1B,MAAM,YAAY,oBAAqBA,UAAQ,aAAa,EAAE,CAAqB;IACnF,MAAM,IAAI,cAAyC,UAAU;IAC7D,MAAM,YAAY,QAAQ,EAAE,GAAG,CAAC;IAEhC,MAAM,SAAS,OAAO,YACpB,OAAO,QAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,WAAWC,gBACtD,OAAO,QAAQA,SAAO,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC,CACjF,CACF;IACD,MAAM,sBAAsB,gCAAgC,UAAU;IAEtE,MAAM,WAAW,cAAc;KAC7B;KACA;KACA;KACA;KACD,CAAC;IACF,MAAM,0BAA0BD,UAAQ,WAAW;KAAE;KAAG;KAAU,CAAC;IAGnE,MAAM,uBAAuB,OAAO,OAAO,UAAU,CAClD,KAAK,aAAa,SAAS,SAAS,CACpC,QAAQ,MAAmD,KAAK,KAAK;IAExE,MAAM,qBAAqB,iBAAiB,sBAAsB;IAElE,MAAM,oBAAoB,mBAAkD,sBAAuC;KACjH,MAAM,WAAW,mBAAmB,qBAAqB,EAAE,EAAE,kBAAkB;AAC/E,YAAO;MACL;MACA;MACA,eAAe,OAAO,KAAK,UAAU;MACrC;MACA;MACA,OAAO,4BAA4B;OAAE;OAAW;OAAqB,CAAC;MACtE,UAAU,OAAO,KAAK,SAAS,CAAC,SAAS,IAAI,WAAW;MACzD;;IAIH,MAAM,4BAA4B,mCAAmC;IACrE,MAAM,wBAAwB,qBAAqB,MAAM,MAAM,aAAa,QAAQ;AAEpF,QAAI,6BAA6B,sBAE/B,QAAO,QAAQ,IAAI,CACjB,4BAA4B,0BAA0B,QAAQ,QAAQ,wBAAwB,EAC9F,QAAQ,IAAI,qBAAqB,KAAK,MAAO,aAAa,UAAU,IAAI,QAAQ,QAAQ,EAAE,CAAE,CAAC,CAC9F,CAAC,CAAC,MAAM,CAAC,mBAAmB,uBAAuB,iBAAiB,mBAAmB,kBAAkB,CAAC;AAG7G,WAAO,iBAAiB,yBAAyB,qBAAwC;KACzF;;;;;;;ACzGR,SAAgB,UAAwC,MAAa,OAAe;AAClF,QAAO,GACJ,OAAO,OACT;;;;;ACuBH,MAAM,mCAAmB,IAAI,SAAqC;AAClE,MAAM,0BAA0B,WAA6B;CAC3D,MAAM,iBAAiB,iBAAiB,IAAI,OAAO;AACnD,KAAI,eACF,QAAO;CAGT,MAAME,2BAAqB,IAAI,KAAK;AACpC,kBAAiB,IAAI,QAAQ,SAAS;AACtC,QAAO;;AAGT,MAAa,wBACX,QACA,aACgD;CAChD,MAAM,WAAW,uBAAuB,OAAO;CAC/C,MAAM,SAAS,SAAS,IAAI,SAAS;AACrC,KAAI,OACF,QAAO;CAGT,MAAM,YAAY,0BAA0B,QAAQ,SAAS;AAC7D,UAAS,IAAI,UAAU,UAAiE;AAExF,QAAO;;AAGT,MAAM,6BACJ,QACA,aACgD;CAChD,MAAM,UAAU,OAAO,OAAO;AAC9B,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,QAAQ,SAAS,mCAAmC;CAGtE,MAAM,UAAU,OAAO,QAAQ,QAAQ,OAAO,CAAC,KAAK,CAAC,WAAW,UAA8C;EAC5G,MAAMC,WACJ,WACA,WACG;GACH,MAAM,QAAW,UAAa,UAAW,QAAQ,SAAS,WAAqD,MAAM;AAErH,OAAI,KAAK,SAAS,UAAU;IAE1B,MAAMC,kBACJ,SAEA,KAAK;KACH,QAAQ;KACR,OAAO;KACD;KACN,MAAM,aAAa,EAAE;KACrB,YAAY,QAAQ,cAAc,EAAE;KACpC,QAAQ,YAAY,KAAK,EAAE,GAAG,qBAAqB,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;KACzE,OAAO;KACR,CAA6B;AAEhC,WAAO;;AAGT,OAAI,KAAK,SAAS,SAAS;IAEzB,MAAMA,kBACJ,SAEA,KAAK;KACH,QAAQ;KACR,OAAO;KACD;KACN,MAAM,aAAa,EAAE;KACrB,YAAY,QAAQ,cAAc,EAAE;KACpC,QAAQ;KACR,OAAO,UACL,OACC,SAAS,eAAe;AACvB,UAAI,CAAC,QACH,OAAM,IAAI,MAAM,yCAAyC,aAAa;AAExE,aAAO,YAAY,QAAQ,EAAE,GAAG,qBAAqB,QAAQ,WAAW,EAAE,CAAC,CAAC;OAE/E;KACF,CAA6B;AAEhC,WAAO;;AAGT,OAAI,KAAK,SAAS,YAAY,KAAK,SAAS,UAAU,KAAK,SAAS,WAWlE,QAT8D,KAAK;IACjE,QAAQ;IACR,OAAO;IACP;IACA,MAAM,aAAa,EAAE;IACrB,YAAY,QAAQ,cAAc,EAAE;IACpC,QAAQ;IACR,OAAO;IACR,CAA6B;AAIhC,SAAM,IAAI,MAAM,2BAA2B,OAAuB;;AAGpE,SAAO,CAAC,WAAW,QAAQ;GAC3B;AAIF,QAF4D,OAAO,YAAY,QAAQ;;;;;AC3HzF,MAAa,wCAIX,WACG;AACH,SAA8C,kBAAkC;EAE9E,MAAMC,oBAAsC,OAAO,WAAW;AAC9D,MAAI,sBAAsB,KACxB,OAAM,IAAI,MAAM,kBAAkB,cAAc,iCAAiC;AAGnF,UACE,SAQA,iBACG;AACH,UAAO,gBAAgB,aAMf;IACN,MAAM,EAAE,kBAAkB;IAC1B,MAAM,YAAY,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;IACnF,MAAM,IAAI,cAA6D,UAAU;IAEjF,MAAM,SAAS,YAAY,aAAa;KAAE,GADhC,qBAAqB,QAAQ,kBAAkB;KACZ;KAAG,CAAC,CAAC;IAElD,MAAM,WAAW,cAAc;KAC7B;KACA;KACA;KACA;KACD,CAAC;IACF,MAAM,iBAAiB,QAAQ,WAAW;KAAE;KAAG;KAAU,CAAC;IAE1D,MAAM,oBAAoB,cAA6C;KACrE;KACA;KACA,eAAe,OAAO,KAAK,UAAU;KACrC,sBAAsB;KACtB;KACA;KACD;AAED,QAAI,0BAA0B,QAC5B,QAAO,eAAe,KAAK,iBAAiB;AAG9C,WAAO,iBAAiB,eAAe;KACvC;;;;;;;AC9DR,MAAa,2BAA6D,WAA6B;CAerG,MAAM,uBACJ,aAC4B;AAC5B,UACE,SAGA,SACA,cAEA,MAAM,aAAgH;GACpH,MAAM,iBAAiB,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;AACxF,UAAO;IACL;IACA,WAAW,cAAc;AAGvB,YAAO,YAAY,QAAQ;MAAE,GAFnB,qBAAqB,QAAQ,SAAS;MAEhB,GADtB,qBAAoE,gBAAgB,UAAU;MACrE,CAAC,CAAC;;IAEvC;IACD;IACD;;AAQN,QAAO,UAAU,OAAO,SAAS,GAAG,aAAa,oBAAoB,SAAS,CAAC;;;;;ACnCjF,MAAa,8BACX,WACG;AACH,SAA8C,kBAAkC;EAE9E,MAAMC,oBAAsC,OAAO,WAAW;AAC9D,MAAI,sBAAsB,KACxB,OAAM,IAAI,MAAM,kBAAkB,cAAc,iCAAiC;AAGnF,UAKE,SAIA,cACA,sBAEA,MAAM,aAAqH;GACzH,MAAM,iBAAiB,oBAAqB,QAAQ,aAAa,EAAE,CAAqB;GACxF,MAAM,aAAa,wBAAwB,kBAAkB;GAC7D,MAAM,EAAE,UAAU,mBAAmB;AAErC,UAAO;IACL;IACA,QAAQ,cAAc;KACpB,MAAM,IAAI,qBAAqB,QAAQ,kBAAkB;KACzD,MAAM,IAAI,qBAAqD,gBAAgB,UAAU;KACzF,MAAM,SAAS,YAAY,aAAa;MAAE;MAAG;MAAG,CAAC,CAAC;AAElD,YAAO;MAAE;MAAW,iBAAiB;MAAQ;MAAY,UADxC,iBAAiB,EAAE,GAAG,CAAC;MAC2B;;IAEtE;IACD;;;;;;ACvCR,SAAgB,sBACd,iBACA;AACA,KAAI,OAAO,oBAAoB,SAC7B,OAAM,IAAI,MAAM,+BAA+B,kBAAkB;CAGnE,MAAM,CAAC,MAAM,YAAY,gBAAgB,MAAM,IAAI;AACnD,QAAO;EAAE;EAAM;EAAU;;;;;ACJ3B,MAAa,oBAAsD,WAAoB;CACrF,MAAM,cAAuC,YAAsB;EACjE,MAAM,6BAAwE,SAAgB;AAkB5F,WAME,MACA,WAOA,UAAU,SAAS;IACjB;IACA,GAAG,sBAAsB,KAAK;IAC9B,cAAc,QAAQ,UAAU,EAAE,SAAS,OAAO,SAAS,EAAE,GAAG;IACjE,CAA2F;;AAGhG,SAAO;GACL,QAAQ,0BAA0B,SAAS;GAC3C,MAAM,0BAA0B,OAAO;GACvC,OAAO,0BAA0B,QAAQ;GAEzC,UAKE,UACA,WACA,YACG;IACH,MAAM,aAAa,OAAO,OAAO,WAAW,OAAO,YAAY,UAAU;AAEzE,QAAI,CAAC,WACH,OAAM,IAAI,MAAM,YAAY,QAAQ,sBAAsB,UAAU,WAAW,WAAW;AAI5F,WAAO,EAAE,GAAG,YAAY;;GAE3B;;AASH,QAAO,EAAE,MANI,OAAO,OAAO,YAAY;EACrC,SAAS;EACT,UAAU;EACV,UAAU;EACX,CAAC,EAEa;;;;;ACvEjB,MAAa,4BAKX,QACA,UAAwD,EAAE,KACvD;CACH,MAAM,EAAE,iBAAiB,YAAY;CACrC,MAAM,QAAQ,wBAAiC,OAAO;CACtD,MAAM,sBAAsB,2BAAqD,OAAO;CACxF,MAAM,iCAAiC,uCAAiE,EACtG,iBACD,CAAC;CACF,MAAM,gCAAgC,qCAA+D,OAAO;CAC5G,MAAM,YAAY;EAChB;EACA,OAAO;GACL,OAAO,oBAAoB,QAAQ;GACnC,UAAU,+BAA+B,QAAQ;GACjD,QAAQ,8BAA8B,QAAQ;GAC/C;EACD,UAAU;GACR,OAAO,oBAAoB,WAAW;GACtC,UAAU,+BAA+B,WAAW;GACpD,QAAQ,8BAA8B,WAAW;GAClD;EACD,cAAc;GACZ,OAAO,oBAAoB,eAAe;GAC1C,UAAU,+BAA+B,eAAe;GACxD,QAAQ,8BAA8B,eAAe;GACtD;EACF;CAED,MAAM,SAAS;EACb,GAAG,iBAAiB,OAAO;EAC3B,GAAI,WAAY,EAAE;EACnB;CAED,MAAMC,mBAAwE,mBAC5E,eAAe,WAAW,OAAO;AAEnC,QAAO;;;;;;;;;;;;;;;;;;;;;AC/CT,MAAa,iBAAmC,YAAkB;;;;ACZlE,MAAa,gBACX,WACY;AACZ,KAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,MAAK,OAAO,WAAW,YAAY,OAAO,WAAW,cAAe,WAAW,KAC7E,OAAM,IAAI,MAAM,0CAA0C;AAG5D,SAAO,eAAe,QAAQ,SAAS,EACrC,MAAM;AACJ,SAAM,IAAI,MAAM,kFAAkF;KAErG,CAAC;;AAGJ,QAAO;;;;;ACPT,MAAM,yCAA4E,SAAgB;AAchG,SAME,MACA,YAKC;EACC;EACA,GAAG,sBAAsB,KAAK;EAC9B,cAAc,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,EAAE,GAAG;EAChE;;AAGL,MAAa,kBAAkB;CAC7B,QAAQ,sCAAsC,SAAS;CACvD,MAAM,sCAAsC,OAAO;CACnD,OAAO,sCAAsC,QAAQ;CACtD;AAED,MAAM,0CAA8E,SAAgB;AAQlG,SACE,MACA,YAIC;EACC;EACA,GAAG,sBAAsB,KAAK;EAC9B,WAAW,OAAO,aAAc,EAAE;EACnC;;AAOL,MAAa,mBAAmB;CAC9B,QAAQ,uCAAuC,SAAS;CACxD,MAAM,uCAAuC,OAAO;CACpD,QAAQ,uCAAuC,SAAS;CACxD,OAAO,uCAAuC,QAAQ;CACtD,UAAU,uCAAuC,WAAW;CAC7D;;;;ACtED,MAAa,gBAA6D,SACxE,UACE,MACA,aAAa,EAAE,MAAM,CAAC,CAKvB;AAEH,MAAa,UAAsC,UAAiB;CAClE,OAAwF,WACtF,aAAa;EAAE;EAAM;EAAQ,CAAC;CAKhC,QAAmD,YAChD;EACC;EACA;EACD;CAEH,SAAqD,YAClD;EACC;EACA,QAAQ;GACN,YAAY,iBAAiB,SAAS,GAAG,KAAK,KAAK,EAAE,CAAC;GACtD,GAAG;GACJ;EACF;CAEH,QAAiD,WAC9C;EACC;EACA;EACD;CACJ;AAED,MAAa,wBAAsE,mBACjF"}
@@ -0,0 +1,74 @@
1
+ //#region packages/core/src/metadata/merge.ts
2
+ /**
3
+ * Default merge strategy for combining slice metadata with operation metadata.
4
+ * Performs a shallow merge where operation-level values take precedence.
5
+ *
6
+ * @param operationMetadata - Metadata defined on the operation itself
7
+ * @param sliceMetadataList - Array of metadata from all embedded slices
8
+ * @returns Merged metadata with operation values taking precedence
9
+ */
10
+ const defaultMergeSliceMetadata = (operationMetadata, sliceMetadataList) => {
11
+ const mergedSliceMetadata = sliceMetadataList.reduce((acc, slice) => ({
12
+ headers: {
13
+ ...acc.headers,
14
+ ...slice.headers
15
+ },
16
+ extensions: {
17
+ ...acc.extensions,
18
+ ...slice.extensions
19
+ },
20
+ custom: {
21
+ ...acc.custom,
22
+ ...slice.custom
23
+ }
24
+ }), {
25
+ headers: {},
26
+ extensions: {},
27
+ custom: {}
28
+ });
29
+ return {
30
+ ...operationMetadata,
31
+ headers: {
32
+ ...mergedSliceMetadata.headers,
33
+ ...operationMetadata.headers
34
+ },
35
+ extensions: {
36
+ ...mergedSliceMetadata.extensions,
37
+ ...operationMetadata.extensions
38
+ },
39
+ custom: {
40
+ ...mergedSliceMetadata.custom,
41
+ ...operationMetadata.custom
42
+ }
43
+ };
44
+ };
45
+ /**
46
+ * Merge schema-level default metadata with operation-level metadata.
47
+ * Schema defaults are applied first, then operation metadata overrides.
48
+ *
49
+ * @param defaults - Schema-level default metadata
50
+ * @param operationMetadata - Operation-specific metadata
51
+ * @returns Merged metadata with operation values taking precedence
52
+ */
53
+ const mergeWithDefaults = (defaults, operationMetadata) => {
54
+ return {
55
+ ...defaults,
56
+ ...operationMetadata,
57
+ headers: {
58
+ ...defaults.headers,
59
+ ...operationMetadata.headers
60
+ },
61
+ extensions: {
62
+ ...defaults.extensions,
63
+ ...operationMetadata.extensions
64
+ },
65
+ custom: {
66
+ ...defaults.custom,
67
+ ...operationMetadata.custom
68
+ }
69
+ };
70
+ };
71
+
72
+ //#endregion
73
+ export { mergeWithDefaults as n, defaultMergeSliceMetadata as t };
74
+ //# sourceMappingURL=merge-CeMx09is.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-CeMx09is.js","names":[],"sources":["../src/metadata/merge.ts"],"sourcesContent":["import type { OperationMetadata, SliceMetadata } from \"../types/metadata\";\n\n/**\n * Default merge strategy for combining slice metadata with operation metadata.\n * Performs a shallow merge where operation-level values take precedence.\n *\n * @param operationMetadata - Metadata defined on the operation itself\n * @param sliceMetadataList - Array of metadata from all embedded slices\n * @returns Merged metadata with operation values taking precedence\n */\nexport const defaultMergeSliceMetadata = <TMetadata extends OperationMetadata>(\n operationMetadata: TMetadata,\n sliceMetadataList: readonly SliceMetadata[],\n): TMetadata => {\n // Merge all slice metadata together (later slices override earlier ones)\n const mergedSliceMetadata = sliceMetadataList.reduce<OperationMetadata>(\n (acc, slice) => ({\n headers: { ...acc.headers, ...slice.headers },\n extensions: { ...acc.extensions, ...slice.extensions },\n custom: { ...acc.custom, ...slice.custom },\n }),\n { headers: {}, extensions: {}, custom: {} },\n );\n\n // Operation metadata takes precedence over merged slice metadata\n return {\n ...operationMetadata,\n headers: { ...mergedSliceMetadata.headers, ...operationMetadata.headers },\n extensions: { ...mergedSliceMetadata.extensions, ...operationMetadata.extensions },\n custom: { ...mergedSliceMetadata.custom, ...operationMetadata.custom },\n } as TMetadata;\n};\n\n/**\n * Merge schema-level default metadata with operation-level metadata.\n * Schema defaults are applied first, then operation metadata overrides.\n *\n * @param defaults - Schema-level default metadata\n * @param operationMetadata - Operation-specific metadata\n * @returns Merged metadata with operation values taking precedence\n */\nexport const mergeWithDefaults = <TMetadata extends OperationMetadata>(\n defaults: TMetadata,\n operationMetadata: TMetadata,\n): TMetadata => {\n return {\n ...defaults,\n ...operationMetadata,\n headers: { ...defaults.headers, ...operationMetadata.headers },\n extensions: { ...defaults.extensions, ...operationMetadata.extensions },\n custom: { ...defaults.custom, ...operationMetadata.custom },\n } as TMetadata;\n};\n"],"mappings":";;;;;;;;;AAUA,MAAa,6BACX,mBACA,sBACc;CAEd,MAAM,sBAAsB,kBAAkB,QAC3C,KAAK,WAAW;EACf,SAAS;GAAE,GAAG,IAAI;GAAS,GAAG,MAAM;GAAS;EAC7C,YAAY;GAAE,GAAG,IAAI;GAAY,GAAG,MAAM;GAAY;EACtD,QAAQ;GAAE,GAAG,IAAI;GAAQ,GAAG,MAAM;GAAQ;EAC3C,GACD;EAAE,SAAS,EAAE;EAAE,YAAY,EAAE;EAAE,QAAQ,EAAE;EAAE,CAC5C;AAGD,QAAO;EACL,GAAG;EACH,SAAS;GAAE,GAAG,oBAAoB;GAAS,GAAG,kBAAkB;GAAS;EACzE,YAAY;GAAE,GAAG,oBAAoB;GAAY,GAAG,kBAAkB;GAAY;EAClF,QAAQ;GAAE,GAAG,oBAAoB;GAAQ,GAAG,kBAAkB;GAAQ;EACvE;;;;;;;;;;AAWH,MAAa,qBACX,UACA,sBACc;AACd,QAAO;EACL,GAAG;EACH,GAAG;EACH,SAAS;GAAE,GAAG,SAAS;GAAS,GAAG,kBAAkB;GAAS;EAC9D,YAAY;GAAE,GAAG,SAAS;GAAY,GAAG,kBAAkB;GAAY;EACvE,QAAQ;GAAE,GAAG,SAAS;GAAQ,GAAG,kBAAkB;GAAQ;EAC5D"}
@@ -0,0 +1,85 @@
1
+
2
+ //#region packages/core/src/metadata/merge.ts
3
+ /**
4
+ * Default merge strategy for combining slice metadata with operation metadata.
5
+ * Performs a shallow merge where operation-level values take precedence.
6
+ *
7
+ * @param operationMetadata - Metadata defined on the operation itself
8
+ * @param sliceMetadataList - Array of metadata from all embedded slices
9
+ * @returns Merged metadata with operation values taking precedence
10
+ */
11
+ const defaultMergeSliceMetadata = (operationMetadata, sliceMetadataList) => {
12
+ const mergedSliceMetadata = sliceMetadataList.reduce((acc, slice) => ({
13
+ headers: {
14
+ ...acc.headers,
15
+ ...slice.headers
16
+ },
17
+ extensions: {
18
+ ...acc.extensions,
19
+ ...slice.extensions
20
+ },
21
+ custom: {
22
+ ...acc.custom,
23
+ ...slice.custom
24
+ }
25
+ }), {
26
+ headers: {},
27
+ extensions: {},
28
+ custom: {}
29
+ });
30
+ return {
31
+ ...operationMetadata,
32
+ headers: {
33
+ ...mergedSliceMetadata.headers,
34
+ ...operationMetadata.headers
35
+ },
36
+ extensions: {
37
+ ...mergedSliceMetadata.extensions,
38
+ ...operationMetadata.extensions
39
+ },
40
+ custom: {
41
+ ...mergedSliceMetadata.custom,
42
+ ...operationMetadata.custom
43
+ }
44
+ };
45
+ };
46
+ /**
47
+ * Merge schema-level default metadata with operation-level metadata.
48
+ * Schema defaults are applied first, then operation metadata overrides.
49
+ *
50
+ * @param defaults - Schema-level default metadata
51
+ * @param operationMetadata - Operation-specific metadata
52
+ * @returns Merged metadata with operation values taking precedence
53
+ */
54
+ const mergeWithDefaults = (defaults, operationMetadata) => {
55
+ return {
56
+ ...defaults,
57
+ ...operationMetadata,
58
+ headers: {
59
+ ...defaults.headers,
60
+ ...operationMetadata.headers
61
+ },
62
+ extensions: {
63
+ ...defaults.extensions,
64
+ ...operationMetadata.extensions
65
+ },
66
+ custom: {
67
+ ...defaults.custom,
68
+ ...operationMetadata.custom
69
+ }
70
+ };
71
+ };
72
+
73
+ //#endregion
74
+ Object.defineProperty(exports, 'defaultMergeSliceMetadata', {
75
+ enumerable: true,
76
+ get: function () {
77
+ return defaultMergeSliceMetadata;
78
+ }
79
+ });
80
+ Object.defineProperty(exports, 'mergeWithDefaults', {
81
+ enumerable: true,
82
+ get: function () {
83
+ return mergeWithDefaults;
84
+ }
85
+ });