@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/README.md +9 -2
- package/README.zh-CN.md +7 -0
- package/dist/index.cjs +61 -36
- package/dist/index.d.cts +41 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +41 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +61 -36
- package/dist/index.mjs.map +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.mjs +1 -1
- package/dist/{schema-loader-DO6j6Gbm.cjs → schema-loader-BIP51DZO.cjs} +2 -2
- package/dist/{schema-loader-dqwha5aR.mjs → schema-loader-CsabdnfI.mjs} +3 -3
- package/dist/{schema-loader-dqwha5aR.mjs.map → schema-loader-CsabdnfI.mjs.map} +1 -1
- package/dist/vite.cjs +26 -36
- package/dist/vite.d.cts +0 -16
- package/dist/vite.d.cts.map +1 -1
- package/dist/vite.d.mts +0 -16
- package/dist/vite.d.mts.map +1 -1
- package/dist/vite.mjs +26 -36
- package/dist/vite.mjs.map +1 -1
- package/package.json +1 -1
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
|
-
*
|
|
105
|
+
* Runtime marker for `ParameterRef`.
|
|
106
106
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
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,
|
|
113
|
+
constructor(name, explicitType) {
|
|
114
114
|
this.name = name;
|
|
115
|
-
this.
|
|
115
|
+
this.explicitType = explicitType;
|
|
116
116
|
if (name.startsWith("$")) throw new Error("parameter name cannot start with '$'");
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
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,
|
|
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.
|
|
492
|
-
this.registerVariableType(ref, ref.
|
|
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,
|
|
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 (!
|
|
522
|
-
this.registerVariableType(ref,
|
|
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(
|
|
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.
|
|
557
|
-
if (!typeName) throw new Error(`
|
|
558
|
-
if (ref.
|
|
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(`
|
|
561
|
-
this.variableTypeMap.set(ref.name,
|
|
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
|
|
722
|
-
if (!
|
|
723
|
-
const
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
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
|
-
|
|
795
|
-
return new Proxy(target.addField(p,
|
|
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
|
-
|
|
864
|
-
|
|
865
|
-
|
|
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 = () => {};
|
package/dist/index.mjs.map
CHANGED
|
@@ -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":"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"}
|
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-
|
|
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-
|
|
1
|
+
import { n as loadRemoteSchema, r as Generator, t as loadLocalSchema } from "./schema-loader-CsabdnfI.mjs";
|
|
2
2
|
|
|
3
3
|
export { Generator, loadLocalSchema, loadRemoteSchema };
|