@ptdgrp/typedgql 1.0.0-beta.14 → 1.0.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -102,21 +102,43 @@ const registerSchemaType = (type) => {
102
102
  //#endregion
103
103
  //#region src/runtime/parameter.ts
104
104
  /**
105
- * @author ChenTao
105
+ * Runtime marker for `ParameterRef`.
106
106
  *
107
- * 1. If object is used by field arguments, don't specify the graphqlTypeName
108
- * 2. If object is used by directive arguments, graphqlTypeName is required
107
+ * We use a unique symbol instead of string keys to avoid accidental collision
108
+ * with user objects passed as argument literals.
109
109
  */
110
110
  const __marker = Symbol("__parameter_ref_marker");
111
111
  var ParameterRef = class ParameterRef {
112
112
  [__marker] = true;
113
- constructor(name, graphqlTypeName) {
113
+ constructor(name, explicitType) {
114
114
  this.name = name;
115
- this.graphqlTypeName = graphqlTypeName;
115
+ this.explicitType = explicitType;
116
116
  if (name.startsWith("$")) throw new Error("parameter name cannot start with '$'");
117
117
  }
118
- static of(name, graphqlTypeName) {
119
- return new ParameterRef(name, graphqlTypeName);
118
+ /**
119
+ * Represents a GraphQL variable reference used in DSL argument objects.
120
+ *
121
+ * Example:
122
+ * - `id: ParameterRef.of("postId")` -> `id: $postId`
123
+ *
124
+ * Main use cases:
125
+ * 1. Rename/bind a field argument to a different variable name.
126
+ * 2. Explicitly annotate variable type when runtime cannot infer it from a
127
+ * field argument position (for example directive args or nested literals).
128
+ *
129
+ * When `explicitType` is NOT needed:
130
+ * - Field arg slot with schema type:
131
+ * `q.user({ id: ParameterRef.of("userId") }, (u) => u.id)`
132
+ * `id` type is inferred from schema (`ID!`).
133
+ *
134
+ * When `explicitType` IS needed:
135
+ * - Directive arg slot:
136
+ * `node.$directive("include", { if: ParameterRef.of("withEmail", "Boolean!") })`
137
+ * - Nested input slot without direct arg type context:
138
+ * `q.search({ filter: { keyword: ParameterRef.of("kw", "String!") } }, ...)`
139
+ */
140
+ static of(name, explicitType) {
141
+ return new ParameterRef(name, explicitType);
120
142
  }
121
143
  };
122
144
 
@@ -412,7 +434,7 @@ var SerializeContext = class SerializeContext {
412
434
  t(name);
413
435
  if (field.argGraphQLTypes) {
414
436
  const meta = sel._enumInputMetadata;
415
- this.acceptArgs(field.args, field.argGraphQLTypes, meta);
437
+ this.acceptArgs(field.args, field.argGraphQLTypes, meta, `field '${runtime.schemaType.name}.${name}'`);
416
438
  }
417
439
  this.acceptDirectives(field.fieldOptionsValue?.directives);
418
440
  }
@@ -454,10 +476,10 @@ var SerializeContext = class SerializeContext {
454
476
  if (!directives) return;
455
477
  for (const [directive, args] of directives) {
456
478
  this.writer.text(`\n@${directive}`);
457
- this.acceptArgs(args);
479
+ this.acceptArgs(args, void 0, void 0, `directive '@${directive}'`);
458
480
  }
459
481
  }
460
- acceptArgs(args, argGraphQLTypeMap, enumInputMetadata) {
482
+ acceptArgs(args, argGraphQLTypeMap, enumInputMetadata, argContext = "argument") {
461
483
  if (!args) return;
462
484
  const t = this.writer.text.bind(this.writer);
463
485
  let hasField;
@@ -479,7 +501,7 @@ var SerializeContext = class SerializeContext {
479
501
  const typeName = argGraphQLTypeMap.get(argName);
480
502
  if (typeName !== void 0) if (arg?.[__marker]) {
481
503
  const ref = arg;
482
- this.registerVariableType(ref, typeName, false, "field argument");
504
+ this.registerVariableType(ref, typeName, false, `${argContext}.${argName}`);
483
505
  t(`${argName}: $${ref.name}`);
484
506
  } else {
485
507
  t(`${argName}: `);
@@ -488,8 +510,8 @@ var SerializeContext = class SerializeContext {
488
510
  else throw new Error(`Unknown argument '${argName}'`);
489
511
  } else if (arg?.[__marker]) {
490
512
  const ref = arg;
491
- if (!ref.graphqlTypeName) throw new Error(`Directive argument '${ref.name}' requires graphqlTypeName`);
492
- this.registerVariableType(ref, ref.graphqlTypeName, false, "directive argument");
513
+ if (!ref.explicitType) throw new Error(`Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`);
514
+ this.registerVariableType(ref, ref.explicitType, false, `${argContext}.${argName}`);
493
515
  t(`${argName}: $${ref.name}`);
494
516
  } else {
495
517
  t(`${argName}: `);
@@ -498,7 +520,7 @@ var SerializeContext = class SerializeContext {
498
520
  }
499
521
  });
500
522
  }
501
- acceptLiteral(value, metaType, graphqlTypeName) {
523
+ acceptLiteral(value, metaType, explicitType) {
502
524
  const t = this.writer.text.bind(this.writer);
503
525
  if (value == null) {
504
526
  t("null");
@@ -518,8 +540,8 @@ var SerializeContext = class SerializeContext {
518
540
  }
519
541
  if (value?.[__marker]) {
520
542
  const ref = value;
521
- if (!graphqlTypeName && !ref.graphqlTypeName) throw new Error(`Argument '${ref.name}' nested type cannot be inferred; provide graphqlTypeName`);
522
- this.registerVariableType(ref, graphqlTypeName, true, "nested argument");
543
+ if (!explicitType && !ref.explicitType) throw new Error(`Cannot infer the nested type of argument '${ref.name}'; an explicit type annotation is required.`);
544
+ this.registerVariableType(ref, explicitType, true, "nested argument");
523
545
  t(`$${ref.name}`);
524
546
  return;
525
547
  }
@@ -528,7 +550,7 @@ var SerializeContext = class SerializeContext {
528
550
  return;
529
551
  }
530
552
  if (Array.isArray(value) || value instanceof Set) {
531
- const elementGraphQLTypeName = SerializeContext.elementTypeName(graphqlTypeName);
553
+ const elementGraphQLTypeName = SerializeContext.elementTypeName(explicitType);
532
554
  this.writer.scope({ type: "array" }, () => {
533
555
  for (const e of value) {
534
556
  this.writer.separator(", ");
@@ -553,12 +575,15 @@ var SerializeContext = class SerializeContext {
553
575
  });
554
576
  }
555
577
  registerVariableType(ref, expectedTypeName, allowImplicitFromRef = false, context = "argument") {
556
- const typeName = expectedTypeName ?? (allowImplicitFromRef ? ref.graphqlTypeName : void 0);
557
- if (!typeName) throw new Error(`Directive argument '${ref.name}' requires graphqlTypeName`);
558
- if (ref.graphqlTypeName && ref.graphqlTypeName !== typeName) throw new Error(`Argument '${ref.name}' type conflict: '${typeName}' vs ParameterRef '${ref.graphqlTypeName}' (${context})`);
578
+ const typeName = expectedTypeName ?? (allowImplicitFromRef ? ref.explicitType : void 0);
579
+ if (!typeName) throw new Error(`Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`);
580
+ if (ref.explicitType && ref.explicitType !== typeName) throw new Error(`Variable '$${ref.name}' has conflicting GraphQL types at ${context}: inferred '${typeName}', but ParameterRef declares '${ref.explicitType}'`);
559
581
  const existing = this.variableTypeMap.get(ref.name);
560
- if (existing && existing !== typeName) throw new Error(`Argument '${ref.name}' type conflict: '${existing}' vs '${typeName}' (${context})`);
561
- this.variableTypeMap.set(ref.name, typeName);
582
+ if (existing && existing.typeName !== typeName) throw new Error(`Variable '$${ref.name}' has conflicting GraphQL types: first '${existing.typeName}' at ${existing.source}, then '${typeName}' at ${context}`);
583
+ this.variableTypeMap.set(ref.name, {
584
+ typeName,
585
+ source: context
586
+ });
562
587
  }
563
588
  static enumMetaType(meta, typeName) {
564
589
  if (!meta || !typeName) return void 0;
@@ -718,13 +743,15 @@ const createChildSelectionProxy = (schemaType, enumInputMetadata) => {
718
743
  void 0
719
744
  ], false, ""), proxyHandler(schemaType));
720
745
  };
721
- const buildRequiredArgs = (argTypeMap) => {
722
- if (!argTypeMap.size) return void 0;
723
- const requiredArgNames = Array.from(argTypeMap.entries()).filter(([, type]) => type.endsWith("!")).map(([name]) => name);
724
- if (!requiredArgNames.length) return void 0;
725
- const args = {};
726
- for (const name of requiredArgNames) args[name] = ParameterRef.of(name);
727
- return args;
746
+ const resolveAutoPropagatedArgs = (declaredArgTypeMap, providedArgs) => {
747
+ if (!declaredArgTypeMap?.size) return providedArgs;
748
+ const autoArgs = {};
749
+ for (const argName of declaredArgTypeMap.keys()) autoArgs[argName] = ParameterRef.of(argName);
750
+ if (!providedArgs) return autoArgs;
751
+ return {
752
+ ...autoArgs,
753
+ ...providedArgs
754
+ };
728
755
  };
729
756
  const resolveAssociationTarget = (fieldName, fieldTargetTypeName, ownerTypeName) => {
730
757
  if (!fieldTargetTypeName) throw new Error(`Field "${fieldName}" has no target type`);
@@ -791,8 +818,8 @@ const proxyHandler = (schemaType) => {
791
818
  let { args, childSelectionFactory, childSelection } = parseAssociationArgs(argArray);
792
819
  if (childSelectionFactory) childSelection = childSelectionFactory(createChildSelectionProxy(targetSchemaType, target._enumInputMetadata));
793
820
  if (!childSelection) throw new Error(`Field "${p}" requires a child selection`);
794
- if (!args) args = buildRequiredArgs(field.argGraphQLTypeMap);
795
- return new Proxy(target.addField(p, args, childSelection), handler);
821
+ const resolvedArgs = resolveAutoPropagatedArgs(field.argGraphQLTypeMap, args);
822
+ return new Proxy(target.addField(p, resolvedArgs, childSelection), handler);
796
823
  };
797
824
  if (field.isFunction) return new Proxy(DUMMY, methodHandler(target, handler, p));
798
825
  return new Proxy(target.addField(p), handler);
@@ -860,11 +887,9 @@ const methodHandler = (targetSelection, handler, field) => {
860
887
  return new Proxy(current, handler);
861
888
  }
862
889
  let { args, child, optionsValue } = parseMethodArgs(argArray);
863
- if (!args) {
864
- const argMap = targetSelection.schemaType.ownFields.get(field)?.argGraphQLTypeMap;
865
- args = argMap ? buildRequiredArgs(argMap) : void 0;
866
- }
867
- return new Proxy(targetSelection.addField(field, args, child, optionsValue), handler);
890
+ const declaredArgTypeMap = targetSelection.schemaType.fields.get(field)?.argGraphQLTypeMap;
891
+ const resolvedArgs = resolveAutoPropagatedArgs(declaredArgTypeMap, args);
892
+ return new Proxy(targetSelection.addField(field, resolvedArgs, child, optionsValue), handler);
868
893
  } };
869
894
  };
870
895
  const DUMMY = () => {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/runtime/types.ts","../src/runtime/schema.ts","../src/runtime/parameter.ts","../src/runtime/text-builder.ts","../src/runtime/selection.ts","../src/runtime/field-options.ts","../src/runtime/enum-metadata.ts","../src/runtime/proxy.ts","../src/runtime/cyrb53.ts"],"sourcesContent":["import type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport type { ParameterRef } from \"./parameter\";\n\nexport const __phantom: unique symbol = Symbol(\"__phantom\");\nexport const __runtime: unique symbol = Symbol(\"__selection_runtime\");\n\n// ─── Core Selection Interface ──────────────────────────────────────────\n\nexport interface Selection<\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n toString(): string;\n toFragmentString(): string;\n toJSON(): string;\n\n readonly [__phantom]: readonly [E, T, TVariables];\n}\n\nexport interface SelectionRuntime<E extends string = string> {\n readonly schemaType: SchemaType<E>;\n readonly operationName?: string;\n readonly fieldMap: ReadonlyMap<string, FieldSelection>;\n readonly directiveMap: ReadonlyMap<string, DirectiveArgs>;\n readonly variableTypeMap: ReadonlyMap<string, string>;\n\n findField(fieldKey: string): FieldSelection | undefined;\n findFieldsByName(fieldName: string): readonly FieldSelection[];\n findFieldByName(fieldName: string): FieldSelection | undefined;\n}\n\nexport type ExecutableSelection<\n E extends string,\n T extends object,\n TVariables extends object,\n> = Selection<E, T, TVariables> & {\n readonly [__runtime]: SelectionRuntime<E>;\n};\n\nexport function runtimeOf<\n E extends string,\n T extends object,\n TVariables extends object,\n>(selection: Selection<E, T, TVariables>): SelectionRuntime<E> {\n return (selection as ExecutableSelection<E, T, TVariables>)[__runtime];\n}\n\n// ─── Utility Types ────────────────────────────────────────────────────\n\nexport type ShapeOf<F> =\n F extends Selection<string, infer M, object> ? M : never;\n\nexport type VariablesOf<T> =\n T extends Selection<string, object, infer TVariables> ? TVariables : never;\n\nexport type Expand<T> =\n T extends ReadonlyArray<infer U>\n ? ReadonlyArray<Expand<U>>\n : T extends Array<infer U>\n ? Array<Expand<U>>\n : T extends object\n ? { [K in keyof T]: Expand<T[K]> }\n : T;\n\nexport type ValueOrThunk<T> = T | (() => T);\nexport interface FieldSelection {\n readonly name: string;\n readonly argGraphQLTypes?: ReadonlyMap<string, string>;\n readonly args?: object;\n readonly fieldOptionsValue?: FieldOptionsValue;\n readonly plural: boolean;\n readonly childSelections?: ReadonlyArray<\n ExecutableSelection<string, object, object>\n >;\n}\n\n// ─── Directives & Fragments ──────────────────────────────────────────\n\nexport type DirectiveArgs =\n | { readonly [key: string]: ParameterRef<string> | StringValue | any }\n | undefined;\n\nexport class StringValue {\n constructor(\n readonly value: any,\n readonly quotationMarks: boolean = true,\n ) {}\n}\n\nexport const __fragment_spread = Symbol(\"__fragment_spread\");\n\nexport abstract class FragmentSpread<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n readonly [__fragment_spread] = true;\n\n protected constructor(\n readonly name: TFragmentName,\n readonly selection: ExecutableSelection<E, T, TVariables>,\n ) {}\n}\n\nexport class FragmentRef<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> extends FragmentSpread<TFragmentName, E, T, TVariables> {\n constructor(\n name: TFragmentName,\n selection: ExecutableSelection<E, T, TVariables>,\n ) {\n super(name, selection);\n }\n}\n","// ─── Type Categories ──────────────────────────────────────────────────\n\n/**\n * Runtime-level classification for GraphQL composite types.\n *\n * - OBJECT:\n * Represents identity-bearing types (typically with an id-like field) that are\n * treated as independently addressable nodes in selection/proxy logic.\n * - EMBEDDED:\n * Represents value-like types without independent identity; they are selected\n * as nested structures and are not treated as standalone entity nodes.\n */\nexport type SchemaTypeCategory = \"OBJECT\" | \"EMBEDDED\";\n\n/**\n * Runtime-level classification for fields in a schema type.\n *\n * - ID:\n * Identity field of an OBJECT-like node (used for entity identity semantics).\n * - SCALAR:\n * Leaf/value field with no nested selection.\n * - REFERENCE:\n * Single-valued association to another composite type (requires child selection).\n * - LIST:\n * Multi-valued association to another composite type (requires child selection).\n */\nexport type SchemaFieldCategory = \"ID\" | \"SCALAR\" | \"REFERENCE\" | \"LIST\";\n\n// ─── Schema Type & Field (plain readonly interfaces) ─────────────────\n\n/**\n * Normalized runtime representation of one GraphQL composite type.\n */\nexport interface SchemaType<E extends string = string> {\n /** GraphQL type name. */\n readonly name: E;\n /** Coarse runtime category used by selection/proxy behavior. */\n readonly category: SchemaTypeCategory;\n /** Directly implemented interfaces / declared super types. */\n readonly interfaces: readonly SchemaType[];\n /** Fields declared on this type itself (excluding inherited fields). */\n readonly ownFields: ReadonlyMap<string, SchemaField>;\n /** Effective fields (own fields plus inherited/interface fields). */\n readonly fields: ReadonlyMap<string, SchemaField>;\n}\n\n/**\n * Normalized runtime representation of one field on a schema type.\n */\nexport interface SchemaField {\n /** Field name as exposed by GraphQL. */\n readonly name: string;\n /** Coarse runtime field category. */\n readonly category: SchemaFieldCategory;\n /** GraphQL argument type map keyed by argument name (SDL form, e.g. `ID!`). */\n readonly argGraphQLTypeMap: ReadonlyMap<string, string>;\n /** Target GraphQL type name when this field points to another composite type. */\n readonly targetTypeName?: string;\n /** Whether this field is multi-valued. */\n readonly isPlural: boolean;\n /** Whether this field is an association/reference field. */\n readonly isAssociation: boolean;\n /** Whether runtime treats this field as function-like (args or association). */\n readonly isFunction: boolean;\n /** Whether this field may be omitted in generated runtime builders. */\n readonly isUndefinable: boolean;\n}\n\nconst SCHEMA_TYPE_REGISTRY = new Map<string, SchemaType>();\nconst SCHEMA_TYPE_FACTORY_REGISTRY = new Map<string, () => SchemaType>();\nconst SCHEMA_TYPE_RESOLVING = new Set<string>();\n\nexport const resolveRegisteredSchemaType = (\n typeName: string,\n): SchemaType | undefined => {\n const registered = SCHEMA_TYPE_REGISTRY.get(typeName);\n if (registered) {\n return registered;\n }\n\n const factory = SCHEMA_TYPE_FACTORY_REGISTRY.get(typeName);\n if (!factory) {\n return undefined;\n }\n if (SCHEMA_TYPE_RESOLVING.has(typeName)) {\n throw new Error(\n `Circular schema factory resolution detected for \"${typeName}\"`,\n );\n }\n\n SCHEMA_TYPE_RESOLVING.add(typeName);\n try {\n const created = factory();\n registerSchemaType(created);\n } finally {\n SCHEMA_TYPE_RESOLVING.delete(typeName);\n }\n\n return SCHEMA_TYPE_REGISTRY.get(typeName);\n};\n\nexport const registerSchemaTypeFactory = (\n typeName: string,\n factory: () => SchemaType,\n) => {\n if (!SCHEMA_TYPE_FACTORY_REGISTRY.has(typeName)) {\n SCHEMA_TYPE_FACTORY_REGISTRY.set(typeName, factory);\n }\n};\n\n// ─── Field Descriptor (input to factory) ──────────────────────────────\n\ntype FieldDescriptor =\n | string\n | {\n readonly name: string;\n readonly category: SchemaFieldCategory;\n readonly undefinable?: boolean;\n readonly argGraphQLTypeMap?: { readonly [key: string]: string };\n readonly targetTypeName?: string;\n };\n\n// ─── Factory ────────────────────────────────────────────────────────\n\nexport const createSchemaType = <E extends string>(\n name: E,\n category: SchemaTypeCategory,\n superTypes: readonly SchemaType[],\n declaredFields: readonly FieldDescriptor[],\n): SchemaType<E> => {\n const declaredFieldMap = new Map<string, SchemaField>();\n\n for (const desc of declaredFields) {\n if (typeof desc === \"string\") {\n declaredFieldMap.set(desc, buildField(desc, \"SCALAR\", new Map()));\n } else {\n const argMap = new Map<string, string>();\n if (desc.argGraphQLTypeMap) {\n for (const k in desc.argGraphQLTypeMap) {\n argMap.set(k, desc.argGraphQLTypeMap[k]!);\n }\n }\n declaredFieldMap.set(\n desc.name,\n buildField(\n desc.name,\n desc.category,\n argMap,\n desc.targetTypeName,\n desc.undefinable,\n ),\n );\n }\n }\n\n // Lazily compute merged fields (own + inherited)\n let _fields: ReadonlyMap<string, SchemaField> | undefined;\n\n const result: SchemaType<E> = {\n name,\n category,\n interfaces: superTypes,\n ownFields: declaredFieldMap,\n get fields(): ReadonlyMap<string, SchemaField> {\n if (!_fields) {\n _fields =\n superTypes.length === 0 ? declaredFieldMap : collectFields(result);\n }\n return _fields;\n },\n };\n\n registerSchemaType(result);\n return result;\n};\n\n// ─── Internal helpers ─────────────────────────────────────────────────\n\nconst buildField = (\n name: string,\n category: SchemaFieldCategory,\n argGraphQLTypeMap: ReadonlyMap<string, string>,\n targetTypeName?: string,\n undefinable?: boolean,\n): SchemaField => {\n const isPlural = category === \"LIST\";\n const isAssociation = category === \"REFERENCE\" || isPlural;\n\n return {\n name,\n category,\n argGraphQLTypeMap,\n targetTypeName,\n isPlural,\n isAssociation,\n isFunction:\n argGraphQLTypeMap.size !== 0 ||\n isAssociation ||\n targetTypeName !== undefined,\n isUndefinable: undefinable ?? false,\n };\n};\n\nconst collectFields = (type: SchemaType): ReadonlyMap<string, SchemaField> => {\n const result = new Map<string, SchemaField>();\n _collect(type, result);\n return result;\n};\n\nconst _collect = (type: SchemaType, out: Map<string, SchemaField>) => {\n for (const [name, field] of type.ownFields) {\n out.set(name, field);\n }\n for (const superType of type.interfaces) {\n _collect(superType, out);\n }\n};\n\nconst registerSchemaType = (type: SchemaType) => {\n const existing = SCHEMA_TYPE_REGISTRY.get(type.name);\n if (!existing) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n return;\n }\n\n if (existing.ownFields.size < type.ownFields.size) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n }\n};\n","/**\n * @author ChenTao\n *\n * 1. If object is used by field arguments, don't specify the graphqlTypeName\n * 2. If object is used by directive arguments, graphqlTypeName is required\n */\nexport const __marker: unique symbol = Symbol(\"__parameter_ref_marker\");\n\nexport class ParameterRef<TName extends string> {\n readonly [__marker] = true;\n\n private constructor(\n readonly name: TName,\n readonly graphqlTypeName?: string,\n ) {\n if (name.startsWith(\"$\")) {\n throw new Error(\"parameter name cannot start with '$'\");\n }\n }\n\n static of<TName extends string>(\n name: TName,\n graphqlTypeName?: string,\n ): ParameterRef<TName> {\n return new ParameterRef<TName>(name, graphqlTypeName);\n }\n}\n\nexport type AcceptableVariables<T extends object> = {\n [K in keyof T]: T[K] | ParameterRef<string>;\n};\n\nexport type UnresolvedVariables<T, TVariables> = ReversedType<\n UnresolvedNames<UnresolvedRefs<T>>,\n TVariables\n>;\n\ntype UnresolvedRefs<TVariables> = Pick<\n TVariables,\n {\n [K in keyof TVariables]: TVariables[K] extends ParameterRef<string>\n ? K\n : never;\n }[keyof TVariables]\n>;\n\ntype UnresolvedNames<TUnresolvedVariableRefs> = {\n [K in keyof TUnresolvedVariableRefs]: ParameterRefName<\n TUnresolvedVariableRefs[K]\n >;\n};\n\ntype ReversedType<T extends Record<keyof T, keyof any>, TStandard> = {\n [P in T[keyof T]]: {\n [K in keyof T]: T[K] extends P\n ? K extends keyof TStandard\n ? TStandard[K]\n : never\n : never;\n }[keyof T];\n};\n\ntype ParameterRefName<T> =\n T extends ParameterRef<infer TRefName> ? TRefName : never;\n","export type ScopeType = \"block\" | \"arguments\" | \"array\";\n\nexport interface ScopeOptions {\n readonly type: ScopeType;\n readonly multiLines?: boolean;\n readonly separator?: string;\n readonly prefix?: string;\n readonly suffix?: string;\n}\n\nconst SCOPE_BRACKETS: Record<ScopeType, [open: string, close: string]> = {\n block: [\"{\", \"}\"],\n arguments: [\"(\", \")\"],\n array: [\"[\", \"]\"],\n};\n\nconst DEFAULT_SEPARATORS: Partial<Record<ScopeType, string>> = {\n arguments: \", \",\n array: \", \",\n};\n\ninterface ScopeState {\n readonly type: ScopeType;\n readonly multiLines: boolean;\n readonly separator: string | undefined;\n dirty: boolean;\n}\n\nexport class TextBuilder {\n private result = \"\";\n private atNewLine = false;\n private readonly scopes: ScopeState[] = [];\n\n constructor(private readonly indent: string = \"\\t\") {}\n\n text(value: string): this {\n const scope = this.scopes.at(-1);\n if (value && scope && !scope.dirty) {\n if (scope.multiLines) this.lineBreak();\n scope.dirty = true;\n }\n let remaining = value;\n while (remaining) {\n this.flushIndent();\n const newlineIdx = remaining.indexOf(\"\\n\");\n if (newlineIdx !== -1) {\n this.result += remaining.substring(0, newlineIdx);\n this.lineBreak();\n remaining = remaining.substring(newlineIdx + 1);\n } else {\n this.result += remaining;\n remaining = \"\";\n }\n }\n return this;\n }\n\n scope(options: ScopeOptions, action: () => void): this {\n const { type, multiLines = false, separator, prefix, suffix } = options;\n const [open, close] = SCOPE_BRACKETS[type];\n\n if (prefix) this.text(prefix);\n this.text(open);\n\n this.scopes.push({\n type,\n multiLines,\n separator: separator ?? DEFAULT_SEPARATORS[type],\n dirty: false,\n });\n\n try {\n action();\n } finally {\n this.scopes.pop();\n if (multiLines && !this.atNewLine) this.lineBreak();\n this.text(close);\n if (suffix) this.text(suffix);\n }\n\n return this;\n }\n\n separator(value?: string): this {\n const scope = this.scopes.at(-1);\n if (!scope) throw new Error(\"No existing scope\");\n if (scope.dirty) {\n const sep = value || scope.separator;\n if (sep) this.text(sep);\n if (scope.multiLines) this.lineBreak();\n }\n return this;\n }\n\n toString(): string {\n return this.result;\n }\n\n private flushIndent(): void {\n if (this.atNewLine) {\n this.result += this.indent.repeat(this.scopes.length);\n this.atNewLine = false;\n }\n }\n\n private lineBreak(): void {\n this.result += \"\\n\";\n this.atNewLine = true;\n }\n}\n","import type { EnumInputMetadata, EnumInputMetaType } from \"./enum-metadata\";\nimport type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport { __phantom, __runtime, runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n SelectionRuntime,\n FieldSelection,\n DirectiveArgs,\n} from \"./types\";\nimport { StringValue } from \"./types\";\nimport { ParameterRef, __marker } from \"./parameter\";\nimport { TextBuilder } from \"./text-builder\";\n\n// ─── SelectionImpl ─────────────────────────────────────────────────────\n// Immutable linked-list node. Each field/directive operation returns a new\n// node pointing back to its predecessor via `prev`. The linked list is\n// walked lazily to build `fieldMap` / `directiveMap` / query text.\n\nexport class SelectionImpl<\n E extends string,\n T extends object,\n TVariables extends object,\n> implements Selection<E, T, TVariables> {\n declare readonly [__phantom]: readonly [E, T, TVariables];\n readonly [__runtime]: SelectionRuntime<E> = this;\n\n private _fieldMap?: ReadonlyMap<string, FieldSelection>;\n private _directiveMap?: ReadonlyMap<string, DirectiveArgs>;\n private _result?: SerializedResult;\n\n constructor(\n private readonly _ctx:\n | SelectionImpl<string, object, object>\n | readonly [SchemaType<E>, EnumInputMetadata, string[] | undefined],\n private readonly _negative: boolean,\n private readonly _field: string,\n private readonly _args?: { [key: string]: any },\n private readonly _child?: SelectionImpl<string, object, object>,\n private readonly _fieldOptionsValue?: FieldOptionsValue,\n private readonly _directive?: string,\n private readonly _directiveArgs?: DirectiveArgs,\n private readonly _operationName?: string,\n ) {}\n\n // ── Last field accessor (for $alias) ──\n\n get lastField(): string {\n return this._field;\n }\n\n // ── Schema metadata ──\n\n private get _schemaType(): SchemaType<E> {\n return Array.isArray(this._ctx)\n ? (this._ctx[0] as SchemaType<E>)\n : ((this._ctx as SelectionImpl<string, object, object>)\n ._schemaType as SchemaType<E>);\n }\n\n private get _enumInputMetadata(): EnumInputMetadata {\n return Array.isArray(this._ctx)\n ? (this._ctx[1] as EnumInputMetadata)\n : (this._ctx as SelectionImpl<string, object, object>)._enumInputMetadata;\n }\n\n private get _unionItemTypes(): string[] | undefined {\n return Array.isArray(this._ctx)\n ? this._ctx.length > 2 && this._ctx[2]?.length\n ? this._ctx[2]\n : undefined\n : (this._ctx as SelectionImpl<string, object, object>)._unionItemTypes;\n }\n\n private get _prev(): SelectionImpl<string, object, object> | undefined {\n return Array.isArray(this._ctx)\n ? undefined\n : (this._ctx as SelectionImpl<string, object, object>);\n }\n\n get schemaType(): SchemaType<E> {\n return this._schemaType;\n }\n\n get operationName(): string | undefined {\n if (this._operationName !== undefined) {\n return this._operationName;\n }\n return this._prev?.operationName;\n }\n\n // ── Builders (return new immutable nodes) ──\n\n addField<F extends SelectionImpl<string, object, object>>(\n field: string,\n args?: { [key: string]: any },\n child?: SelectionImpl<string, object, object>,\n optionsValue?: FieldOptionsValue,\n ): F {\n return new SelectionImpl(\n this,\n false,\n field,\n args,\n child,\n optionsValue,\n ) as unknown as F;\n }\n\n removeField<F extends SelectionImpl<string, object, object>>(\n field: string,\n ): F {\n if (field === \"__typename\") throw new Error(\"__typename cannot be removed\");\n return new SelectionImpl(this, true, field) as unknown as F;\n }\n\n addEmbeddable<F extends SelectionImpl<string, object, object>>(\n child: SelectionImpl<string, object, object>,\n fragmentName?: string,\n ): F {\n let fieldName: string;\n if (fragmentName !== undefined) {\n if (fragmentName.length === 0)\n throw new Error(\"fragmentName cannot be ''\");\n if (fragmentName.startsWith(\"on \"))\n throw new Error(\"fragmentName cannot start with 'on '\");\n fieldName = `... ${fragmentName}`;\n } else if (\n child._schemaType.name === this._schemaType.name ||\n child._unionItemTypes !== undefined\n ) {\n fieldName = \"...\";\n } else {\n fieldName = `... on ${child._schemaType.name}`;\n }\n return new SelectionImpl(\n this,\n false,\n fieldName,\n undefined,\n child,\n ) as unknown as F;\n }\n\n addDirective<F extends SelectionImpl<string, object, object>>(\n directive: string,\n directiveArgs?: DirectiveArgs,\n ): F {\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n directive,\n directiveArgs,\n ) as unknown as F;\n }\n\n withOperationName<F extends SelectionImpl<string, object, object>>(\n operationName?: string,\n ): F {\n if (operationName === undefined) {\n return this as unknown as F;\n }\n if (operationName.trim().length === 0) {\n throw new Error(\"operationName cannot be empty\");\n }\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n operationName,\n ) as unknown as F;\n }\n\n // ── Computed maps (lazy, cached) ──\n\n get fieldMap(): ReadonlyMap<string, FieldSelection> {\n return (this._fieldMap ??= this._buildFieldMap());\n }\n\n get directiveMap(): ReadonlyMap<string, DirectiveArgs> {\n return (this._directiveMap ??= this._buildDirectiveMap());\n }\n\n get variableTypeMap(): ReadonlyMap<string, string> {\n return this._serialize().variableTypeMap;\n }\n\n // ── Lookup helpers ──\n\n findField(fieldKey: string): FieldSelection | undefined {\n const field = this.fieldMap.get(fieldKey);\n if (field) return field;\n for (const [, f] of this.fieldMap) {\n if (f.name.startsWith(\"...\") && f.childSelections) {\n for (const child of f.childSelections) {\n const deeper = runtimeOf(child).findField(fieldKey);\n if (deeper) return deeper;\n }\n }\n }\n return undefined;\n }\n\n findFieldsByName(fieldName: string): readonly FieldSelection[] {\n const out: FieldSelection[] = [];\n this._collectFieldsByName(fieldName, out);\n return out;\n }\n\n findFieldByName(fieldName: string): FieldSelection | undefined {\n const fields = this.findFieldsByName(fieldName);\n if (fields.length > 1) {\n throw new Error(\n `Too many fields named \"${fieldName}\" in selection of type \"${this._schemaType.name}\"`,\n );\n }\n return fields[0];\n }\n\n // ── Serialization ──\n\n toString(): string {\n return this._serialize().text;\n }\n\n toFragmentString(): string {\n return this._serialize().fragmentText;\n }\n\n toJSON(): string {\n return JSON.stringify(this._serialize());\n }\n\n // ═══════════════════════════════════════════════════════════════════\n // Private implementation\n // ═══════════════════════════════════════════════════════════════════\n\n private _buildFieldMap(): ReadonlyMap<string, FieldSelection> {\n // Collect all nodes in chain order\n const nodes: SelectionImpl<string, object, object>[] = [];\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._field !== \"\") nodes.push(n);\n }\n\n const map = new Map<string, FieldSelection>();\n // Process oldest → newest so later operations can override earlier ones\n // (for example alias rewrites and field removals).\n for (let i = nodes.length - 1; i >= 0; --i) {\n const n = nodes[i]!;\n const key = n._fieldOptionsValue?.alias ?? n._field;\n\n if (n._field.startsWith(\"...\")) {\n let children = map.get(key)?.childSelections as\n | SelectionImpl<string, object, object>[]\n | undefined;\n if (!children) {\n children = [];\n map.set(key, {\n name: n._field,\n plural: false,\n childSelections: children,\n });\n }\n children.push(n._child!);\n } else if (n._negative) {\n map.delete(key);\n } else {\n map.set(key, {\n name: n._field,\n argGraphQLTypes: n._schemaType.fields.get(n._field)\n ?.argGraphQLTypeMap,\n args: n._args,\n fieldOptionsValue: n._fieldOptionsValue,\n plural: n._schemaType.fields.get(n._field)?.isPlural ?? false,\n childSelections: n._child ? [n._child] : undefined,\n });\n }\n }\n return map;\n }\n\n private _buildDirectiveMap(): ReadonlyMap<string, DirectiveArgs> {\n const map = new Map<string, DirectiveArgs>();\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._directive !== undefined && !map.has(n._directive)) {\n map.set(n._directive, n._directiveArgs);\n }\n }\n return map;\n }\n\n private _collectFieldsByName(fieldName: string, out: FieldSelection[]) {\n for (const field of this.fieldMap.values()) {\n if (field.name === fieldName) {\n out.push(field);\n } else if (field.name.startsWith(\"...\") && field.childSelections) {\n for (const child of field.childSelections) {\n out.push(...runtimeOf(child).findFieldsByName(fieldName));\n }\n }\n }\n }\n\n // ── Query serialization ─────────────────────────────────────────\n\n private _serialize(): SerializedResult {\n return (this._result ??= serialize(this));\n }\n}\n\nexport const withOperationName = <S extends Selection<string, object, object>>(\n selection: S,\n operationName?: string,\n): S =>\n (\n selection as unknown as SelectionImpl<string, object, object>\n ).withOperationName(operationName) as unknown as S;\n\n// ═══════════════════════════════════════════════════════════════════════\n// Serialization (extracted from old ResultContext)\n// ═══════════════════════════════════════════════════════════════════════\n\ninterface SerializedResult {\n readonly text: string;\n readonly fragmentText: string;\n readonly variableTypeMap: ReadonlyMap<string, string>;\n}\n\nconst serialize = (\n root: SelectionImpl<string, object, object>,\n): SerializedResult => {\n const writer = new TextBuilder();\n const fragmentWriter = new TextBuilder();\n let ctx = new SerializeContext(writer);\n\n ctx.acceptDirectives(root.directiveMap);\n writer.scope({ type: \"block\", multiLines: true, suffix: \"\\n\" }, () => {\n ctx.acceptSelection(root);\n });\n\n const renderedFragments = new Set<string>();\n while (true) {\n const fragmentMap = ctx.namedFragmentMap;\n if (fragmentMap.size === 0) break;\n ctx = new SerializeContext(fragmentWriter, ctx);\n for (const [name, fragment] of fragmentMap) {\n if (renderedFragments.add(name)) {\n const runtime = runtimeOf(fragment);\n fragmentWriter.text(`fragment ${name} on ${runtime.schemaType.name} `);\n ctx.acceptDirectives(runtime.directiveMap);\n fragmentWriter.scope(\n { type: \"block\", multiLines: true, suffix: \"\\n\" },\n () => {\n ctx.acceptSelection(fragment);\n },\n );\n }\n }\n }\n\n return {\n text: writer.toString(),\n fragmentText: fragmentWriter.toString(),\n variableTypeMap: ctx.variableTypeMap,\n };\n};\n\nclass SerializeContext {\n readonly namedFragmentMap = new Map<\n string,\n ExecutableSelection<string, object, object>\n >();\n private readonly fragmentNameCounter = new Map<string, number>();\n private readonly fragmentRuntimeNameMap = new WeakMap<\n ExecutableSelection<string, object, object>,\n Map<string, string>\n >();\n readonly variableTypeMap: Map<string, string>;\n\n constructor(\n private readonly writer: TextBuilder,\n prev?: SerializeContext,\n ) {\n this.variableTypeMap = prev?.variableTypeMap ?? new Map();\n }\n\n acceptSelection(sel: Selection<string, object, object>) {\n const t = this.writer.text.bind(this.writer);\n const runtime = runtimeOf(sel);\n for (const field of runtime.fieldMap.values()) {\n const name = field.name;\n const children = field.childSelections;\n const isNamedSpread =\n name.startsWith(\"... \") && !name.startsWith(\"... on \");\n\n if (isNamedSpread && children?.length) {\n const baseName = name.substring(\"...\".length).trim();\n for (const c of children) {\n const runtimeName = this.resolveFragmentRuntimeName(baseName, c);\n t(`... ${runtimeName}\\n`);\n }\n continue;\n }\n\n if (name !== \"...\") {\n const alias = field.fieldOptionsValue?.alias;\n if (alias && alias !== name) t(`${alias}: `);\n t(name);\n if (field.argGraphQLTypes) {\n const meta = (sel as any)._enumInputMetadata as EnumInputMetadata;\n this.acceptArgs(field.args, field.argGraphQLTypes, meta);\n }\n this.acceptDirectives(field.fieldOptionsValue?.directives);\n }\n if (children?.length) {\n if (name === \"...\") {\n // Inline spread: flatten children directly into current selection.\n for (const c of children) this.acceptSelection(c);\n } else {\n t(\" \");\n this.writer.scope({ type: \"block\", multiLines: true }, () => {\n for (const c of children) this.acceptSelection(c);\n });\n }\n }\n t(\"\\n\");\n }\n }\n\n private resolveFragmentRuntimeName(\n baseName: string,\n selection: ExecutableSelection<string, object, object>,\n ): string {\n const existingByName = this.namedFragmentMap.get(baseName);\n if (existingByName === selection) {\n return baseName;\n }\n\n let byBaseName = this.fragmentRuntimeNameMap.get(selection);\n if (!byBaseName) {\n byBaseName = new Map<string, string>();\n this.fragmentRuntimeNameMap.set(selection, byBaseName);\n }\n const existing = byBaseName.get(baseName);\n if (existing) {\n return existing;\n }\n\n let runtimeName = baseName;\n const occupied = this.namedFragmentMap.get(runtimeName);\n if (occupied && occupied !== selection) {\n const next = this.fragmentNameCounter.get(baseName) ?? 1;\n let idx = next;\n while (this.namedFragmentMap.has(`${baseName}_${idx}`)) {\n idx += 1;\n }\n this.fragmentNameCounter.set(baseName, idx + 1);\n runtimeName = `${baseName}_${idx}`;\n }\n\n this.namedFragmentMap.set(runtimeName, selection);\n byBaseName.set(baseName, runtimeName);\n return runtimeName;\n }\n\n acceptDirectives(directives?: ReadonlyMap<string, DirectiveArgs>) {\n if (!directives) return;\n for (const [directive, args] of directives) {\n this.writer.text(`\\n@${directive}`);\n this.acceptArgs(args);\n }\n }\n\n private acceptArgs(\n args?: object,\n argGraphQLTypeMap?: ReadonlyMap<string, string>,\n enumInputMetadata?: EnumInputMetadata,\n ) {\n if (!args) return;\n const t = this.writer.text.bind(this.writer);\n\n let hasField: boolean;\n if (argGraphQLTypeMap) {\n hasField = false;\n for (const argName in args) {\n if (argGraphQLTypeMap.get(argName) !== undefined) {\n hasField = true;\n break;\n } else console.warn(`Unexpected argument: ${argName}`);\n }\n } else {\n hasField = Object.keys(args).length !== 0;\n }\n\n if (hasField) {\n this.writer.scope(\n { type: \"arguments\", multiLines: isMultilineJSON(args) },\n () => {\n for (const argName in args) {\n this.writer.separator();\n const arg = (args as any)[argName];\n\n if (argGraphQLTypeMap) {\n const typeName = argGraphQLTypeMap.get(argName);\n if (typeName !== undefined) {\n if (arg?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n this.registerVariableType(\n ref,\n typeName,\n false,\n \"field argument\",\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(\n arg,\n SerializeContext.enumMetaType(enumInputMetadata, typeName),\n typeName,\n );\n }\n } else {\n throw new Error(`Unknown argument '${argName}'`);\n }\n } else {\n if (arg?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n if (!ref.graphqlTypeName) {\n throw new Error(\n `Directive argument '${ref.name}' requires graphqlTypeName`,\n );\n }\n this.registerVariableType(\n ref,\n ref.graphqlTypeName,\n false,\n \"directive argument\",\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(arg, undefined, undefined);\n }\n }\n }\n },\n );\n }\n }\n\n private acceptLiteral(\n value: any,\n metaType: EnumInputMetaType | undefined,\n graphqlTypeName: string | undefined,\n ) {\n const t = this.writer.text.bind(this.writer);\n\n if (value == null) {\n t(\"null\");\n return;\n }\n if (typeof value === \"number\") {\n t(value.toString());\n return;\n }\n if (typeof value === \"string\") {\n t(metaType ? value : JSON.stringify(value));\n return;\n }\n if (typeof value === \"boolean\") {\n t(value ? \"true\" : \"false\");\n return;\n }\n if (value?.[__marker]) {\n const ref = value as ParameterRef<string>;\n if (!graphqlTypeName && !ref.graphqlTypeName) {\n throw new Error(\n `Argument '${ref.name}' nested type cannot be inferred; provide graphqlTypeName`,\n );\n }\n this.registerVariableType(ref, graphqlTypeName, true, \"nested argument\");\n t(`$${ref.name}`);\n return;\n }\n if (value instanceof StringValue) {\n t(value.quotationMarks ? JSON.stringify(value.value) : value.value);\n return;\n }\n\n if (Array.isArray(value) || value instanceof Set) {\n const elementGraphQLTypeName =\n SerializeContext.elementTypeName(graphqlTypeName);\n this.writer.scope({ type: \"array\" }, () => {\n for (const e of value) {\n this.writer.separator(\", \");\n this.acceptLiteral(e, metaType, elementGraphQLTypeName);\n }\n });\n } else if (value instanceof Map) {\n this.writer.scope({ type: \"block\" }, () => {\n for (const [k, v] of value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n v,\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n } else if (typeof value === \"object\") {\n this.writer.scope({ type: \"block\" }, () => {\n for (const k in value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n value[k],\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n }\n }\n\n private registerVariableType(\n ref: ParameterRef<string>,\n expectedTypeName: string | undefined,\n allowImplicitFromRef = false,\n context = \"argument\",\n ) {\n const typeName =\n expectedTypeName ??\n (allowImplicitFromRef ? ref.graphqlTypeName : undefined);\n if (!typeName) {\n throw new Error(\n `Directive argument '${ref.name}' requires graphqlTypeName`,\n );\n }\n if (ref.graphqlTypeName && ref.graphqlTypeName !== typeName) {\n throw new Error(\n `Argument '${ref.name}' type conflict: '${typeName}' vs ParameterRef '${ref.graphqlTypeName}' (${context})`,\n );\n }\n const existing = this.variableTypeMap.get(ref.name);\n if (existing && existing !== typeName) {\n throw new Error(\n `Argument '${ref.name}' type conflict: '${existing}' vs '${typeName}' (${context})`,\n );\n }\n this.variableTypeMap.set(ref.name, typeName);\n }\n\n private static enumMetaType(\n meta: EnumInputMetadata | undefined,\n typeName: string | undefined,\n ): EnumInputMetaType | undefined {\n if (!meta || !typeName) return undefined;\n return meta.get(typeName.split(/\\[|\\]|!/).join(\"\"));\n }\n\n private static elementTypeName(\n typeName: string | undefined,\n ): string | undefined {\n if (!typeName) return undefined;\n let normalized = typeName.trim();\n // Strip non-null marker before list extraction to get element type.\n if (normalized.endsWith(\"!\")) {\n normalized = normalized.slice(0, -1).trim();\n }\n if (normalized.startsWith(\"[\") && normalized.endsWith(\"]\")) {\n return normalized.slice(1, -1).trim();\n }\n return normalized;\n }\n}\n\nconst isMultilineJSON = (obj: unknown): boolean => {\n let size = 0;\n if (Array.isArray(obj)) {\n for (const v of obj) {\n if (typeof v === \"object\" && !v?.[__marker]) return true;\n if (++size > 2) return true;\n }\n } else if (typeof obj === \"object\" && obj !== null) {\n for (const k of Reflect.ownKeys(obj)) {\n const v = (obj as Record<string | symbol, unknown>)[k];\n if (typeof v === \"object\" && !(v as Record<symbol, unknown>)?.[__marker])\n return true;\n if (++size > 2) return true;\n }\n }\n return false;\n};\n","/**\n * 为 selection 中的字段提供参数(args)、别名(alias)和指令(directive)配置。\n * 通过链式调用构建,每次调用返回一个新的不可变节点。\n */\n\nimport { DirectiveArgs } from \"./types\";\nimport { UnresolvedVariables } from \"./parameter\";\n\nexport interface FieldOptionsValue {\n readonly alias?: string;\n readonly directives: ReadonlyMap<string, DirectiveArgs>;\n}\n\nexport class FieldOptions<\n TAlias extends string,\n TDirectives extends { readonly [key: string]: DirectiveArgs },\n TDirectiveVariables extends object,\n> {\n private _value?: FieldOptionsValue;\n\n constructor(\n private readonly _prev?: FieldOptions<string, any, any>,\n private readonly _alias?: string,\n private readonly _directive?: string,\n private readonly _directiveArgs?: object,\n ) {}\n\n alias<XAlias extends string>(\n alias: XAlias,\n ): FieldOptions<XAlias, TDirectives, TDirectiveVariables> {\n return new FieldOptions<XAlias, TDirectives, TDirectiveVariables>(\n this,\n alias,\n );\n }\n\n directive<XDirective extends string, XArgs extends DirectiveArgs = {}>(\n directive: XDirective,\n args?: XArgs,\n ): FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, Record<keyof XArgs, any>>\n > {\n if (directive.startsWith(\"@\")) {\n throw new Error(\n \"directive name should not start with '@', it will be prepended automatically\",\n );\n }\n return new FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, XArgs>\n >(this, undefined, directive, args);\n }\n\n get value(): FieldOptionsValue {\n return (this._value ??= this._buildValue());\n }\n\n private _buildValue(): FieldOptionsValue {\n let alias: string | undefined;\n const directives = new Map<string, DirectiveArgs>();\n\n for (\n let node: FieldOptions<string, any, any> | undefined = this;\n node;\n node = node._prev\n ) {\n if (node._alias !== undefined && alias === undefined) {\n alias = node._alias;\n }\n if (node._directive !== undefined && !directives.has(node._directive)) {\n const args = node._directiveArgs;\n directives.set(\n node._directive,\n args && Object.keys(args).length !== 0 ? args : undefined,\n );\n }\n }\n\n return { alias, directives };\n }\n}\n\nexport const createFieldOptions = <TAlias extends string>(): FieldOptions<\n TAlias,\n {},\n {}\n> => {\n return new FieldOptions<TAlias, {}, {}>();\n};\n","/**\n * 枚举/输入类型元数据\n *\n * 用于 GraphQL query 序列化时区分 enum 和 input object 类型:\n * - enum 值直接输出(不加引号):`status: ACTIVE`\n * - input object 递归展开字段:`input: { name: \"foo\" }`\n * - 普通字符串加引号输出:`name: \"foo\"`\n */\n\n/** 枚举/输入类型元数据表,按类型名索引 */\nexport type EnumInputMetadata = ReadonlyMap<string, EnumInputMetaType>;\n\n/** 单个枚举或输入类型的元信息 */\nexport interface EnumInputMetaType {\n /** 区分枚举还是输入类型 */\n readonly type: \"ENUM\" | \"INPUT\";\n /** GraphQL 类型名 */\n readonly name: string;\n /** INPUT 类型的字段映射(ENUM 没有字段,为 undefined) */\n readonly fields?: ReadonlyMap<string, EnumInputMetaType | undefined>;\n /** INPUT 字段的 GraphQL 类型名(保留 []/!) */\n readonly fieldGraphQLTypeMap?: ReadonlyMap<string, string>;\n}\n\n/** 构建器输入:输入类型的字段描述 */\nexport interface RawField {\n readonly name: string;\n readonly typeName: string;\n readonly graphqlTypeName?: string;\n readonly isLeaf?: boolean;\n}\n\n/**\n * 元数据构建器\n *\n * codegen 生成的代码会调用此构建器来注册 schema 中的 enum/input 类型:\n * ```ts\n * const builder = new EnumInputMetadataBuilder();\n * builder.add(\"Status\"); // enum\n * builder.add(\"CreateInput\", [{name: \"status\", typeName: \"Status\"}]); // input\n * export const ENUM_INPUT_METADATA = builder.build();\n * ```\n */\nexport class EnumInputMetadataBuilder {\n private typeMap = new Map<string, ReadonlyArray<RawField> | undefined>();\n private static readonly BUILTIN_SCALARS = new Set([\n \"ID\",\n \"String\",\n \"Int\",\n \"Float\",\n \"Boolean\",\n ]);\n\n /** 注册一个枚举/输入类型。无 fields 参数表示 ENUM,有则表示 INPUT */\n add(name: string, fields?: ReadonlyArray<RawField>): this {\n this.typeMap.set(name, fields);\n return this;\n }\n\n /** 构建不可变的元数据表 */\n build(): EnumInputMetadata {\n const result = new Map<string, EnumInputMetaType>();\n const resolve = (name: string): EnumInputMetaType => {\n const existing = result.get(name);\n if (existing) return existing;\n\n if (!this.typeMap.has(name)) {\n throw new Error(`Unknown enum/input type: '${name}'`);\n }\n\n const rawFields = this.typeMap.get(name);\n let fields: Map<string, EnumInputMetaType | undefined> | undefined;\n let fieldGraphQLTypeMap: Map<string, string> | undefined;\n if (rawFields) {\n fields = new Map();\n fieldGraphQLTypeMap = new Map();\n for (const {\n name: fieldName,\n typeName,\n graphqlTypeName,\n isLeaf,\n } of rawFields) {\n let resolved: EnumInputMetaType | undefined;\n const treatAsLeaf =\n isLeaf || EnumInputMetadataBuilder.BUILTIN_SCALARS.has(typeName);\n if (!treatAsLeaf) {\n if (!this.typeMap.has(typeName)) {\n throw new Error(`Unknown enum/input type: '${typeName}'`);\n }\n resolved = resolve(typeName);\n }\n fields.set(fieldName, resolved);\n if (graphqlTypeName) {\n fieldGraphQLTypeMap.set(fieldName, graphqlTypeName);\n }\n }\n }\n\n const metaType: EnumInputMetaType = {\n type: rawFields === undefined ? \"ENUM\" : \"INPUT\",\n name,\n fields,\n fieldGraphQLTypeMap,\n };\n result.set(name, metaType);\n return metaType;\n };\n\n for (const name of this.typeMap.keys()) {\n resolve(name);\n }\n return result;\n }\n}\n","import { SelectionImpl } from \"./selection\";\nimport { __fragment_spread } from \"./types\";\nimport { runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n DirectiveArgs,\n FragmentSpread,\n ValueOrThunk,\n} from \"./types\";\nimport {\n SchemaType,\n createSchemaType,\n resolveRegisteredSchemaType,\n} from \"./schema\";\nimport { createFieldOptions, FieldOptionsValue } from \"./field-options\";\nimport { ParameterRef } from \"./parameter\";\nimport { EnumInputMetadata, EnumInputMetadataBuilder } from \"./enum-metadata\";\n\nexport { createSchemaType };\n\n// ─── Public factory ───────────────────────────────────────────────────\n\nexport const createSelection = <\n E extends string,\n F extends Selection<E, object, object>,\n>(\n schemaType: SchemaType<E>,\n enumInputMetadata: EnumInputMetadata,\n unionEntityTypes: string[] | undefined,\n): F => {\n return new Proxy(\n new SelectionImpl(\n [schemaType, enumInputMetadata, unionEntityTypes],\n false,\n \"\",\n ),\n proxyHandler(schemaType),\n ) as unknown as F;\n};\n\n// ─── Property access proxy handler ────────────────────────────────────\n\nconst BUILT_DIRECTIVES = new Set([\n \"$omit\",\n \"$alias\",\n \"$directive\",\n \"$include\",\n \"$skip\",\n \"$on\",\n \"$use\",\n]);\n\nconst resolveValueOrThunk = <T>(value: ValueOrThunk<T>): T => {\n return typeof value === \"function\" ? (value as () => T)() : value;\n};\n\nconst createChildSelectionProxy = (\n schemaType: SchemaType,\n enumInputMetadata: EnumInputMetadata,\n) => {\n return new Proxy(\n new SelectionImpl([schemaType, enumInputMetadata, undefined], false, \"\"),\n proxyHandler(schemaType),\n );\n};\n\nconst buildRequiredArgs = (\n argTypeMap: ReadonlyMap<string, string>,\n): { [key: string]: unknown } | undefined => {\n if (!argTypeMap.size) return undefined;\n const requiredArgNames = Array.from(argTypeMap.entries())\n .filter(([, type]) => type.endsWith(\"!\"))\n .map(([name]) => name);\n if (!requiredArgNames.length) return undefined;\n\n const args: { [key: string]: unknown } = {};\n for (const name of requiredArgNames) {\n args[name] = ParameterRef.of(name);\n }\n return args;\n};\n\nconst resolveAssociationTarget = (\n fieldName: string,\n fieldTargetTypeName: string | undefined,\n ownerTypeName: string,\n): SchemaType => {\n if (!fieldTargetTypeName) {\n throw new Error(`Field \"${fieldName}\" has no target type`);\n }\n const targetSchemaType = resolveRegisteredSchemaType(fieldTargetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${fieldTargetTypeName}\" for field \"${fieldName}\" on \"${ownerTypeName}\"`,\n );\n }\n return targetSchemaType;\n};\n\nconst parseAssociationArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let childSelectionFactory: ((f: unknown) => unknown) | undefined;\n let childSelection: SelectionImpl<string, object, object> | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n childSelection = arg;\n } else if (typeof arg === \"function\") {\n childSelectionFactory = arg as typeof childSelectionFactory;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, childSelectionFactory, childSelection };\n};\n\nconst parseMethodArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let child: SelectionImpl<string, object, object> | undefined;\n let optionsValue: FieldOptionsValue | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n child = arg;\n } else if (typeof arg === \"function\") {\n optionsValue = arg(createFieldOptions()).value;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, child, optionsValue };\n};\n\nconst findLastFieldSelection = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n) => {\n const byKey = selection.fieldMap.get(lastField);\n if (byKey) return byKey;\n // `lastField` can refer to a field removed earlier in the chain.\n const byName = selection.findFieldsByName(lastField);\n return byName.length ? byName[0] : undefined;\n};\n\nconst rewriteLastFieldWithOptions = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n optionsValue: FieldOptionsValue,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n let current = selection.removeField(lastField);\n current = current.addField(\n lastField,\n existing?.args as { [key: string]: unknown } | undefined,\n existing?.childSelections?.[0] as\n | SelectionImpl<string, object, object>\n | undefined,\n optionsValue,\n );\n return current;\n};\n\nconst mergeLastFieldDirective = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n directiveName: string,\n directiveArgs: DirectiveArgs,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n const directives = new Map<string, DirectiveArgs>(\n existing?.fieldOptionsValue?.directives ?? [],\n );\n directives.set(directiveName, directiveArgs);\n const optionsValue: FieldOptionsValue = {\n alias: existing?.fieldOptionsValue?.alias,\n directives,\n };\n return rewriteLastFieldWithOptions(selection, lastField, optionsValue);\n};\n\nconst proxyHandler = (\n schemaType: SchemaType,\n): ProxyHandler<SelectionImpl<string, object, object>> => {\n const handler: ProxyHandler<SelectionImpl<string, object, object>> = {\n get: (\n target: SelectionImpl<string, object, object>,\n p: string | symbol,\n _receiver: unknown,\n ): unknown => {\n if (p === \"schemaType\") return schemaType;\n\n if (typeof p === \"string\") {\n // Built-in $-prefixed methods\n if (BUILT_DIRECTIVES.has(p)) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n // Known field\n else if (schemaType.fields.has(p)) {\n const field = schemaType.fields.get(p)!;\n\n // Association fields → callback pattern\n if (field.isAssociation || field.targetTypeName !== undefined) {\n return (...argArray: unknown[]) => {\n const targetSchemaType = resolveAssociationTarget(\n p,\n field.targetTypeName,\n schemaType.name,\n );\n let { args, childSelectionFactory, childSelection } =\n parseAssociationArgs(argArray);\n\n if (childSelectionFactory) {\n childSelection = childSelectionFactory(\n createChildSelectionProxy(\n targetSchemaType,\n (target as any)._enumInputMetadata,\n ),\n ) as typeof childSelection;\n }\n if (!childSelection) {\n throw new Error(`Field \"${p}\" requires a child selection`);\n }\n\n if (!args) {\n args = buildRequiredArgs(field.argGraphQLTypeMap);\n }\n\n return new Proxy(\n target.addField(p, args, childSelection),\n handler,\n );\n };\n }\n\n // Scalar with args → method\n if (field.isFunction) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n\n // Plain scalar → property access\n return new Proxy(target.addField(p), handler);\n }\n }\n return Reflect.get(target, p, target);\n },\n };\n return handler;\n};\n\n// ─── Method call proxy handler ────────────────────────────────────────\n\nconst methodHandler = (\n targetSelection: SelectionImpl<string, object, object>,\n handler: ProxyHandler<SelectionImpl<string, object, object>>,\n field: string,\n): ProxyHandler<Function> => {\n return {\n apply: (_1: Function, _2: unknown, argArray: unknown[]): unknown => {\n // $on(...) – inline fragment embedding\n if (field === \"$on\") {\n let childSelection: ExecutableSelection<string, object, object>;\n\n if (\n typeof argArray[0] === \"string\" &&\n typeof argArray[1] === \"function\"\n ) {\n const targetTypeName = argArray[0] as string;\n const builder = argArray[1] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = resolveRegisteredSchemaType(targetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${targetTypeName}\" for $on`,\n );\n }\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else if (typeof argArray[0] === \"function\") {\n const builder = argArray[0] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = targetSelection.schemaType;\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else {\n throw new Error(\n \"$on requires a builder or (typeName, builder) arguments\",\n );\n }\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n undefined,\n ),\n handler,\n );\n }\n\n // $use(fragment) – named fragment spread\n if (field === \"$use\") {\n const fragment = resolveValueOrThunk(\n argArray[0] as ValueOrThunk<\n FragmentSpread<string, string, object, object>\n >,\n );\n if (!fragment || !fragment[__fragment_spread]) {\n throw new Error(\"$use requires a fragment created by fragment$\");\n }\n const childSelection = fragment.selection as ExecutableSelection<\n string,\n object,\n object\n >;\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n fragment.name,\n ),\n handler,\n );\n }\n\n // $omit(...fieldNames) – remove multiple fields\n if (field === \"$omit\") {\n let current: SelectionImpl<string, object, object> = targetSelection;\n for (const fieldName of argArray) {\n if (typeof fieldName === \"string\") {\n current = current.removeField(fieldName);\n }\n }\n return new Proxy(current, handler);\n }\n\n // $alias(alias) – rename the last selected field\n if (field === \"$alias\") {\n const alias = argArray[0] as string;\n const lastField = targetSelection.lastField;\n if (!lastField)\n throw new Error(\"$alias requires a preceding field selection\");\n const existing = findLastFieldSelection(targetSelection, lastField);\n const optionsValue: FieldOptionsValue = {\n alias,\n directives: new Map(existing?.fieldOptionsValue?.directives ?? []),\n };\n const current = rewriteLastFieldWithOptions(\n targetSelection,\n lastField,\n optionsValue,\n );\n return new Proxy(current, handler);\n }\n\n // $directive(directiveName, args?) – field-level if there is a last field, otherwise selection-level\n if (field === \"$directive\") {\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n ),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // $include(condition) / $skip(condition)\n if (field === \"$include\" || field === \"$skip\") {\n const directiveName = field === \"$include\" ? \"include\" : \"skip\";\n const directiveArgs = { if: argArray[0] } as DirectiveArgs;\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(directiveName, directiveArgs),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n directiveName,\n directiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // Regular field method call\n let { args, child, optionsValue } = parseMethodArgs(argArray);\n\n // Auto-parameterize unset args\n if (!args) {\n const argMap =\n targetSelection.schemaType.ownFields.get(field)?.argGraphQLTypeMap;\n args = argMap ? buildRequiredArgs(argMap) : undefined;\n }\n\n return new Proxy(\n targetSelection.addField(field, args, child, optionsValue),\n handler,\n );\n },\n };\n};\n\n// ─── Sentinel ─────────────────────────────────────────────────────────\n\nconst DUMMY = () => {};\n\nexport const SELECTION_TARGET = new SelectionImpl(\n [\n createSchemaType(\"Any\", \"OBJECT\", [], []),\n new EnumInputMetadataBuilder().build(),\n undefined,\n ],\n false,\n \"\",\n);\n","export const cyrb53 = (str: string, seed: number = 0): string => {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(36);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/runtime/types.ts","../src/runtime/schema.ts","../src/runtime/parameter.ts","../src/runtime/text-builder.ts","../src/runtime/selection.ts","../src/runtime/field-options.ts","../src/runtime/enum-metadata.ts","../src/runtime/proxy.ts","../src/runtime/cyrb53.ts"],"sourcesContent":["import type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport type { ParameterRef } from \"./parameter\";\n\nexport const __phantom: unique symbol = Symbol(\"__phantom\");\nexport const __runtime: unique symbol = Symbol(\"__selection_runtime\");\n\n// ─── Core Selection Interface ──────────────────────────────────────────\n\nexport interface Selection<\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n toString(): string;\n toFragmentString(): string;\n toJSON(): string;\n\n readonly [__phantom]: readonly [E, T, TVariables];\n}\n\nexport interface SelectionRuntime<E extends string = string> {\n readonly schemaType: SchemaType<E>;\n readonly operationName?: string;\n readonly fieldMap: ReadonlyMap<string, FieldSelection>;\n readonly directiveMap: ReadonlyMap<string, DirectiveArgs>;\n readonly variableTypeMap: ReadonlyMap<string, VariableTypeRegistration>;\n\n findField(fieldKey: string): FieldSelection | undefined;\n findFieldsByName(fieldName: string): readonly FieldSelection[];\n findFieldByName(fieldName: string): FieldSelection | undefined;\n}\n\nexport type ExecutableSelection<\n E extends string,\n T extends object,\n TVariables extends object,\n> = Selection<E, T, TVariables> & {\n readonly [__runtime]: SelectionRuntime<E>;\n};\n\nexport function runtimeOf<\n E extends string,\n T extends object,\n TVariables extends object,\n>(selection: Selection<E, T, TVariables>): SelectionRuntime<E> {\n return (selection as ExecutableSelection<E, T, TVariables>)[__runtime];\n}\n\n// ─── Utility Types ────────────────────────────────────────────────────\n\nexport type ShapeOf<F> =\n F extends Selection<string, infer M, object> ? M : never;\n\nexport type VariablesOf<T> =\n T extends Selection<string, object, infer TVariables> ? TVariables : never;\n\nexport type Expand<T> =\n T extends ReadonlyArray<infer U>\n ? ReadonlyArray<Expand<U>>\n : T extends Array<infer U>\n ? Array<Expand<U>>\n : T extends object\n ? { [K in keyof T]: Expand<T[K]> }\n : T;\n\nexport type ValueOrThunk<T> = T | (() => T);\n\nexport interface VariableTypeRegistration {\n readonly typeName: string;\n readonly source: string;\n}\n\nexport interface FieldSelection {\n readonly name: string;\n readonly argGraphQLTypes?: ReadonlyMap<string, string>;\n readonly args?: object;\n readonly fieldOptionsValue?: FieldOptionsValue;\n readonly plural: boolean;\n readonly childSelections?: ReadonlyArray<\n ExecutableSelection<string, object, object>\n >;\n}\n\n// ─── Directives & Fragments ──────────────────────────────────────────\n\nexport type DirectiveArgs =\n | { readonly [key: string]: ParameterRef<string> | StringValue | any }\n | undefined;\n\nexport class StringValue {\n constructor(\n readonly value: any,\n readonly quotationMarks: boolean = true,\n ) {}\n}\n\nexport const __fragment_spread = Symbol(\"__fragment_spread\");\n\nexport abstract class FragmentSpread<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n readonly [__fragment_spread] = true;\n\n protected constructor(\n readonly name: TFragmentName,\n readonly selection: ExecutableSelection<E, T, TVariables>,\n ) {}\n}\n\nexport class FragmentRef<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> extends FragmentSpread<TFragmentName, E, T, TVariables> {\n constructor(\n name: TFragmentName,\n selection: ExecutableSelection<E, T, TVariables>,\n ) {\n super(name, selection);\n }\n}\n","// ─── Type Categories ──────────────────────────────────────────────────\n\n/**\n * Runtime-level classification for GraphQL composite types.\n *\n * - OBJECT:\n * Represents identity-bearing types (typically with an id-like field) that are\n * treated as independently addressable nodes in selection/proxy logic.\n * - EMBEDDED:\n * Represents value-like types without independent identity; they are selected\n * as nested structures and are not treated as standalone entity nodes.\n */\nexport type SchemaTypeCategory = \"OBJECT\" | \"EMBEDDED\";\n\n/**\n * Runtime-level classification for fields in a schema type.\n *\n * - ID:\n * Identity field of an OBJECT-like node (used for entity identity semantics).\n * - SCALAR:\n * Leaf/value field with no nested selection.\n * - REFERENCE:\n * Single-valued association to another composite type (requires child selection).\n * - LIST:\n * Multi-valued association to another composite type (requires child selection).\n */\nexport type SchemaFieldCategory = \"ID\" | \"SCALAR\" | \"REFERENCE\" | \"LIST\";\n\n// ─── Schema Type & Field (plain readonly interfaces) ─────────────────\n\n/**\n * Normalized runtime representation of one GraphQL composite type.\n */\nexport interface SchemaType<E extends string = string> {\n /** GraphQL type name. */\n readonly name: E;\n /** Coarse runtime category used by selection/proxy behavior. */\n readonly category: SchemaTypeCategory;\n /** Directly implemented interfaces / declared super types. */\n readonly interfaces: readonly SchemaType[];\n /** Fields declared on this type itself (excluding inherited fields). */\n readonly ownFields: ReadonlyMap<string, SchemaField>;\n /** Effective fields (own fields plus inherited/interface fields). */\n readonly fields: ReadonlyMap<string, SchemaField>;\n}\n\n/**\n * Normalized runtime representation of one field on a schema type.\n */\nexport interface SchemaField {\n /** Field name as exposed by GraphQL. */\n readonly name: string;\n /** Coarse runtime field category. */\n readonly category: SchemaFieldCategory;\n /** GraphQL argument type map keyed by argument name (SDL form, e.g. `ID!`). */\n readonly argGraphQLTypeMap: ReadonlyMap<string, string>;\n /** Target GraphQL type name when this field points to another composite type. */\n readonly targetTypeName?: string;\n /** Whether this field is multi-valued. */\n readonly isPlural: boolean;\n /** Whether this field is an association/reference field. */\n readonly isAssociation: boolean;\n /** Whether runtime treats this field as function-like (args or association). */\n readonly isFunction: boolean;\n /** Whether this field may be omitted in generated runtime builders. */\n readonly isUndefinable: boolean;\n}\n\nconst SCHEMA_TYPE_REGISTRY = new Map<string, SchemaType>();\nconst SCHEMA_TYPE_FACTORY_REGISTRY = new Map<string, () => SchemaType>();\nconst SCHEMA_TYPE_RESOLVING = new Set<string>();\n\nexport const resolveRegisteredSchemaType = (\n typeName: string,\n): SchemaType | undefined => {\n const registered = SCHEMA_TYPE_REGISTRY.get(typeName);\n if (registered) {\n return registered;\n }\n\n const factory = SCHEMA_TYPE_FACTORY_REGISTRY.get(typeName);\n if (!factory) {\n return undefined;\n }\n if (SCHEMA_TYPE_RESOLVING.has(typeName)) {\n throw new Error(\n `Circular schema factory resolution detected for \"${typeName}\"`,\n );\n }\n\n SCHEMA_TYPE_RESOLVING.add(typeName);\n try {\n const created = factory();\n registerSchemaType(created);\n } finally {\n SCHEMA_TYPE_RESOLVING.delete(typeName);\n }\n\n return SCHEMA_TYPE_REGISTRY.get(typeName);\n};\n\nexport const registerSchemaTypeFactory = (\n typeName: string,\n factory: () => SchemaType,\n) => {\n if (!SCHEMA_TYPE_FACTORY_REGISTRY.has(typeName)) {\n SCHEMA_TYPE_FACTORY_REGISTRY.set(typeName, factory);\n }\n};\n\n// ─── Field Descriptor (input to factory) ──────────────────────────────\n\ntype FieldDescriptor =\n | string\n | {\n readonly name: string;\n readonly category: SchemaFieldCategory;\n readonly undefinable?: boolean;\n readonly argGraphQLTypeMap?: { readonly [key: string]: string };\n readonly targetTypeName?: string;\n };\n\n// ─── Factory ────────────────────────────────────────────────────────\n\nexport const createSchemaType = <E extends string>(\n name: E,\n category: SchemaTypeCategory,\n superTypes: readonly SchemaType[],\n declaredFields: readonly FieldDescriptor[],\n): SchemaType<E> => {\n const declaredFieldMap = new Map<string, SchemaField>();\n\n for (const desc of declaredFields) {\n if (typeof desc === \"string\") {\n declaredFieldMap.set(desc, buildField(desc, \"SCALAR\", new Map()));\n } else {\n const argMap = new Map<string, string>();\n if (desc.argGraphQLTypeMap) {\n for (const k in desc.argGraphQLTypeMap) {\n argMap.set(k, desc.argGraphQLTypeMap[k]!);\n }\n }\n declaredFieldMap.set(\n desc.name,\n buildField(\n desc.name,\n desc.category,\n argMap,\n desc.targetTypeName,\n desc.undefinable,\n ),\n );\n }\n }\n\n // Lazily compute merged fields (own + inherited)\n let _fields: ReadonlyMap<string, SchemaField> | undefined;\n\n const result: SchemaType<E> = {\n name,\n category,\n interfaces: superTypes,\n ownFields: declaredFieldMap,\n get fields(): ReadonlyMap<string, SchemaField> {\n if (!_fields) {\n _fields =\n superTypes.length === 0 ? declaredFieldMap : collectFields(result);\n }\n return _fields;\n },\n };\n\n registerSchemaType(result);\n return result;\n};\n\n// ─── Internal helpers ─────────────────────────────────────────────────\n\nconst buildField = (\n name: string,\n category: SchemaFieldCategory,\n argGraphQLTypeMap: ReadonlyMap<string, string>,\n targetTypeName?: string,\n undefinable?: boolean,\n): SchemaField => {\n const isPlural = category === \"LIST\";\n const isAssociation = category === \"REFERENCE\" || isPlural;\n\n return {\n name,\n category,\n argGraphQLTypeMap,\n targetTypeName,\n isPlural,\n isAssociation,\n isFunction:\n argGraphQLTypeMap.size !== 0 ||\n isAssociation ||\n targetTypeName !== undefined,\n isUndefinable: undefinable ?? false,\n };\n};\n\nconst collectFields = (type: SchemaType): ReadonlyMap<string, SchemaField> => {\n const result = new Map<string, SchemaField>();\n _collect(type, result);\n return result;\n};\n\nconst _collect = (type: SchemaType, out: Map<string, SchemaField>) => {\n for (const [name, field] of type.ownFields) {\n out.set(name, field);\n }\n for (const superType of type.interfaces) {\n _collect(superType, out);\n }\n};\n\nconst registerSchemaType = (type: SchemaType) => {\n const existing = SCHEMA_TYPE_REGISTRY.get(type.name);\n if (!existing) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n return;\n }\n\n if (existing.ownFields.size < type.ownFields.size) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n }\n};\n","/**\n * Runtime marker for `ParameterRef`.\n *\n * We use a unique symbol instead of string keys to avoid accidental collision\n * with user objects passed as argument literals.\n */\nexport const __marker: unique symbol = Symbol(\"__parameter_ref_marker\");\n\nexport class ParameterRef<TName extends string> {\n readonly [__marker] = true;\n\n private constructor(\n /** GraphQL variable name without `$` prefix. */\n readonly name: TName,\n /**\n * Optional GraphQL type annotation (e.g. `Boolean!`, `[String!]`).\n *\n * - Field argument position: usually omitted, type can be inferred from\n * schema `argGraphQLTypeMap`.\n * - Directive/nested position: usually required to register variable type.\n */\n readonly explicitType?: string,\n ) {\n if (name.startsWith(\"$\")) {\n throw new Error(\"parameter name cannot start with '$'\");\n }\n }\n\n /**\n * Represents a GraphQL variable reference used in DSL argument objects.\n *\n * Example:\n * - `id: ParameterRef.of(\"postId\")` -> `id: $postId`\n *\n * Main use cases:\n * 1. Rename/bind a field argument to a different variable name.\n * 2. Explicitly annotate variable type when runtime cannot infer it from a\n * field argument position (for example directive args or nested literals).\n *\n * When `explicitType` is NOT needed:\n * - Field arg slot with schema type:\n * `q.user({ id: ParameterRef.of(\"userId\") }, (u) => u.id)`\n * `id` type is inferred from schema (`ID!`).\n *\n * When `explicitType` IS needed:\n * - Directive arg slot:\n * `node.$directive(\"include\", { if: ParameterRef.of(\"withEmail\", \"Boolean!\") })`\n * - Nested input slot without direct arg type context:\n * `q.search({ filter: { keyword: ParameterRef.of(\"kw\", \"String!\") } }, ...)`\n */\n static of<TName extends string>(\n name: TName,\n explicitType?: string,\n ): ParameterRef<TName> {\n return new ParameterRef<TName>(name, explicitType);\n }\n}\n\nexport type AcceptableVariables<T extends object> = {\n [K in keyof T]: T[K] | ParameterRef<string>;\n};\n\nexport type UnresolvedVariables<T, TVariables> = ReversedType<\n UnresolvedNames<UnresolvedRefs<T>>,\n TVariables\n>;\n\ntype UnresolvedRefs<TVariables> = Pick<\n TVariables,\n {\n [K in keyof TVariables]: TVariables[K] extends ParameterRef<string>\n ? K\n : never;\n }[keyof TVariables]\n>;\n\ntype UnresolvedNames<TUnresolvedVariableRefs> = {\n [K in keyof TUnresolvedVariableRefs]: ParameterRefName<\n TUnresolvedVariableRefs[K]\n >;\n};\n\ntype ReversedType<T extends Record<keyof T, keyof any>, TStandard> = {\n [P in T[keyof T]]: {\n [K in keyof T]: T[K] extends P\n ? K extends keyof TStandard\n ? TStandard[K]\n : never\n : never;\n }[keyof T];\n};\n\ntype ParameterRefName<T> =\n T extends ParameterRef<infer TRefName> ? TRefName : never;\n","export type ScopeType = \"block\" | \"arguments\" | \"array\";\n\nexport interface ScopeOptions {\n readonly type: ScopeType;\n readonly multiLines?: boolean;\n readonly separator?: string;\n readonly prefix?: string;\n readonly suffix?: string;\n}\n\nconst SCOPE_BRACKETS: Record<ScopeType, [open: string, close: string]> = {\n block: [\"{\", \"}\"],\n arguments: [\"(\", \")\"],\n array: [\"[\", \"]\"],\n};\n\nconst DEFAULT_SEPARATORS: Partial<Record<ScopeType, string>> = {\n arguments: \", \",\n array: \", \",\n};\n\ninterface ScopeState {\n readonly type: ScopeType;\n readonly multiLines: boolean;\n readonly separator: string | undefined;\n dirty: boolean;\n}\n\nexport class TextBuilder {\n private result = \"\";\n private atNewLine = false;\n private readonly scopes: ScopeState[] = [];\n\n constructor(private readonly indent: string = \"\\t\") {}\n\n text(value: string): this {\n const scope = this.scopes.at(-1);\n if (value && scope && !scope.dirty) {\n if (scope.multiLines) this.lineBreak();\n scope.dirty = true;\n }\n let remaining = value;\n while (remaining) {\n this.flushIndent();\n const newlineIdx = remaining.indexOf(\"\\n\");\n if (newlineIdx !== -1) {\n this.result += remaining.substring(0, newlineIdx);\n this.lineBreak();\n remaining = remaining.substring(newlineIdx + 1);\n } else {\n this.result += remaining;\n remaining = \"\";\n }\n }\n return this;\n }\n\n scope(options: ScopeOptions, action: () => void): this {\n const { type, multiLines = false, separator, prefix, suffix } = options;\n const [open, close] = SCOPE_BRACKETS[type];\n\n if (prefix) this.text(prefix);\n this.text(open);\n\n this.scopes.push({\n type,\n multiLines,\n separator: separator ?? DEFAULT_SEPARATORS[type],\n dirty: false,\n });\n\n try {\n action();\n } finally {\n this.scopes.pop();\n if (multiLines && !this.atNewLine) this.lineBreak();\n this.text(close);\n if (suffix) this.text(suffix);\n }\n\n return this;\n }\n\n separator(value?: string): this {\n const scope = this.scopes.at(-1);\n if (!scope) throw new Error(\"No existing scope\");\n if (scope.dirty) {\n const sep = value || scope.separator;\n if (sep) this.text(sep);\n if (scope.multiLines) this.lineBreak();\n }\n return this;\n }\n\n toString(): string {\n return this.result;\n }\n\n private flushIndent(): void {\n if (this.atNewLine) {\n this.result += this.indent.repeat(this.scopes.length);\n this.atNewLine = false;\n }\n }\n\n private lineBreak(): void {\n this.result += \"\\n\";\n this.atNewLine = true;\n }\n}\n","import type { EnumInputMetadata, EnumInputMetaType } from \"./enum-metadata\";\nimport type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport { __phantom, __runtime, runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n SelectionRuntime,\n FieldSelection,\n DirectiveArgs,\n VariableTypeRegistration,\n} from \"./types\";\nimport { StringValue } from \"./types\";\nimport { ParameterRef, __marker } from \"./parameter\";\nimport { TextBuilder } from \"./text-builder\";\n\n// ─── SelectionImpl ─────────────────────────────────────────────────────\n// Immutable linked-list node. Each field/directive operation returns a new\n// node pointing back to its predecessor via `prev`. The linked list is\n// walked lazily to build `fieldMap` / `directiveMap` / query text.\n\nexport class SelectionImpl<\n E extends string,\n T extends object,\n TVariables extends object,\n> implements Selection<E, T, TVariables> {\n declare readonly [__phantom]: readonly [E, T, TVariables];\n readonly [__runtime]: SelectionRuntime<E> = this;\n\n private _fieldMap?: ReadonlyMap<string, FieldSelection>;\n private _directiveMap?: ReadonlyMap<string, DirectiveArgs>;\n private _result?: SerializedResult;\n\n constructor(\n private readonly _ctx:\n | SelectionImpl<string, object, object>\n | readonly [SchemaType<E>, EnumInputMetadata, string[] | undefined],\n private readonly _negative: boolean,\n private readonly _field: string,\n private readonly _args?: { [key: string]: any },\n private readonly _child?: SelectionImpl<string, object, object>,\n private readonly _fieldOptionsValue?: FieldOptionsValue,\n private readonly _directive?: string,\n private readonly _directiveArgs?: DirectiveArgs,\n private readonly _operationName?: string,\n ) {}\n\n // ── Last field accessor (for $alias) ──\n\n get lastField(): string {\n return this._field;\n }\n\n // ── Schema metadata ──\n\n private get _schemaType(): SchemaType<E> {\n return Array.isArray(this._ctx)\n ? (this._ctx[0] as SchemaType<E>)\n : ((this._ctx as SelectionImpl<string, object, object>)\n ._schemaType as SchemaType<E>);\n }\n\n private get _enumInputMetadata(): EnumInputMetadata {\n return Array.isArray(this._ctx)\n ? (this._ctx[1] as EnumInputMetadata)\n : (this._ctx as SelectionImpl<string, object, object>)._enumInputMetadata;\n }\n\n private get _unionItemTypes(): string[] | undefined {\n return Array.isArray(this._ctx)\n ? this._ctx.length > 2 && this._ctx[2]?.length\n ? this._ctx[2]\n : undefined\n : (this._ctx as SelectionImpl<string, object, object>)._unionItemTypes;\n }\n\n private get _prev(): SelectionImpl<string, object, object> | undefined {\n return Array.isArray(this._ctx)\n ? undefined\n : (this._ctx as SelectionImpl<string, object, object>);\n }\n\n get schemaType(): SchemaType<E> {\n return this._schemaType;\n }\n\n get operationName(): string | undefined {\n if (this._operationName !== undefined) {\n return this._operationName;\n }\n return this._prev?.operationName;\n }\n\n // ── Builders (return new immutable nodes) ──\n\n addField<F extends SelectionImpl<string, object, object>>(\n field: string,\n args?: { [key: string]: any },\n child?: SelectionImpl<string, object, object>,\n optionsValue?: FieldOptionsValue,\n ): F {\n return new SelectionImpl(\n this,\n false,\n field,\n args,\n child,\n optionsValue,\n ) as unknown as F;\n }\n\n removeField<F extends SelectionImpl<string, object, object>>(\n field: string,\n ): F {\n if (field === \"__typename\") throw new Error(\"__typename cannot be removed\");\n return new SelectionImpl(this, true, field) as unknown as F;\n }\n\n addEmbeddable<F extends SelectionImpl<string, object, object>>(\n child: SelectionImpl<string, object, object>,\n fragmentName?: string,\n ): F {\n let fieldName: string;\n if (fragmentName !== undefined) {\n if (fragmentName.length === 0)\n throw new Error(\"fragmentName cannot be ''\");\n if (fragmentName.startsWith(\"on \"))\n throw new Error(\"fragmentName cannot start with 'on '\");\n fieldName = `... ${fragmentName}`;\n } else if (\n child._schemaType.name === this._schemaType.name ||\n child._unionItemTypes !== undefined\n ) {\n fieldName = \"...\";\n } else {\n fieldName = `... on ${child._schemaType.name}`;\n }\n return new SelectionImpl(\n this,\n false,\n fieldName,\n undefined,\n child,\n ) as unknown as F;\n }\n\n addDirective<F extends SelectionImpl<string, object, object>>(\n directive: string,\n directiveArgs?: DirectiveArgs,\n ): F {\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n directive,\n directiveArgs,\n ) as unknown as F;\n }\n\n withOperationName<F extends SelectionImpl<string, object, object>>(\n operationName?: string,\n ): F {\n if (operationName === undefined) {\n return this as unknown as F;\n }\n if (operationName.trim().length === 0) {\n throw new Error(\"operationName cannot be empty\");\n }\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n operationName,\n ) as unknown as F;\n }\n\n // ── Computed maps (lazy, cached) ──\n\n get fieldMap(): ReadonlyMap<string, FieldSelection> {\n return (this._fieldMap ??= this._buildFieldMap());\n }\n\n get directiveMap(): ReadonlyMap<string, DirectiveArgs> {\n return (this._directiveMap ??= this._buildDirectiveMap());\n }\n\n get variableTypeMap(): ReadonlyMap<string, VariableTypeRegistration> {\n return this._serialize().variableTypeMap;\n }\n\n // ── Lookup helpers ──\n\n findField(fieldKey: string): FieldSelection | undefined {\n const field = this.fieldMap.get(fieldKey);\n if (field) return field;\n for (const [, f] of this.fieldMap) {\n if (f.name.startsWith(\"...\") && f.childSelections) {\n for (const child of f.childSelections) {\n const deeper = runtimeOf(child).findField(fieldKey);\n if (deeper) return deeper;\n }\n }\n }\n return undefined;\n }\n\n findFieldsByName(fieldName: string): readonly FieldSelection[] {\n const out: FieldSelection[] = [];\n this._collectFieldsByName(fieldName, out);\n return out;\n }\n\n findFieldByName(fieldName: string): FieldSelection | undefined {\n const fields = this.findFieldsByName(fieldName);\n if (fields.length > 1) {\n throw new Error(\n `Too many fields named \"${fieldName}\" in selection of type \"${this._schemaType.name}\"`,\n );\n }\n return fields[0];\n }\n\n // ── Serialization ──\n\n toString(): string {\n return this._serialize().text;\n }\n\n toFragmentString(): string {\n return this._serialize().fragmentText;\n }\n\n toJSON(): string {\n return JSON.stringify(this._serialize());\n }\n\n // ═══════════════════════════════════════════════════════════════════\n // Private implementation\n // ═══════════════════════════════════════════════════════════════════\n\n private _buildFieldMap(): ReadonlyMap<string, FieldSelection> {\n // Collect all nodes in chain order\n const nodes: SelectionImpl<string, object, object>[] = [];\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._field !== \"\") nodes.push(n);\n }\n\n const map = new Map<string, FieldSelection>();\n // Process oldest → newest so later operations can override earlier ones\n // (for example alias rewrites and field removals).\n for (let i = nodes.length - 1; i >= 0; --i) {\n const n = nodes[i]!;\n const key = n._fieldOptionsValue?.alias ?? n._field;\n\n if (n._field.startsWith(\"...\")) {\n let children = map.get(key)?.childSelections as\n | SelectionImpl<string, object, object>[]\n | undefined;\n if (!children) {\n children = [];\n map.set(key, {\n name: n._field,\n plural: false,\n childSelections: children,\n });\n }\n children.push(n._child!);\n } else if (n._negative) {\n map.delete(key);\n } else {\n map.set(key, {\n name: n._field,\n argGraphQLTypes: n._schemaType.fields.get(n._field)\n ?.argGraphQLTypeMap,\n args: n._args,\n fieldOptionsValue: n._fieldOptionsValue,\n plural: n._schemaType.fields.get(n._field)?.isPlural ?? false,\n childSelections: n._child ? [n._child] : undefined,\n });\n }\n }\n return map;\n }\n\n private _buildDirectiveMap(): ReadonlyMap<string, DirectiveArgs> {\n const map = new Map<string, DirectiveArgs>();\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._directive !== undefined && !map.has(n._directive)) {\n map.set(n._directive, n._directiveArgs);\n }\n }\n return map;\n }\n\n private _collectFieldsByName(fieldName: string, out: FieldSelection[]) {\n for (const field of this.fieldMap.values()) {\n if (field.name === fieldName) {\n out.push(field);\n } else if (field.name.startsWith(\"...\") && field.childSelections) {\n for (const child of field.childSelections) {\n out.push(...runtimeOf(child).findFieldsByName(fieldName));\n }\n }\n }\n }\n\n // ── Query serialization ─────────────────────────────────────────\n\n private _serialize(): SerializedResult {\n return (this._result ??= serialize(this));\n }\n}\n\nexport const withOperationName = <S extends Selection<string, object, object>>(\n selection: S,\n operationName?: string,\n): S =>\n (\n selection as unknown as SelectionImpl<string, object, object>\n ).withOperationName(operationName) as unknown as S;\n\n// ═══════════════════════════════════════════════════════════════════════\n// Serialization (extracted from old ResultContext)\n// ═══════════════════════════════════════════════════════════════════════\n\ninterface SerializedResult {\n readonly text: string;\n readonly fragmentText: string;\n readonly variableTypeMap: ReadonlyMap<string, VariableTypeRegistration>;\n}\n\nconst serialize = (\n root: SelectionImpl<string, object, object>,\n): SerializedResult => {\n const writer = new TextBuilder();\n const fragmentWriter = new TextBuilder();\n let ctx = new SerializeContext(writer);\n\n ctx.acceptDirectives(root.directiveMap);\n writer.scope({ type: \"block\", multiLines: true, suffix: \"\\n\" }, () => {\n ctx.acceptSelection(root);\n });\n\n const renderedFragments = new Set<string>();\n while (true) {\n const fragmentMap = ctx.namedFragmentMap;\n if (fragmentMap.size === 0) break;\n ctx = new SerializeContext(fragmentWriter, ctx);\n for (const [name, fragment] of fragmentMap) {\n if (renderedFragments.add(name)) {\n const runtime = runtimeOf(fragment);\n fragmentWriter.text(`fragment ${name} on ${runtime.schemaType.name} `);\n ctx.acceptDirectives(runtime.directiveMap);\n fragmentWriter.scope(\n { type: \"block\", multiLines: true, suffix: \"\\n\" },\n () => {\n ctx.acceptSelection(fragment);\n },\n );\n }\n }\n }\n\n return {\n text: writer.toString(),\n fragmentText: fragmentWriter.toString(),\n variableTypeMap: ctx.variableTypeMap,\n };\n};\n\nclass SerializeContext {\n readonly namedFragmentMap = new Map<\n string,\n ExecutableSelection<string, object, object>\n >();\n private readonly fragmentNameCounter = new Map<string, number>();\n private readonly fragmentRuntimeNameMap = new WeakMap<\n ExecutableSelection<string, object, object>,\n Map<string, string>\n >();\n readonly variableTypeMap: Map<string, VariableTypeRegistration>;\n\n constructor(\n private readonly writer: TextBuilder,\n prev?: SerializeContext,\n ) {\n this.variableTypeMap = prev?.variableTypeMap ?? new Map();\n }\n\n acceptSelection(sel: Selection<string, object, object>) {\n const t = this.writer.text.bind(this.writer);\n const runtime = runtimeOf(sel);\n for (const field of runtime.fieldMap.values()) {\n const name = field.name;\n const children = field.childSelections;\n const isNamedSpread =\n name.startsWith(\"... \") && !name.startsWith(\"... on \");\n\n if (isNamedSpread && children?.length) {\n const baseName = name.substring(\"...\".length).trim();\n for (const c of children) {\n const runtimeName = this.resolveFragmentRuntimeName(baseName, c);\n t(`... ${runtimeName}\\n`);\n }\n continue;\n }\n\n if (name !== \"...\") {\n const alias = field.fieldOptionsValue?.alias;\n if (alias && alias !== name) t(`${alias}: `);\n t(name);\n if (field.argGraphQLTypes) {\n const meta = (sel as any)._enumInputMetadata as EnumInputMetadata;\n this.acceptArgs(\n field.args,\n field.argGraphQLTypes,\n meta,\n `field '${runtime.schemaType.name}.${name}'`,\n );\n }\n this.acceptDirectives(field.fieldOptionsValue?.directives);\n }\n if (children?.length) {\n if (name === \"...\") {\n // Inline spread: flatten children directly into current selection.\n for (const c of children) this.acceptSelection(c);\n } else {\n t(\" \");\n this.writer.scope({ type: \"block\", multiLines: true }, () => {\n for (const c of children) this.acceptSelection(c);\n });\n }\n }\n t(\"\\n\");\n }\n }\n\n private resolveFragmentRuntimeName(\n baseName: string,\n selection: ExecutableSelection<string, object, object>,\n ): string {\n const existingByName = this.namedFragmentMap.get(baseName);\n if (existingByName === selection) {\n return baseName;\n }\n\n let byBaseName = this.fragmentRuntimeNameMap.get(selection);\n if (!byBaseName) {\n byBaseName = new Map<string, string>();\n this.fragmentRuntimeNameMap.set(selection, byBaseName);\n }\n const existing = byBaseName.get(baseName);\n if (existing) {\n return existing;\n }\n\n let runtimeName = baseName;\n const occupied = this.namedFragmentMap.get(runtimeName);\n if (occupied && occupied !== selection) {\n const next = this.fragmentNameCounter.get(baseName) ?? 1;\n let idx = next;\n while (this.namedFragmentMap.has(`${baseName}_${idx}`)) {\n idx += 1;\n }\n this.fragmentNameCounter.set(baseName, idx + 1);\n runtimeName = `${baseName}_${idx}`;\n }\n\n this.namedFragmentMap.set(runtimeName, selection);\n byBaseName.set(baseName, runtimeName);\n return runtimeName;\n }\n\n acceptDirectives(directives?: ReadonlyMap<string, DirectiveArgs>) {\n if (!directives) return;\n for (const [directive, args] of directives) {\n this.writer.text(`\\n@${directive}`);\n this.acceptArgs(args, undefined, undefined, `directive '@${directive}'`);\n }\n }\n\n private acceptArgs(\n args?: object,\n argGraphQLTypeMap?: ReadonlyMap<string, string>,\n enumInputMetadata?: EnumInputMetadata,\n argContext = \"argument\",\n ) {\n if (!args) return;\n const t = this.writer.text.bind(this.writer);\n\n let hasField: boolean;\n if (argGraphQLTypeMap) {\n hasField = false;\n for (const argName in args) {\n if (argGraphQLTypeMap.get(argName) !== undefined) {\n hasField = true;\n break;\n } else console.warn(`Unexpected argument: ${argName}`);\n }\n } else {\n hasField = Object.keys(args).length !== 0;\n }\n\n if (hasField) {\n this.writer.scope(\n { type: \"arguments\", multiLines: isMultilineJSON(args) },\n () => {\n for (const argName in args) {\n this.writer.separator();\n const arg = (args as Record<string, unknown>)[argName];\n\n if (argGraphQLTypeMap) {\n const typeName = argGraphQLTypeMap.get(argName);\n if (typeName !== undefined) {\n if ((arg as Record<symbol, unknown>)?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n this.registerVariableType(\n ref,\n typeName,\n false,\n `${argContext}.${argName}`,\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(\n arg,\n SerializeContext.enumMetaType(enumInputMetadata, typeName),\n typeName,\n );\n }\n } else {\n throw new Error(`Unknown argument '${argName}'`);\n }\n } else {\n if ((arg as Record<symbol, unknown>)?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n if (!ref.explicitType) {\n throw new Error(\n `Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n this.registerVariableType(\n ref,\n ref.explicitType,\n false,\n `${argContext}.${argName}`,\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(arg, undefined, undefined);\n }\n }\n }\n },\n );\n }\n }\n\n private acceptLiteral(\n value: unknown,\n metaType: EnumInputMetaType | undefined,\n explicitType: string | undefined,\n ) {\n const t = this.writer.text.bind(this.writer);\n\n if (value == null) {\n t(\"null\");\n return;\n }\n if (typeof value === \"number\") {\n t(value.toString());\n return;\n }\n if (typeof value === \"string\") {\n t(metaType ? value : JSON.stringify(value));\n return;\n }\n if (typeof value === \"boolean\") {\n t(value ? \"true\" : \"false\");\n return;\n }\n if ((value as Record<symbol, unknown>)?.[__marker]) {\n const ref = value as ParameterRef<string>;\n if (!explicitType && !ref.explicitType) {\n throw new Error(\n `Cannot infer the nested type of argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n this.registerVariableType(ref, explicitType, true, \"nested argument\");\n t(`$${ref.name}`);\n return;\n }\n if (value instanceof StringValue) {\n t(value.quotationMarks ? JSON.stringify(value.value) : value.value);\n return;\n }\n\n if (Array.isArray(value) || value instanceof Set) {\n const elementGraphQLTypeName =\n SerializeContext.elementTypeName(explicitType);\n this.writer.scope({ type: \"array\" }, () => {\n for (const e of value) {\n this.writer.separator(\", \");\n this.acceptLiteral(e, metaType, elementGraphQLTypeName);\n }\n });\n } else if (value instanceof Map) {\n this.writer.scope({ type: \"block\" }, () => {\n for (const [k, v] of value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n v,\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n } else if (typeof value === \"object\") {\n this.writer.scope({ type: \"block\" }, () => {\n for (const k in value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n (value as Record<string, unknown>)[k],\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n }\n }\n\n private registerVariableType(\n ref: ParameterRef<string>,\n expectedTypeName: string | undefined,\n allowImplicitFromRef = false,\n context = \"argument\",\n ) {\n const typeName =\n expectedTypeName ?? (allowImplicitFromRef ? ref.explicitType : undefined);\n if (!typeName) {\n throw new Error(\n `Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n if (ref.explicitType && ref.explicitType !== typeName) {\n throw new Error(\n `Variable '$${ref.name}' has conflicting GraphQL types at ${context}: inferred '${typeName}', but ParameterRef declares '${ref.explicitType}'`,\n );\n }\n const existing = this.variableTypeMap.get(ref.name);\n if (existing && existing.typeName !== typeName) {\n throw new Error(\n `Variable '$${ref.name}' has conflicting GraphQL types: first '${existing.typeName}' at ${existing.source}, then '${typeName}' at ${context}`,\n );\n }\n this.variableTypeMap.set(ref.name, { typeName, source: context });\n }\n\n private static enumMetaType(\n meta: EnumInputMetadata | undefined,\n typeName: string | undefined,\n ): EnumInputMetaType | undefined {\n if (!meta || !typeName) return undefined;\n return meta.get(typeName.split(/\\[|\\]|!/).join(\"\"));\n }\n\n private static elementTypeName(\n typeName: string | undefined,\n ): string | undefined {\n if (!typeName) return undefined;\n let normalized = typeName.trim();\n // Strip non-null marker before list extraction to get element type.\n if (normalized.endsWith(\"!\")) {\n normalized = normalized.slice(0, -1).trim();\n }\n if (normalized.startsWith(\"[\") && normalized.endsWith(\"]\")) {\n return normalized.slice(1, -1).trim();\n }\n return normalized;\n }\n}\n\nconst isMultilineJSON = (obj: unknown): boolean => {\n let size = 0;\n if (Array.isArray(obj)) {\n for (const v of obj) {\n if (typeof v === \"object\" && !v?.[__marker]) return true;\n if (++size > 2) return true;\n }\n } else if (typeof obj === \"object\" && obj !== null) {\n for (const k of Reflect.ownKeys(obj)) {\n const v = (obj as Record<string | symbol, unknown>)[k];\n if (typeof v === \"object\" && !(v as Record<symbol, unknown>)?.[__marker])\n return true;\n if (++size > 2) return true;\n }\n }\n return false;\n};\n","/**\n * 为 selection 中的字段提供参数(args)、别名(alias)和指令(directive)配置。\n * 通过链式调用构建,每次调用返回一个新的不可变节点。\n */\n\nimport { DirectiveArgs } from \"./types\";\nimport { UnresolvedVariables } from \"./parameter\";\n\nexport interface FieldOptionsValue {\n readonly alias?: string;\n readonly directives: ReadonlyMap<string, DirectiveArgs>;\n}\n\nexport class FieldOptions<\n TAlias extends string,\n TDirectives extends { readonly [key: string]: DirectiveArgs },\n TDirectiveVariables extends object,\n> {\n private _value?: FieldOptionsValue;\n\n constructor(\n private readonly _prev?: FieldOptions<string, any, any>,\n private readonly _alias?: string,\n private readonly _directive?: string,\n private readonly _directiveArgs?: object,\n ) {}\n\n alias<XAlias extends string>(\n alias: XAlias,\n ): FieldOptions<XAlias, TDirectives, TDirectiveVariables> {\n return new FieldOptions<XAlias, TDirectives, TDirectiveVariables>(\n this,\n alias,\n );\n }\n\n directive<XDirective extends string, XArgs extends DirectiveArgs = {}>(\n directive: XDirective,\n args?: XArgs,\n ): FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, Record<keyof XArgs, any>>\n > {\n if (directive.startsWith(\"@\")) {\n throw new Error(\n \"directive name should not start with '@', it will be prepended automatically\",\n );\n }\n return new FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, XArgs>\n >(this, undefined, directive, args);\n }\n\n get value(): FieldOptionsValue {\n return (this._value ??= this._buildValue());\n }\n\n private _buildValue(): FieldOptionsValue {\n let alias: string | undefined;\n const directives = new Map<string, DirectiveArgs>();\n\n for (\n let node: FieldOptions<string, any, any> | undefined = this;\n node;\n node = node._prev\n ) {\n if (node._alias !== undefined && alias === undefined) {\n alias = node._alias;\n }\n if (node._directive !== undefined && !directives.has(node._directive)) {\n const args = node._directiveArgs;\n directives.set(\n node._directive,\n args && Object.keys(args).length !== 0 ? args : undefined,\n );\n }\n }\n\n return { alias, directives };\n }\n}\n\nexport const createFieldOptions = <TAlias extends string>(): FieldOptions<\n TAlias,\n {},\n {}\n> => {\n return new FieldOptions<TAlias, {}, {}>();\n};\n","/**\n * 枚举/输入类型元数据\n *\n * 用于 GraphQL query 序列化时区分 enum 和 input object 类型:\n * - enum 值直接输出(不加引号):`status: ACTIVE`\n * - input object 递归展开字段:`input: { name: \"foo\" }`\n * - 普通字符串加引号输出:`name: \"foo\"`\n */\n\n/** 枚举/输入类型元数据表,按类型名索引 */\nexport type EnumInputMetadata = ReadonlyMap<string, EnumInputMetaType>;\n\n/** 单个枚举或输入类型的元信息 */\nexport interface EnumInputMetaType {\n /** 区分枚举还是输入类型 */\n readonly type: \"ENUM\" | \"INPUT\";\n /** GraphQL 类型名 */\n readonly name: string;\n /** INPUT 类型的字段映射(ENUM 没有字段,为 undefined) */\n readonly fields?: ReadonlyMap<string, EnumInputMetaType | undefined>;\n /** INPUT 字段的 GraphQL 类型名(保留 []/!) */\n readonly fieldGraphQLTypeMap?: ReadonlyMap<string, string>;\n}\n\n/** 构建器输入:输入类型的字段描述 */\nexport interface RawField {\n readonly name: string;\n readonly typeName: string;\n readonly graphqlTypeName?: string;\n readonly isLeaf?: boolean;\n}\n\n/**\n * 元数据构建器\n *\n * codegen 生成的代码会调用此构建器来注册 schema 中的 enum/input 类型:\n * ```ts\n * const builder = new EnumInputMetadataBuilder();\n * builder.add(\"Status\"); // enum\n * builder.add(\"CreateInput\", [{name: \"status\", typeName: \"Status\"}]); // input\n * export const ENUM_INPUT_METADATA = builder.build();\n * ```\n */\nexport class EnumInputMetadataBuilder {\n private typeMap = new Map<string, ReadonlyArray<RawField> | undefined>();\n private static readonly BUILTIN_SCALARS = new Set([\n \"ID\",\n \"String\",\n \"Int\",\n \"Float\",\n \"Boolean\",\n ]);\n\n /** 注册一个枚举/输入类型。无 fields 参数表示 ENUM,有则表示 INPUT */\n add(name: string, fields?: ReadonlyArray<RawField>): this {\n this.typeMap.set(name, fields);\n return this;\n }\n\n /** 构建不可变的元数据表 */\n build(): EnumInputMetadata {\n const result = new Map<string, EnumInputMetaType>();\n const resolve = (name: string): EnumInputMetaType => {\n const existing = result.get(name);\n if (existing) return existing;\n\n if (!this.typeMap.has(name)) {\n throw new Error(`Unknown enum/input type: '${name}'`);\n }\n\n const rawFields = this.typeMap.get(name);\n let fields: Map<string, EnumInputMetaType | undefined> | undefined;\n let fieldGraphQLTypeMap: Map<string, string> | undefined;\n if (rawFields) {\n fields = new Map();\n fieldGraphQLTypeMap = new Map();\n for (const {\n name: fieldName,\n typeName,\n graphqlTypeName,\n isLeaf,\n } of rawFields) {\n let resolved: EnumInputMetaType | undefined;\n const treatAsLeaf =\n isLeaf || EnumInputMetadataBuilder.BUILTIN_SCALARS.has(typeName);\n if (!treatAsLeaf) {\n if (!this.typeMap.has(typeName)) {\n throw new Error(`Unknown enum/input type: '${typeName}'`);\n }\n resolved = resolve(typeName);\n }\n fields.set(fieldName, resolved);\n if (graphqlTypeName) {\n fieldGraphQLTypeMap.set(fieldName, graphqlTypeName);\n }\n }\n }\n\n const metaType: EnumInputMetaType = {\n type: rawFields === undefined ? \"ENUM\" : \"INPUT\",\n name,\n fields,\n fieldGraphQLTypeMap,\n };\n result.set(name, metaType);\n return metaType;\n };\n\n for (const name of this.typeMap.keys()) {\n resolve(name);\n }\n return result;\n }\n}\n","import { SelectionImpl } from \"./selection\";\nimport { __fragment_spread } from \"./types\";\nimport { runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n DirectiveArgs,\n FragmentSpread,\n ValueOrThunk,\n} from \"./types\";\nimport {\n SchemaType,\n createSchemaType,\n resolveRegisteredSchemaType,\n} from \"./schema\";\nimport { createFieldOptions, FieldOptionsValue } from \"./field-options\";\nimport { ParameterRef } from \"./parameter\";\nimport { EnumInputMetadata, EnumInputMetadataBuilder } from \"./enum-metadata\";\n\nexport { createSchemaType };\n\n// ─── Public factory ───────────────────────────────────────────────────\n\nexport const createSelection = <\n E extends string,\n F extends Selection<E, object, object>,\n>(\n schemaType: SchemaType<E>,\n enumInputMetadata: EnumInputMetadata,\n unionEntityTypes: string[] | undefined,\n): F => {\n return new Proxy(\n new SelectionImpl(\n [schemaType, enumInputMetadata, unionEntityTypes],\n false,\n \"\",\n ),\n proxyHandler(schemaType),\n ) as unknown as F;\n};\n\n// ─── Property access proxy handler ────────────────────────────────────\n\nconst BUILT_DIRECTIVES = new Set([\n \"$omit\",\n \"$alias\",\n \"$directive\",\n \"$include\",\n \"$skip\",\n \"$on\",\n \"$use\",\n]);\n\nconst resolveValueOrThunk = <T>(value: ValueOrThunk<T>): T => {\n return typeof value === \"function\" ? (value as () => T)() : value;\n};\n\nconst createChildSelectionProxy = (\n schemaType: SchemaType,\n enumInputMetadata: EnumInputMetadata,\n) => {\n return new Proxy(\n new SelectionImpl([schemaType, enumInputMetadata, undefined], false, \"\"),\n proxyHandler(schemaType),\n );\n};\n\nconst resolveAutoPropagatedArgs = (\n declaredArgTypeMap: ReadonlyMap<string, string> | undefined,\n providedArgs: Record<string, unknown> | undefined,\n): { [key: string]: unknown } | undefined => {\n // Default variable propagation: if a field declares args, bind each arg to a\n // same-name variable by default (e.g. `id: $id`).\n if (!declaredArgTypeMap?.size) {\n return providedArgs;\n }\n\n const autoArgs: Record<string, unknown> = {};\n for (const argName of declaredArgTypeMap.keys()) {\n autoArgs[argName] = ParameterRef.of(argName);\n }\n if (!providedArgs) {\n return autoArgs;\n }\n return { ...autoArgs, ...providedArgs };\n};\n\nconst resolveAssociationTarget = (\n fieldName: string,\n fieldTargetTypeName: string | undefined,\n ownerTypeName: string,\n): SchemaType => {\n if (!fieldTargetTypeName) {\n throw new Error(`Field \"${fieldName}\" has no target type`);\n }\n const targetSchemaType = resolveRegisteredSchemaType(fieldTargetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${fieldTargetTypeName}\" for field \"${fieldName}\" on \"${ownerTypeName}\"`,\n );\n }\n return targetSchemaType;\n};\n\nconst parseAssociationArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let childSelectionFactory: ((f: unknown) => unknown) | undefined;\n let childSelection: SelectionImpl<string, object, object> | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n childSelection = arg;\n } else if (typeof arg === \"function\") {\n childSelectionFactory = arg as typeof childSelectionFactory;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, childSelectionFactory, childSelection };\n};\n\nconst parseMethodArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let child: SelectionImpl<string, object, object> | undefined;\n let optionsValue: FieldOptionsValue | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n child = arg;\n } else if (typeof arg === \"function\") {\n optionsValue = arg(createFieldOptions()).value;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, child, optionsValue };\n};\n\nconst findLastFieldSelection = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n) => {\n const byKey = selection.fieldMap.get(lastField);\n if (byKey) return byKey;\n // `lastField` can refer to a field removed earlier in the chain.\n const byName = selection.findFieldsByName(lastField);\n return byName.length ? byName[0] : undefined;\n};\n\nconst rewriteLastFieldWithOptions = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n optionsValue: FieldOptionsValue,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n let current = selection.removeField(lastField);\n current = current.addField(\n lastField,\n existing?.args as { [key: string]: unknown } | undefined,\n existing?.childSelections?.[0] as\n | SelectionImpl<string, object, object>\n | undefined,\n optionsValue,\n );\n return current;\n};\n\nconst mergeLastFieldDirective = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n directiveName: string,\n directiveArgs: DirectiveArgs,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n const directives = new Map<string, DirectiveArgs>(\n existing?.fieldOptionsValue?.directives ?? [],\n );\n directives.set(directiveName, directiveArgs);\n const optionsValue: FieldOptionsValue = {\n alias: existing?.fieldOptionsValue?.alias,\n directives,\n };\n return rewriteLastFieldWithOptions(selection, lastField, optionsValue);\n};\n\nconst proxyHandler = (\n schemaType: SchemaType,\n): ProxyHandler<SelectionImpl<string, object, object>> => {\n const handler: ProxyHandler<SelectionImpl<string, object, object>> = {\n get: (\n target: SelectionImpl<string, object, object>,\n p: string | symbol,\n _receiver: unknown,\n ): unknown => {\n if (p === \"schemaType\") return schemaType;\n\n if (typeof p === \"string\") {\n // Built-in $-prefixed methods\n if (BUILT_DIRECTIVES.has(p)) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n // Known field\n else if (schemaType.fields.has(p)) {\n const field = schemaType.fields.get(p)!;\n\n // Association fields use callback syntax (`field(args?, childBuilder)`),\n // so this branch cannot reuse `methodHandler`.\n if (field.isAssociation || field.targetTypeName !== undefined) {\n return (...argArray: unknown[]) => {\n const targetSchemaType = resolveAssociationTarget(\n p,\n field.targetTypeName,\n schemaType.name,\n );\n let { args, childSelectionFactory, childSelection } =\n parseAssociationArgs(argArray);\n\n if (childSelectionFactory) {\n childSelection = childSelectionFactory(\n createChildSelectionProxy(\n targetSchemaType,\n (target as any)._enumInputMetadata,\n ),\n ) as typeof childSelection;\n }\n if (!childSelection) {\n throw new Error(`Field \"${p}\" requires a child selection`);\n }\n\n // Entry #1 for default arg handling:\n // association fields called without explicit args.\n const resolvedArgs = resolveAutoPropagatedArgs(\n field.argGraphQLTypeMap,\n args,\n );\n\n return new Proxy(\n target.addField(p, resolvedArgs, childSelection),\n handler,\n );\n };\n }\n\n // Scalar with args → method\n if (field.isFunction) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n\n // Plain scalar → property access\n return new Proxy(target.addField(p), handler);\n }\n }\n return Reflect.get(target, p, target);\n },\n };\n return handler;\n};\n\n// ─── Method call proxy handler ────────────────────────────────────────\n\nconst methodHandler = (\n targetSelection: SelectionImpl<string, object, object>,\n handler: ProxyHandler<SelectionImpl<string, object, object>>,\n field: string,\n): ProxyHandler<Function> => {\n return {\n apply: (_1: Function, _2: unknown, argArray: unknown[]): unknown => {\n // $on(...) – inline fragment embedding\n if (field === \"$on\") {\n let childSelection: ExecutableSelection<string, object, object>;\n\n if (\n typeof argArray[0] === \"string\" &&\n typeof argArray[1] === \"function\"\n ) {\n const targetTypeName = argArray[0] as string;\n const builder = argArray[1] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = resolveRegisteredSchemaType(targetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${targetTypeName}\" for $on`,\n );\n }\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else if (typeof argArray[0] === \"function\") {\n const builder = argArray[0] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = targetSelection.schemaType;\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else {\n throw new Error(\n \"$on requires a builder or (typeName, builder) arguments\",\n );\n }\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n undefined,\n ),\n handler,\n );\n }\n\n // $use(fragment) – named fragment spread\n if (field === \"$use\") {\n const fragment = resolveValueOrThunk(\n argArray[0] as ValueOrThunk<\n FragmentSpread<string, string, object, object>\n >,\n );\n if (!fragment || !fragment[__fragment_spread]) {\n throw new Error(\"$use requires a fragment created by fragment$\");\n }\n const childSelection = fragment.selection as ExecutableSelection<\n string,\n object,\n object\n >;\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n fragment.name,\n ),\n handler,\n );\n }\n\n // $omit(...fieldNames) – remove multiple fields\n if (field === \"$omit\") {\n let current: SelectionImpl<string, object, object> = targetSelection;\n for (const fieldName of argArray) {\n if (typeof fieldName === \"string\") {\n current = current.removeField(fieldName);\n }\n }\n return new Proxy(current, handler);\n }\n\n // $alias(alias) – rename the last selected field\n if (field === \"$alias\") {\n const alias = argArray[0] as string;\n const lastField = targetSelection.lastField;\n if (!lastField)\n throw new Error(\"$alias requires a preceding field selection\");\n const existing = findLastFieldSelection(targetSelection, lastField);\n const optionsValue: FieldOptionsValue = {\n alias,\n directives: new Map(existing?.fieldOptionsValue?.directives ?? []),\n };\n const current = rewriteLastFieldWithOptions(\n targetSelection,\n lastField,\n optionsValue,\n );\n return new Proxy(current, handler);\n }\n\n // $directive(directiveName, args?) – field-level if there is a last field, otherwise selection-level\n if (field === \"$directive\") {\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n ),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // $include(condition) / $skip(condition)\n if (field === \"$include\" || field === \"$skip\") {\n const directiveName = field === \"$include\" ? \"include\" : \"skip\";\n const directiveArgs = { if: argArray[0] } as DirectiveArgs;\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(directiveName, directiveArgs),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n directiveName,\n directiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // Regular field method call\n let { args, child, optionsValue } = parseMethodArgs(argArray);\n\n // Auto-parameterize unset args\n\n // Entry #2 for default arg handling:\n // method-style fields called without explicit args.\n const declaredArgTypeMap =\n targetSelection.schemaType.fields.get(field)?.argGraphQLTypeMap;\n const resolvedArgs = resolveAutoPropagatedArgs(declaredArgTypeMap, args);\n\n return new Proxy(\n targetSelection.addField(field, resolvedArgs, child, optionsValue),\n handler,\n );\n },\n };\n};\n\n// ─── Sentinel ─────────────────────────────────────────────────────────\n\nconst DUMMY = () => {};\n\nexport const SELECTION_TARGET = new SelectionImpl(\n [\n createSchemaType(\"Any\", \"OBJECT\", [], []),\n new EnumInputMetadataBuilder().build(),\n undefined,\n ],\n false,\n \"\",\n);\n","export const cyrb53 = (str: string, seed: number = 0): string => {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(36);\n};\n"],"mappings":";AAKA,MAAa,YAA2B,OAAO,sBAAsB;AAoCrE,SAAgB,UAId,WAA6D;AAC7D,QAAQ,UAAoD;;AA4C9D,IAAa,cAAb,MAAyB;CACvB,YACE,AAAS,OACT,AAAS,iBAA0B,MACnC;EAFS;EACA;;;AAIb,MAAa,oBAAoB,OAAO,oBAAoB;AAE5D,IAAsB,iBAAtB,MAKE;CACA,CAAU,qBAAqB;CAE/B,AAAU,YACR,AAAS,MACT,AAAS,WACT;EAFS;EACA;;;AAIb,IAAa,cAAb,cAKU,eAAgD;CACxD,YACE,MACA,WACA;AACA,QAAM,MAAM,UAAU;;;;;;ACvD1B,MAAM,uCAAuB,IAAI,KAAyB;AAC1D,MAAM,+CAA+B,IAAI,KAA+B;AACxE,MAAM,wCAAwB,IAAI,KAAa;AAE/C,MAAa,+BACX,aAC2B;CAC3B,MAAM,aAAa,qBAAqB,IAAI,SAAS;AACrD,KAAI,WACF,QAAO;CAGT,MAAM,UAAU,6BAA6B,IAAI,SAAS;AAC1D,KAAI,CAAC,QACH;AAEF,KAAI,sBAAsB,IAAI,SAAS,CACrC,OAAM,IAAI,MACR,oDAAoD,SAAS,GAC9D;AAGH,uBAAsB,IAAI,SAAS;AACnC,KAAI;AAEF,qBADgB,SAAS,CACE;WACnB;AACR,wBAAsB,OAAO,SAAS;;AAGxC,QAAO,qBAAqB,IAAI,SAAS;;AAG3C,MAAa,6BACX,UACA,YACG;AACH,KAAI,CAAC,6BAA6B,IAAI,SAAS,CAC7C,8BAA6B,IAAI,UAAU,QAAQ;;AAkBvD,MAAa,oBACX,MACA,UACA,YACA,mBACkB;CAClB,MAAM,mCAAmB,IAAI,KAA0B;AAEvD,MAAK,MAAM,QAAQ,eACjB,KAAI,OAAO,SAAS,SAClB,kBAAiB,IAAI,MAAM,WAAW,MAAM,0BAAU,IAAI,KAAK,CAAC,CAAC;MAC5D;EACL,MAAM,yBAAS,IAAI,KAAqB;AACxC,MAAI,KAAK,kBACP,MAAK,MAAM,KAAK,KAAK,kBACnB,QAAO,IAAI,GAAG,KAAK,kBAAkB,GAAI;AAG7C,mBAAiB,IACf,KAAK,MACL,WACE,KAAK,MACL,KAAK,UACL,QACA,KAAK,gBACL,KAAK,YACN,CACF;;CAKL,IAAI;CAEJ,MAAM,SAAwB;EAC5B;EACA;EACA,YAAY;EACZ,WAAW;EACX,IAAI,SAA2C;AAC7C,OAAI,CAAC,QACH,WACE,WAAW,WAAW,IAAI,mBAAmB,cAAc,OAAO;AAEtE,UAAO;;EAEV;AAED,oBAAmB,OAAO;AAC1B,QAAO;;AAKT,MAAM,cACJ,MACA,UACA,mBACA,gBACA,gBACgB;CAChB,MAAM,WAAW,aAAa;CAC9B,MAAM,gBAAgB,aAAa,eAAe;AAElD,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,YACE,kBAAkB,SAAS,KAC3B,iBACA,mBAAmB;EACrB,eAAe,eAAe;EAC/B;;AAGH,MAAM,iBAAiB,SAAuD;CAC5E,MAAM,yBAAS,IAAI,KAA0B;AAC7C,UAAS,MAAM,OAAO;AACtB,QAAO;;AAGT,MAAM,YAAY,MAAkB,QAAkC;AACpE,MAAK,MAAM,CAAC,MAAM,UAAU,KAAK,UAC/B,KAAI,IAAI,MAAM,MAAM;AAEtB,MAAK,MAAM,aAAa,KAAK,WAC3B,UAAS,WAAW,IAAI;;AAI5B,MAAM,sBAAsB,SAAqB;CAC/C,MAAM,WAAW,qBAAqB,IAAI,KAAK,KAAK;AACpD,KAAI,CAAC,UAAU;AACb,uBAAqB,IAAI,KAAK,MAAM,KAAK;AACzC;;AAGF,KAAI,SAAS,UAAU,OAAO,KAAK,UAAU,KAC3C,sBAAqB,IAAI,KAAK,MAAM,KAAK;;;;;;;;;;;AC5N7C,MAAa,WAA0B,OAAO,yBAAyB;AAEvE,IAAa,eAAb,MAAa,aAAmC;CAC9C,CAAU,YAAY;CAEtB,AAAQ,YAEN,AAAS,MAQT,AAAS,cACT;EATS;EAQA;AAET,MAAI,KAAK,WAAW,IAAI,CACtB,OAAM,IAAI,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;CA0B3D,OAAO,GACL,MACA,cACqB;AACrB,SAAO,IAAI,aAAoB,MAAM,aAAa;;;;;;AC5CtD,MAAM,iBAAmE;CACvE,OAAO,CAAC,KAAK,IAAI;CACjB,WAAW,CAAC,KAAK,IAAI;CACrB,OAAO,CAAC,KAAK,IAAI;CAClB;AAED,MAAM,qBAAyD;CAC7D,WAAW;CACX,OAAO;CACR;AASD,IAAa,cAAb,MAAyB;CACvB,AAAQ,SAAS;CACjB,AAAQ,YAAY;CACpB,AAAiB,SAAuB,EAAE;CAE1C,YAAY,AAAiB,SAAiB,KAAM;EAAvB;;CAE7B,KAAK,OAAqB;EACxB,MAAM,QAAQ,KAAK,OAAO,GAAG,GAAG;AAChC,MAAI,SAAS,SAAS,CAAC,MAAM,OAAO;AAClC,OAAI,MAAM,WAAY,MAAK,WAAW;AACtC,SAAM,QAAQ;;EAEhB,IAAI,YAAY;AAChB,SAAO,WAAW;AAChB,QAAK,aAAa;GAClB,MAAM,aAAa,UAAU,QAAQ,KAAK;AAC1C,OAAI,eAAe,IAAI;AACrB,SAAK,UAAU,UAAU,UAAU,GAAG,WAAW;AACjD,SAAK,WAAW;AAChB,gBAAY,UAAU,UAAU,aAAa,EAAE;UAC1C;AACL,SAAK,UAAU;AACf,gBAAY;;;AAGhB,SAAO;;CAGT,MAAM,SAAuB,QAA0B;EACrD,MAAM,EAAE,MAAM,aAAa,OAAO,WAAW,QAAQ,WAAW;EAChE,MAAM,CAAC,MAAM,SAAS,eAAe;AAErC,MAAI,OAAQ,MAAK,KAAK,OAAO;AAC7B,OAAK,KAAK,KAAK;AAEf,OAAK,OAAO,KAAK;GACf;GACA;GACA,WAAW,aAAa,mBAAmB;GAC3C,OAAO;GACR,CAAC;AAEF,MAAI;AACF,WAAQ;YACA;AACR,QAAK,OAAO,KAAK;AACjB,OAAI,cAAc,CAAC,KAAK,UAAW,MAAK,WAAW;AACnD,QAAK,KAAK,MAAM;AAChB,OAAI,OAAQ,MAAK,KAAK,OAAO;;AAG/B,SAAO;;CAGT,UAAU,OAAsB;EAC9B,MAAM,QAAQ,KAAK,OAAO,GAAG,GAAG;AAChC,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,oBAAoB;AAChD,MAAI,MAAM,OAAO;GACf,MAAM,MAAM,SAAS,MAAM;AAC3B,OAAI,IAAK,MAAK,KAAK,IAAI;AACvB,OAAI,MAAM,WAAY,MAAK,WAAW;;AAExC,SAAO;;CAGT,WAAmB;AACjB,SAAO,KAAK;;CAGd,AAAQ,cAAoB;AAC1B,MAAI,KAAK,WAAW;AAClB,QAAK,UAAU,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO;AACrD,QAAK,YAAY;;;CAIrB,AAAQ,YAAkB;AACxB,OAAK,UAAU;AACf,OAAK,YAAY;;;;;;ACtFrB,IAAa,gBAAb,MAAa,cAI4B;CAEvC,CAAU,aAAkC;CAE5C,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YACE,AAAiB,MAGjB,AAAiB,WACjB,AAAiB,QACjB,AAAiB,OACjB,AAAiB,QACjB,AAAiB,oBACjB,AAAiB,YACjB,AAAiB,gBACjB,AAAiB,gBACjB;EAXiB;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;CAKnB,IAAI,YAAoB;AACtB,SAAO,KAAK;;CAKd,IAAY,cAA6B;AACvC,SAAO,MAAM,QAAQ,KAAK,KAAK,GAC1B,KAAK,KAAK,KACT,KAAK,KACJ;;CAGT,IAAY,qBAAwC;AAClD,SAAO,MAAM,QAAQ,KAAK,KAAK,GAC1B,KAAK,KAAK,KACV,KAAK,KAA+C;;CAG3D,IAAY,kBAAwC;AAClD,SAAO,MAAM,QAAQ,KAAK,KAAK,GAC3B,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,IAAI,SACpC,KAAK,KAAK,KACV,SACD,KAAK,KAA+C;;CAG3D,IAAY,QAA2D;AACrE,SAAO,MAAM,QAAQ,KAAK,KAAK,GAC3B,SACC,KAAK;;CAGZ,IAAI,aAA4B;AAC9B,SAAO,KAAK;;CAGd,IAAI,gBAAoC;AACtC,MAAI,KAAK,mBAAmB,OAC1B,QAAO,KAAK;AAEd,SAAO,KAAK,OAAO;;CAKrB,SACE,OACA,MACA,OACA,cACG;AACH,SAAO,IAAI,cACT,MACA,OACA,OACA,MACA,OACA,aACD;;CAGH,YACE,OACG;AACH,MAAI,UAAU,aAAc,OAAM,IAAI,MAAM,+BAA+B;AAC3E,SAAO,IAAI,cAAc,MAAM,MAAM,MAAM;;CAG7C,cACE,OACA,cACG;EACH,IAAI;AACJ,MAAI,iBAAiB,QAAW;AAC9B,OAAI,aAAa,WAAW,EAC1B,OAAM,IAAI,MAAM,4BAA4B;AAC9C,OAAI,aAAa,WAAW,MAAM,CAChC,OAAM,IAAI,MAAM,uCAAuC;AACzD,eAAY,OAAO;aAEnB,MAAM,YAAY,SAAS,KAAK,YAAY,QAC5C,MAAM,oBAAoB,OAE1B,aAAY;MAEZ,aAAY,UAAU,MAAM,YAAY;AAE1C,SAAO,IAAI,cACT,MACA,OACA,WACA,QACA,MACD;;CAGH,aACE,WACA,eACG;AACH,SAAO,IAAI,cACT,MACA,OACA,IACA,QACA,QACA,QACA,WACA,cACD;;CAGH,kBACE,eACG;AACH,MAAI,kBAAkB,OACpB,QAAO;AAET,MAAI,cAAc,MAAM,CAAC,WAAW,EAClC,OAAM,IAAI,MAAM,gCAAgC;AAElD,SAAO,IAAI,cACT,MACA,OACA,IACA,QACA,QACA,QACA,QACA,QACA,cACD;;CAKH,IAAI,WAAgD;AAClD,SAAQ,KAAK,cAAc,KAAK,gBAAgB;;CAGlD,IAAI,eAAmD;AACrD,SAAQ,KAAK,kBAAkB,KAAK,oBAAoB;;CAG1D,IAAI,kBAAiE;AACnE,SAAO,KAAK,YAAY,CAAC;;CAK3B,UAAU,UAA8C;EACtD,MAAM,QAAQ,KAAK,SAAS,IAAI,SAAS;AACzC,MAAI,MAAO,QAAO;AAClB,OAAK,MAAM,GAAG,MAAM,KAAK,SACvB,KAAI,EAAE,KAAK,WAAW,MAAM,IAAI,EAAE,gBAChC,MAAK,MAAM,SAAS,EAAE,iBAAiB;GACrC,MAAM,SAAS,UAAU,MAAM,CAAC,UAAU,SAAS;AACnD,OAAI,OAAQ,QAAO;;;CAO3B,iBAAiB,WAA8C;EAC7D,MAAM,MAAwB,EAAE;AAChC,OAAK,qBAAqB,WAAW,IAAI;AACzC,SAAO;;CAGT,gBAAgB,WAA+C;EAC7D,MAAM,SAAS,KAAK,iBAAiB,UAAU;AAC/C,MAAI,OAAO,SAAS,EAClB,OAAM,IAAI,MACR,0BAA0B,UAAU,0BAA0B,KAAK,YAAY,KAAK,GACrF;AAEH,SAAO,OAAO;;CAKhB,WAAmB;AACjB,SAAO,KAAK,YAAY,CAAC;;CAG3B,mBAA2B;AACzB,SAAO,KAAK,YAAY,CAAC;;CAG3B,SAAiB;AACf,SAAO,KAAK,UAAU,KAAK,YAAY,CAAC;;CAO1C,AAAQ,iBAAsD;EAE5D,MAAM,QAAiD,EAAE;AACzD,OACE,IAAI,IAAuD,MAC3D,GACA,IAAI,EAAE,MAEN,KAAI,EAAE,WAAW,GAAI,OAAM,KAAK,EAAE;EAGpC,MAAM,sBAAM,IAAI,KAA6B;AAG7C,OAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;GAC1C,MAAM,IAAI,MAAM;GAChB,MAAM,MAAM,EAAE,oBAAoB,SAAS,EAAE;AAE7C,OAAI,EAAE,OAAO,WAAW,MAAM,EAAE;IAC9B,IAAI,WAAW,IAAI,IAAI,IAAI,EAAE;AAG7B,QAAI,CAAC,UAAU;AACb,gBAAW,EAAE;AACb,SAAI,IAAI,KAAK;MACX,MAAM,EAAE;MACR,QAAQ;MACR,iBAAiB;MAClB,CAAC;;AAEJ,aAAS,KAAK,EAAE,OAAQ;cACf,EAAE,UACX,KAAI,OAAO,IAAI;OAEf,KAAI,IAAI,KAAK;IACX,MAAM,EAAE;IACR,iBAAiB,EAAE,YAAY,OAAO,IAAI,EAAE,OAAO,EAC/C;IACJ,MAAM,EAAE;IACR,mBAAmB,EAAE;IACrB,QAAQ,EAAE,YAAY,OAAO,IAAI,EAAE,OAAO,EAAE,YAAY;IACxD,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG;IAC1C,CAAC;;AAGN,SAAO;;CAGT,AAAQ,qBAAyD;EAC/D,MAAM,sBAAM,IAAI,KAA4B;AAC5C,OACE,IAAI,IAAuD,MAC3D,GACA,IAAI,EAAE,MAEN,KAAI,EAAE,eAAe,UAAa,CAAC,IAAI,IAAI,EAAE,WAAW,CACtD,KAAI,IAAI,EAAE,YAAY,EAAE,eAAe;AAG3C,SAAO;;CAGT,AAAQ,qBAAqB,WAAmB,KAAuB;AACrE,OAAK,MAAM,SAAS,KAAK,SAAS,QAAQ,CACxC,KAAI,MAAM,SAAS,UACjB,KAAI,KAAK,MAAM;WACN,MAAM,KAAK,WAAW,MAAM,IAAI,MAAM,gBAC/C,MAAK,MAAM,SAAS,MAAM,gBACxB,KAAI,KAAK,GAAG,UAAU,MAAM,CAAC,iBAAiB,UAAU,CAAC;;CAQjE,AAAQ,aAA+B;AACrC,SAAQ,KAAK,YAAY,UAAU,KAAK;;;AAI5C,MAAa,qBACX,WACA,kBAGE,UACA,kBAAkB,cAAc;AAYpC,MAAM,aACJ,SACqB;CACrB,MAAM,SAAS,IAAI,aAAa;CAChC,MAAM,iBAAiB,IAAI,aAAa;CACxC,IAAI,MAAM,IAAI,iBAAiB,OAAO;AAEtC,KAAI,iBAAiB,KAAK,aAAa;AACvC,QAAO,MAAM;EAAE,MAAM;EAAS,YAAY;EAAM,QAAQ;EAAM,QAAQ;AACpE,MAAI,gBAAgB,KAAK;GACzB;CAEF,MAAM,oCAAoB,IAAI,KAAa;AAC3C,QAAO,MAAM;EACX,MAAM,cAAc,IAAI;AACxB,MAAI,YAAY,SAAS,EAAG;AAC5B,QAAM,IAAI,iBAAiB,gBAAgB,IAAI;AAC/C,OAAK,MAAM,CAAC,MAAM,aAAa,YAC7B,KAAI,kBAAkB,IAAI,KAAK,EAAE;GAC/B,MAAM,UAAU,UAAU,SAAS;AACnC,kBAAe,KAAK,YAAY,KAAK,MAAM,QAAQ,WAAW,KAAK,GAAG;AACtE,OAAI,iBAAiB,QAAQ,aAAa;AAC1C,kBAAe,MACb;IAAE,MAAM;IAAS,YAAY;IAAM,QAAQ;IAAM,QAC3C;AACJ,QAAI,gBAAgB,SAAS;KAEhC;;;AAKP,QAAO;EACL,MAAM,OAAO,UAAU;EACvB,cAAc,eAAe,UAAU;EACvC,iBAAiB,IAAI;EACtB;;AAGH,IAAM,mBAAN,MAAM,iBAAiB;CACrB,AAAS,mCAAmB,IAAI,KAG7B;CACH,AAAiB,sCAAsB,IAAI,KAAqB;CAChE,AAAiB,yCAAyB,IAAI,SAG3C;CACH,AAAS;CAET,YACE,AAAiB,QACjB,MACA;EAFiB;AAGjB,OAAK,kBAAkB,MAAM,mCAAmB,IAAI,KAAK;;CAG3D,gBAAgB,KAAwC;EACtD,MAAM,IAAI,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO;EAC5C,MAAM,UAAU,UAAU,IAAI;AAC9B,OAAK,MAAM,SAAS,QAAQ,SAAS,QAAQ,EAAE;GAC7C,MAAM,OAAO,MAAM;GACnB,MAAM,WAAW,MAAM;AAIvB,OAFE,KAAK,WAAW,OAAO,IAAI,CAAC,KAAK,WAAW,UAAU,IAEnC,UAAU,QAAQ;IACrC,MAAM,WAAW,KAAK,UAAU,EAAa,CAAC,MAAM;AACpD,SAAK,MAAM,KAAK,SAEd,GAAE,OADkB,KAAK,2BAA2B,UAAU,EAAE,CAC3C,IAAI;AAE3B;;AAGF,OAAI,SAAS,OAAO;IAClB,MAAM,QAAQ,MAAM,mBAAmB;AACvC,QAAI,SAAS,UAAU,KAAM,GAAE,GAAG,MAAM,IAAI;AAC5C,MAAE,KAAK;AACP,QAAI,MAAM,iBAAiB;KACzB,MAAM,OAAQ,IAAY;AAC1B,UAAK,WACH,MAAM,MACN,MAAM,iBACN,MACA,UAAU,QAAQ,WAAW,KAAK,GAAG,KAAK,GAC3C;;AAEH,SAAK,iBAAiB,MAAM,mBAAmB,WAAW;;AAE5D,OAAI,UAAU,OACZ,KAAI,SAAS,MAEX,MAAK,MAAM,KAAK,SAAU,MAAK,gBAAgB,EAAE;QAC5C;AACL,MAAE,IAAI;AACN,SAAK,OAAO,MAAM;KAAE,MAAM;KAAS,YAAY;KAAM,QAAQ;AAC3D,UAAK,MAAM,KAAK,SAAU,MAAK,gBAAgB,EAAE;MACjD;;AAGN,KAAE,KAAK;;;CAIX,AAAQ,2BACN,UACA,WACQ;AAER,MADuB,KAAK,iBAAiB,IAAI,SAAS,KACnC,UACrB,QAAO;EAGT,IAAI,aAAa,KAAK,uBAAuB,IAAI,UAAU;AAC3D,MAAI,CAAC,YAAY;AACf,gCAAa,IAAI,KAAqB;AACtC,QAAK,uBAAuB,IAAI,WAAW,WAAW;;EAExD,MAAM,WAAW,WAAW,IAAI,SAAS;AACzC,MAAI,SACF,QAAO;EAGT,IAAI,cAAc;EAClB,MAAM,WAAW,KAAK,iBAAiB,IAAI,YAAY;AACvD,MAAI,YAAY,aAAa,WAAW;GAEtC,IAAI,MADS,KAAK,oBAAoB,IAAI,SAAS,IAAI;AAEvD,UAAO,KAAK,iBAAiB,IAAI,GAAG,SAAS,GAAG,MAAM,CACpD,QAAO;AAET,QAAK,oBAAoB,IAAI,UAAU,MAAM,EAAE;AAC/C,iBAAc,GAAG,SAAS,GAAG;;AAG/B,OAAK,iBAAiB,IAAI,aAAa,UAAU;AACjD,aAAW,IAAI,UAAU,YAAY;AACrC,SAAO;;CAGT,iBAAiB,YAAiD;AAChE,MAAI,CAAC,WAAY;AACjB,OAAK,MAAM,CAAC,WAAW,SAAS,YAAY;AAC1C,QAAK,OAAO,KAAK,MAAM,YAAY;AACnC,QAAK,WAAW,MAAM,QAAW,QAAW,eAAe,UAAU,GAAG;;;CAI5E,AAAQ,WACN,MACA,mBACA,mBACA,aAAa,YACb;AACA,MAAI,CAAC,KAAM;EACX,MAAM,IAAI,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO;EAE5C,IAAI;AACJ,MAAI,mBAAmB;AACrB,cAAW;AACX,QAAK,MAAM,WAAW,KACpB,KAAI,kBAAkB,IAAI,QAAQ,KAAK,QAAW;AAChD,eAAW;AACX;SACK,SAAQ,KAAK,wBAAwB,UAAU;QAGxD,YAAW,OAAO,KAAK,KAAK,CAAC,WAAW;AAG1C,MAAI,SACF,MAAK,OAAO,MACV;GAAE,MAAM;GAAa,YAAY,gBAAgB,KAAK;GAAE,QAClD;AACJ,QAAK,MAAM,WAAW,MAAM;AAC1B,SAAK,OAAO,WAAW;IACvB,MAAM,MAAO,KAAiC;AAE9C,QAAI,mBAAmB;KACrB,MAAM,WAAW,kBAAkB,IAAI,QAAQ;AAC/C,SAAI,aAAa,OACf,KAAK,MAAkC,WAAW;MAChD,MAAM,MAAM;AACZ,WAAK,qBACH,KACA,UACA,OACA,GAAG,WAAW,GAAG,UAClB;AACD,QAAE,GAAG,QAAQ,KAAK,IAAI,OAAO;YACxB;AACL,QAAE,GAAG,QAAQ,IAAI;AACjB,WAAK,cACH,KACA,iBAAiB,aAAa,mBAAmB,SAAS,EAC1D,SACD;;SAGH,OAAM,IAAI,MAAM,qBAAqB,QAAQ,GAAG;eAG7C,MAAkC,WAAW;KAChD,MAAM,MAAM;AACZ,SAAI,CAAC,IAAI,aACP,OAAM,IAAI,MACR,gDAAgD,IAAI,KAAK,6CAC1D;AAEH,UAAK,qBACH,KACA,IAAI,cACJ,OACA,GAAG,WAAW,GAAG,UAClB;AACD,OAAE,GAAG,QAAQ,KAAK,IAAI,OAAO;WACxB;AACL,OAAE,GAAG,QAAQ,IAAI;AACjB,UAAK,cAAc,KAAK,QAAW,OAAU;;;IAKtD;;CAIL,AAAQ,cACN,OACA,UACA,cACA;EACA,MAAM,IAAI,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO;AAE5C,MAAI,SAAS,MAAM;AACjB,KAAE,OAAO;AACT;;AAEF,MAAI,OAAO,UAAU,UAAU;AAC7B,KAAE,MAAM,UAAU,CAAC;AACnB;;AAEF,MAAI,OAAO,UAAU,UAAU;AAC7B,KAAE,WAAW,QAAQ,KAAK,UAAU,MAAM,CAAC;AAC3C;;AAEF,MAAI,OAAO,UAAU,WAAW;AAC9B,KAAE,QAAQ,SAAS,QAAQ;AAC3B;;AAEF,MAAK,QAAoC,WAAW;GAClD,MAAM,MAAM;AACZ,OAAI,CAAC,gBAAgB,CAAC,IAAI,aACxB,OAAM,IAAI,MACR,6CAA6C,IAAI,KAAK,6CACvD;AAEH,QAAK,qBAAqB,KAAK,cAAc,MAAM,kBAAkB;AACrE,KAAE,IAAI,IAAI,OAAO;AACjB;;AAEF,MAAI,iBAAiB,aAAa;AAChC,KAAE,MAAM,iBAAiB,KAAK,UAAU,MAAM,MAAM,GAAG,MAAM,MAAM;AACnE;;AAGF,MAAI,MAAM,QAAQ,MAAM,IAAI,iBAAiB,KAAK;GAChD,MAAM,yBACJ,iBAAiB,gBAAgB,aAAa;AAChD,QAAK,OAAO,MAAM,EAAE,MAAM,SAAS,QAAQ;AACzC,SAAK,MAAM,KAAK,OAAO;AACrB,UAAK,OAAO,UAAU,KAAK;AAC3B,UAAK,cAAc,GAAG,UAAU,uBAAuB;;KAEzD;aACO,iBAAiB,IAC1B,MAAK,OAAO,MAAM,EAAE,MAAM,SAAS,QAAQ;AACzC,QAAK,MAAM,CAAC,GAAG,MAAM,OAAO;AAC1B,SAAK,OAAO,UAAU,KAAK;AAC3B,SAAK,OAAO,KAAK,EAAE;AACnB,MAAE,KAAK;AACP,SAAK,cACH,GACA,UAAU,QAAQ,IAAI,EAAE,EACxB,UAAU,qBAAqB,IAAI,EAAE,CACtC;;IAEH;WACO,OAAO,UAAU,SAC1B,MAAK,OAAO,MAAM,EAAE,MAAM,SAAS,QAAQ;AACzC,QAAK,MAAM,KAAK,OAAO;AACrB,SAAK,OAAO,UAAU,KAAK;AAC3B,SAAK,OAAO,KAAK,EAAE;AACnB,MAAE,KAAK;AACP,SAAK,cACF,MAAkC,IACnC,UAAU,QAAQ,IAAI,EAAE,EACxB,UAAU,qBAAqB,IAAI,EAAE,CACtC;;IAEH;;CAIN,AAAQ,qBACN,KACA,kBACA,uBAAuB,OACvB,UAAU,YACV;EACA,MAAM,WACJ,qBAAqB,uBAAuB,IAAI,eAAe;AACjE,MAAI,CAAC,SACH,OAAM,IAAI,MACR,gDAAgD,IAAI,KAAK,6CAC1D;AAEH,MAAI,IAAI,gBAAgB,IAAI,iBAAiB,SAC3C,OAAM,IAAI,MACR,cAAc,IAAI,KAAK,qCAAqC,QAAQ,cAAc,SAAS,gCAAgC,IAAI,aAAa,GAC7I;EAEH,MAAM,WAAW,KAAK,gBAAgB,IAAI,IAAI,KAAK;AACnD,MAAI,YAAY,SAAS,aAAa,SACpC,OAAM,IAAI,MACR,cAAc,IAAI,KAAK,0CAA0C,SAAS,SAAS,OAAO,SAAS,OAAO,UAAU,SAAS,OAAO,UACrI;AAEH,OAAK,gBAAgB,IAAI,IAAI,MAAM;GAAE;GAAU,QAAQ;GAAS,CAAC;;CAGnE,OAAe,aACb,MACA,UAC+B;AAC/B,MAAI,CAAC,QAAQ,CAAC,SAAU,QAAO;AAC/B,SAAO,KAAK,IAAI,SAAS,MAAM,UAAU,CAAC,KAAK,GAAG,CAAC;;CAGrD,OAAe,gBACb,UACoB;AACpB,MAAI,CAAC,SAAU,QAAO;EACtB,IAAI,aAAa,SAAS,MAAM;AAEhC,MAAI,WAAW,SAAS,IAAI,CAC1B,cAAa,WAAW,MAAM,GAAG,GAAG,CAAC,MAAM;AAE7C,MAAI,WAAW,WAAW,IAAI,IAAI,WAAW,SAAS,IAAI,CACxD,QAAO,WAAW,MAAM,GAAG,GAAG,CAAC,MAAM;AAEvC,SAAO;;;AAIX,MAAM,mBAAmB,QAA0B;CACjD,IAAI,OAAO;AACX,KAAI,MAAM,QAAQ,IAAI,CACpB,MAAK,MAAM,KAAK,KAAK;AACnB,MAAI,OAAO,MAAM,YAAY,CAAC,IAAI,UAAW,QAAO;AACpD,MAAI,EAAE,OAAO,EAAG,QAAO;;UAEhB,OAAO,QAAQ,YAAY,QAAQ,KAC5C,MAAK,MAAM,KAAK,QAAQ,QAAQ,IAAI,EAAE;EACpC,MAAM,IAAK,IAAyC;AACpD,MAAI,OAAO,MAAM,YAAY,CAAE,IAAgC,UAC7D,QAAO;AACT,MAAI,EAAE,OAAO,EAAG,QAAO;;AAG3B,QAAO;;;;;AClsBT,IAAa,eAAb,MAAa,aAIX;CACA,AAAQ;CAER,YACE,AAAiB,OACjB,AAAiB,QACjB,AAAiB,YACjB,AAAiB,gBACjB;EAJiB;EACA;EACA;EACA;;CAGnB,MACE,OACwD;AACxD,SAAO,IAAI,aACT,MACA,MACD;;CAGH,UACE,WACA,MAKA;AACA,MAAI,UAAU,WAAW,IAAI,CAC3B,OAAM,IAAI,MACR,+EACD;AAEH,SAAO,IAAI,aAIT,MAAM,QAAW,WAAW,KAAK;;CAGrC,IAAI,QAA2B;AAC7B,SAAQ,KAAK,WAAW,KAAK,aAAa;;CAG5C,AAAQ,cAAiC;EACvC,IAAI;EACJ,MAAM,6BAAa,IAAI,KAA4B;AAEnD,OACE,IAAI,OAAmD,MACvD,MACA,OAAO,KAAK,OACZ;AACA,OAAI,KAAK,WAAW,UAAa,UAAU,OACzC,SAAQ,KAAK;AAEf,OAAI,KAAK,eAAe,UAAa,CAAC,WAAW,IAAI,KAAK,WAAW,EAAE;IACrE,MAAM,OAAO,KAAK;AAClB,eAAW,IACT,KAAK,YACL,QAAQ,OAAO,KAAK,KAAK,CAAC,WAAW,IAAI,OAAO,OACjD;;;AAIL,SAAO;GAAE;GAAO;GAAY;;;AAIhC,MAAa,2BAIR;AACH,QAAO,IAAI,cAA8B;;;;;;;;;;;;;;;;AC/C3C,IAAa,2BAAb,MAAa,yBAAyB;CACpC,AAAQ,0BAAU,IAAI,KAAkD;CACxE,OAAwB,kBAAkB,IAAI,IAAI;EAChD;EACA;EACA;EACA;EACA;EACD,CAAC;;CAGF,IAAI,MAAc,QAAwC;AACxD,OAAK,QAAQ,IAAI,MAAM,OAAO;AAC9B,SAAO;;;CAIT,QAA2B;EACzB,MAAM,yBAAS,IAAI,KAAgC;EACnD,MAAM,WAAW,SAAoC;GACnD,MAAM,WAAW,OAAO,IAAI,KAAK;AACjC,OAAI,SAAU,QAAO;AAErB,OAAI,CAAC,KAAK,QAAQ,IAAI,KAAK,CACzB,OAAM,IAAI,MAAM,6BAA6B,KAAK,GAAG;GAGvD,MAAM,YAAY,KAAK,QAAQ,IAAI,KAAK;GACxC,IAAI;GACJ,IAAI;AACJ,OAAI,WAAW;AACb,6BAAS,IAAI,KAAK;AAClB,0CAAsB,IAAI,KAAK;AAC/B,SAAK,MAAM,EACT,MAAM,WACN,UACA,iBACA,YACG,WAAW;KACd,IAAI;AAGJ,SAAI,EADF,UAAU,yBAAyB,gBAAgB,IAAI,SAAS,GAChD;AAChB,UAAI,CAAC,KAAK,QAAQ,IAAI,SAAS,CAC7B,OAAM,IAAI,MAAM,6BAA6B,SAAS,GAAG;AAE3D,iBAAW,QAAQ,SAAS;;AAE9B,YAAO,IAAI,WAAW,SAAS;AAC/B,SAAI,gBACF,qBAAoB,IAAI,WAAW,gBAAgB;;;GAKzD,MAAM,WAA8B;IAClC,MAAM,cAAc,SAAY,SAAS;IACzC;IACA;IACA;IACD;AACD,UAAO,IAAI,MAAM,SAAS;AAC1B,UAAO;;AAGT,OAAK,MAAM,QAAQ,KAAK,QAAQ,MAAM,CACpC,SAAQ,KAAK;AAEf,SAAO;;;;;;ACxFX,MAAa,mBAIX,YACA,mBACA,qBACM;AACN,QAAO,IAAI,MACT,IAAI,cACF;EAAC;EAAY;EAAmB;EAAiB,EACjD,OACA,GACD,EACD,aAAa,WAAW,CACzB;;AAKH,MAAM,mBAAmB,IAAI,IAAI;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,MAAM,uBAA0B,UAA8B;AAC5D,QAAO,OAAO,UAAU,aAAc,OAAmB,GAAG;;AAG9D,MAAM,6BACJ,YACA,sBACG;AACH,QAAO,IAAI,MACT,IAAI,cAAc;EAAC;EAAY;EAAmB;EAAU,EAAE,OAAO,GAAG,EACxE,aAAa,WAAW,CACzB;;AAGH,MAAM,6BACJ,oBACA,iBAC2C;AAG3C,KAAI,CAAC,oBAAoB,KACvB,QAAO;CAGT,MAAM,WAAoC,EAAE;AAC5C,MAAK,MAAM,WAAW,mBAAmB,MAAM,CAC7C,UAAS,WAAW,aAAa,GAAG,QAAQ;AAE9C,KAAI,CAAC,aACH,QAAO;AAET,QAAO;EAAE,GAAG;EAAU,GAAG;EAAc;;AAGzC,MAAM,4BACJ,WACA,qBACA,kBACe;AACf,KAAI,CAAC,oBACH,OAAM,IAAI,MAAM,UAAU,UAAU,sBAAsB;CAE5D,MAAM,mBAAmB,4BAA4B,oBAAoB;AACzE,KAAI,CAAC,iBACH,OAAM,IAAI,MACR,+BAA+B,oBAAoB,eAAe,UAAU,QAAQ,cAAc,GACnG;AAEH,QAAO;;AAGT,MAAM,wBAAwB,aAAwB;CACpD,IAAI;CACJ,IAAI;CACJ,IAAI;AAEJ,MAAK,MAAM,OAAO,SAChB,KAAI,eAAe,cACjB,kBAAiB;UACR,OAAO,QAAQ,WACxB,yBAAwB;KAExB,QAAO;AAGX,QAAO;EAAE;EAAM;EAAuB;EAAgB;;AAGxD,MAAM,mBAAmB,aAAwB;CAC/C,IAAI;CACJ,IAAI;CACJ,IAAI;AAEJ,MAAK,MAAM,OAAO,SAChB,KAAI,eAAe,cACjB,SAAQ;UACC,OAAO,QAAQ,WACxB,gBAAe,IAAI,oBAAoB,CAAC,CAAC;KAEzC,QAAO;AAGX,QAAO;EAAE;EAAM;EAAO;EAAc;;AAGtC,MAAM,0BACJ,WACA,cACG;CACH,MAAM,QAAQ,UAAU,SAAS,IAAI,UAAU;AAC/C,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,UAAU,iBAAiB,UAAU;AACpD,QAAO,OAAO,SAAS,OAAO,KAAK;;AAGrC,MAAM,+BACJ,WACA,WACA,iBACG;CACH,MAAM,WAAW,uBAAuB,WAAW,UAAU;CAC7D,IAAI,UAAU,UAAU,YAAY,UAAU;AAC9C,WAAU,QAAQ,SAChB,WACA,UAAU,MACV,UAAU,kBAAkB,IAG5B,aACD;AACD,QAAO;;AAGT,MAAM,2BACJ,WACA,WACA,eACA,kBACG;CACH,MAAM,WAAW,uBAAuB,WAAW,UAAU;CAC7D,MAAM,aAAa,IAAI,IACrB,UAAU,mBAAmB,cAAc,EAAE,CAC9C;AACD,YAAW,IAAI,eAAe,cAAc;AAK5C,QAAO,4BAA4B,WAAW,WAJN;EACtC,OAAO,UAAU,mBAAmB;EACpC;EACD,CACqE;;AAGxE,MAAM,gBACJ,eACwD;CACxD,MAAM,UAA+D,EACnE,MACE,QACA,GACA,cACY;AACZ,MAAI,MAAM,aAAc,QAAO;AAE/B,MAAI,OAAO,MAAM,UAEf;OAAI,iBAAiB,IAAI,EAAE,CACzB,QAAO,IAAI,MAAM,OAAO,cAAc,QAAQ,SAAS,EAAE,CAAC;YAGnD,WAAW,OAAO,IAAI,EAAE,EAAE;IACjC,MAAM,QAAQ,WAAW,OAAO,IAAI,EAAE;AAItC,QAAI,MAAM,iBAAiB,MAAM,mBAAmB,OAClD,SAAQ,GAAG,aAAwB;KACjC,MAAM,mBAAmB,yBACvB,GACA,MAAM,gBACN,WAAW,KACZ;KACD,IAAI,EAAE,MAAM,uBAAuB,mBACjC,qBAAqB,SAAS;AAEhC,SAAI,sBACF,kBAAiB,sBACf,0BACE,kBACC,OAAe,mBACjB,CACF;AAEH,SAAI,CAAC,eACH,OAAM,IAAI,MAAM,UAAU,EAAE,8BAA8B;KAK5D,MAAM,eAAe,0BACnB,MAAM,mBACN,KACD;AAED,YAAO,IAAI,MACT,OAAO,SAAS,GAAG,cAAc,eAAe,EAChD,QACD;;AAKL,QAAI,MAAM,WACR,QAAO,IAAI,MAAM,OAAO,cAAc,QAAQ,SAAS,EAAE,CAAC;AAI5D,WAAO,IAAI,MAAM,OAAO,SAAS,EAAE,EAAE,QAAQ;;;AAGjD,SAAO,QAAQ,IAAI,QAAQ,GAAG,OAAO;IAExC;AACD,QAAO;;AAKT,MAAM,iBACJ,iBACA,SACA,UAC2B;AAC3B,QAAO,EACL,QAAQ,IAAc,IAAa,aAAiC;AAElE,MAAI,UAAU,OAAO;GACnB,IAAI;AAEJ,OACE,OAAO,SAAS,OAAO,YACvB,OAAO,SAAS,OAAO,YACvB;IACA,MAAM,iBAAiB,SAAS;IAChC,MAAM,UAAU,SAAS;IAGzB,MAAM,mBAAmB,4BAA4B,eAAe;AACpE,QAAI,CAAC,iBACH,OAAM,IAAI,MACR,+BAA+B,eAAe,WAC/C;AAEH,qBAAiB,QACf,0BACE,kBACC,gBAAwB,mBAC1B,CACF;cACQ,OAAO,SAAS,OAAO,YAAY;IAC5C,MAAM,UAAU,SAAS;IAGzB,MAAM,mBAAmB,gBAAgB;AACzC,qBAAiB,QACf,0BACE,kBACC,gBAAwB,mBAC1B,CACF;SAED,OAAM,IAAI,MACR,0DACD;GAGH,IAAI,SAAgD;AACpD,OACE,gBAAgB,WAAW,SAC3B,UAAU,eAAe,CAAC,WAAW,KAErC,UAAS,gBAAgB,SAAS,aAAa;AAEjD,UAAO,IAAI,MACT,OAAO,cACL,gBACA,OACD,EACD,QACD;;AAIH,MAAI,UAAU,QAAQ;GACpB,MAAM,WAAW,oBACf,SAAS,GAGV;AACD,OAAI,CAAC,YAAY,CAAC,SAAS,mBACzB,OAAM,IAAI,MAAM,gDAAgD;GAElE,MAAM,iBAAiB,SAAS;GAMhC,IAAI,SAAgD;AACpD,OACE,gBAAgB,WAAW,SAC3B,UAAU,eAAe,CAAC,WAAW,KAErC,UAAS,gBAAgB,SAAS,aAAa;AAEjD,UAAO,IAAI,MACT,OAAO,cACL,gBACA,SAAS,KACV,EACD,QACD;;AAIH,MAAI,UAAU,SAAS;GACrB,IAAI,UAAiD;AACrD,QAAK,MAAM,aAAa,SACtB,KAAI,OAAO,cAAc,SACvB,WAAU,QAAQ,YAAY,UAAU;AAG5C,UAAO,IAAI,MAAM,SAAS,QAAQ;;AAIpC,MAAI,UAAU,UAAU;GACtB,MAAM,QAAQ,SAAS;GACvB,MAAM,YAAY,gBAAgB;AAClC,OAAI,CAAC,UACH,OAAM,IAAI,MAAM,8CAA8C;GAChE,MAAM,WAAW,uBAAuB,iBAAiB,UAAU;GAKnE,MAAM,UAAU,4BACd,iBACA,WANsC;IACtC;IACA,YAAY,IAAI,IAAI,UAAU,mBAAmB,cAAc,EAAE,CAAC;IACnE,CAKA;AACD,UAAO,IAAI,MAAM,SAAS,QAAQ;;AAIpC,MAAI,UAAU,cAAc;GAC1B,MAAM,YAAY,gBAAgB;AAClC,OAAI,CAAC,UACH,QAAO,IAAI,MACT,gBAAgB,aACd,SAAS,IACT,SAAS,GACV,EACD,QACD;GAEH,MAAM,UAAU,wBACd,iBACA,WACA,SAAS,IACT,SAAS,GACV;AACD,UAAO,IAAI,MAAM,SAAS,QAAQ;;AAIpC,MAAI,UAAU,cAAc,UAAU,SAAS;GAC7C,MAAM,gBAAgB,UAAU,aAAa,YAAY;GACzD,MAAM,gBAAgB,EAAE,IAAI,SAAS,IAAI;GACzC,MAAM,YAAY,gBAAgB;AAClC,OAAI,CAAC,UACH,QAAO,IAAI,MACT,gBAAgB,aAAa,eAAe,cAAc,EAC1D,QACD;GAEH,MAAM,UAAU,wBACd,iBACA,WACA,eACA,cACD;AACD,UAAO,IAAI,MAAM,SAAS,QAAQ;;EAIpC,IAAI,EAAE,MAAM,OAAO,iBAAiB,gBAAgB,SAAS;EAM7D,MAAM,qBACJ,gBAAgB,WAAW,OAAO,IAAI,MAAM,EAAE;EAChD,MAAM,eAAe,0BAA0B,oBAAoB,KAAK;AAExE,SAAO,IAAI,MACT,gBAAgB,SAAS,OAAO,cAAc,OAAO,aAAa,EAClE,QACD;IAEJ;;AAKH,MAAM,cAAc;AAEpB,MAAa,mBAAmB,IAAI,cAClC;CACE,iBAAiB,OAAO,UAAU,EAAE,EAAE,EAAE,CAAC;CACzC,IAAI,0BAA0B,CAAC,OAAO;CACtC;CACD,EACD,OACA,GACD;;;;AC1cD,MAAa,UAAU,KAAa,OAAe,MAAc;CAC/D,IAAI,KAAK,aAAa;CACtB,IAAI,KAAK,aAAa;AACtB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;EACnC,MAAM,KAAK,IAAI,WAAW,EAAE;AAC5B,OAAK,KAAK,KAAK,KAAK,IAAI,WAAW;AACnC,OAAK,KAAK,KAAK,KAAK,IAAI,WAAW;;AAErC,MAAK,KAAK,KAAK,KAAM,OAAO,IAAK,WAAW;AAC5C,OAAM,KAAK,KAAK,KAAM,OAAO,IAAK,WAAW;AAC7C,MAAK,KAAK,KAAK,KAAM,OAAO,IAAK,WAAW;AAC5C,OAAM,KAAK,KAAK,KAAM,OAAO,IAAK,WAAW;AAC7C,SAAQ,cAAc,UAAU,OAAO,OAAO,IAAI,SAAS,GAAG"}
package/dist/node.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_schema_loader = require('./schema-loader-DO6j6Gbm.cjs');
2
+ const require_schema_loader = require('./schema-loader-BIP51DZO.cjs');
3
3
 
4
4
  exports.Generator = require_schema_loader.Generator;
5
5
  exports.loadLocalSchema = require_schema_loader.loadLocalSchema;
package/dist/node.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { n as loadRemoteSchema, r as Generator, t as loadLocalSchema } from "./schema-loader-dqwha5aR.mjs";
1
+ import { n as loadRemoteSchema, r as Generator, t as loadLocalSchema } from "./schema-loader-CsabdnfI.mjs";
2
2
 
3
3
  export { Generator, loadLocalSchema, loadRemoteSchema };