@soda-gql/codegen 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{generator-CMKkXhGP.cjs → generator-BVf7xlYs.cjs} +13 -9
- package/dist/generator-BVf7xlYs.cjs.map +1 -0
- package/dist/{generator-BEIrzINv.mjs → generator-DQR0OMdO.mjs} +13 -9
- package/dist/generator-DQR0OMdO.mjs.map +1 -0
- package/dist/{generator-Djrw_0F1.cjs → generator-D_GvAaQh.cjs} +1 -1
- package/dist/generator-DpnCKxKF.mjs +3 -0
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +3 -3
- package/dist/generator-BEIrzINv.mjs.map +0 -1
- package/dist/generator-CMKkXhGP.cjs.map +0 -1
- package/dist/generator-slr91UMQ.mjs +0 -3
|
@@ -367,11 +367,11 @@ const collectInputTypeNames = (schema) => Array.from(schema.inputs.keys()).filte
|
|
|
367
367
|
const collectEnumTypeNames = (schema) => Array.from(schema.enums.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
368
368
|
const collectUnionTypeNames = (schema) => Array.from(schema.unions.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
369
369
|
const collectScalarNames = (schema) => Array.from(schema.scalars.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
370
|
-
const renderInputTypeMethod = (kind, typeName) => `${typeName}:
|
|
371
|
-
const renderInputTypeMethods = (schema) => {
|
|
372
|
-
const scalarMethods = Array.from(builtinScalarTypes.keys()).concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name))).map((name) => renderInputTypeMethod("scalar", name));
|
|
373
|
-
const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod("enum", name));
|
|
374
|
-
const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod("input", name));
|
|
370
|
+
const renderInputTypeMethod = (factoryVar, kind, typeName) => `${typeName}: ${factoryVar}("${kind}", "${typeName}")`;
|
|
371
|
+
const renderInputTypeMethods = (schema, factoryVar) => {
|
|
372
|
+
const scalarMethods = Array.from(builtinScalarTypes.keys()).concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name))).map((name) => renderInputTypeMethod(factoryVar, "scalar", name));
|
|
373
|
+
const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, "enum", name));
|
|
374
|
+
const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, "input", name));
|
|
375
375
|
const allMethods = [
|
|
376
376
|
...scalarMethods,
|
|
377
377
|
...enumMethods,
|
|
@@ -430,6 +430,7 @@ const multiRuntimeTemplate = ($$) => {
|
|
|
430
430
|
typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);
|
|
431
431
|
}
|
|
432
432
|
const inputTypeMethodsVar = `inputTypeMethods_${name}`;
|
|
433
|
+
const factoryVar = `createMethod_${name}`;
|
|
433
434
|
schemaBlocks.push(`
|
|
434
435
|
const ${schemaVar} = {
|
|
435
436
|
label: "${name}" as const,
|
|
@@ -445,7 +446,8 @@ const ${schemaVar} = {
|
|
|
445
446
|
union: ${config.unionBlock},
|
|
446
447
|
} satisfies AnyGraphqlSchema;
|
|
447
448
|
|
|
448
|
-
const ${
|
|
449
|
+
const ${factoryVar} = createVarMethodFactory<typeof ${schemaVar}>();
|
|
450
|
+
const ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock} satisfies InputTypeMethods<typeof ${schemaVar}>;
|
|
449
451
|
|
|
450
452
|
${typeExports.join("\n")}`);
|
|
451
453
|
if (adapterVar) {
|
|
@@ -458,8 +460,9 @@ ${typeExports.join("\n")}`);
|
|
|
458
460
|
return `\
|
|
459
461
|
import {
|
|
460
462
|
type AnyGraphqlSchema,
|
|
463
|
+
type InputTypeMethods,
|
|
461
464
|
createGqlElementComposer,
|
|
462
|
-
|
|
465
|
+
createVarMethodFactory,
|
|
463
466
|
define,
|
|
464
467
|
defineOperationRoots,
|
|
465
468
|
unsafeInputType,
|
|
@@ -520,7 +523,8 @@ const generateMultiSchemaModule = (schemas, options) => {
|
|
|
520
523
|
entries: unionDefinitions,
|
|
521
524
|
indentSize: 4
|
|
522
525
|
});
|
|
523
|
-
const
|
|
526
|
+
const factoryVar = `createMethod_${name}`;
|
|
527
|
+
const inputTypeMethodsBlock = renderInputTypeMethods(schema, factoryVar);
|
|
524
528
|
const queryType = schema.operationTypes.query ?? "Query";
|
|
525
529
|
const mutationType = schema.operationTypes.mutation ?? "Mutation";
|
|
526
530
|
const subscriptionType = schema.operationTypes.subscription ?? "Subscription";
|
|
@@ -567,4 +571,4 @@ Object.defineProperty(exports, 'generateMultiSchemaModule', {
|
|
|
567
571
|
return generateMultiSchemaModule;
|
|
568
572
|
}
|
|
569
573
|
});
|
|
570
|
-
//# sourceMappingURL=generator-
|
|
574
|
+
//# sourceMappingURL=generator-BVf7xlYs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-BVf7xlYs.cjs","names":["operationTypes: OperationTypeNames","Kind","modifier: TypeModifier","imports: string[]","schemaBlocks: string[]","gqlEntries: string[]","schemaConfigs: Record<string, any>","name","injection: RuntimeTemplateInjection"],"sources":["../src/generator.ts"],"sourcesContent":["import type { TypeModifier } from \"@soda-gql/core\";\nimport {\n type ConstDirectiveNode,\n type ConstValueNode,\n type DocumentNode,\n type EnumValueDefinitionNode,\n type FieldDefinitionNode,\n type InputValueDefinitionNode,\n Kind,\n type NamedTypeNode,\n type SchemaDefinitionNode,\n type SchemaExtensionNode,\n type TypeNode,\n} from \"graphql\";\n\nconst builtinScalarTypes = new Map<string, { readonly input: string; readonly output: string }>([\n [\"ID\", { input: \"string\", output: \"string\" }],\n [\"String\", { input: \"string\", output: \"string\" }],\n [\"Int\", { input: \"number\", output: \"number\" }],\n [\"Float\", { input: \"number\", output: \"number\" }],\n [\"Boolean\", { input: \"boolean\", output: \"boolean\" }],\n]);\n\ntype OperationTypeNames = {\n query?: string;\n mutation?: string;\n subscription?: string;\n};\n\ntype ObjectRecord = {\n readonly name: string;\n readonly fields: Map<string, FieldDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype InputRecord = {\n readonly name: string;\n readonly fields: Map<string, InputValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype EnumRecord = {\n readonly name: string;\n readonly values: Map<string, EnumValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype UnionRecord = {\n readonly name: string;\n readonly members: Map<string, NamedTypeNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype ScalarRecord = {\n readonly name: string;\n directives: ConstDirectiveNode[];\n};\n\ntype SchemaIndex = {\n readonly objects: Map<string, ObjectRecord>;\n readonly inputs: Map<string, InputRecord>;\n readonly enums: Map<string, EnumRecord>;\n readonly unions: Map<string, UnionRecord>;\n readonly scalars: Map<string, ScalarRecord>;\n readonly operationTypes: OperationTypeNames;\n};\n\nconst ensureRecord = <T>(collection: Map<string, T>, key: string, factory: (name: string) => T): T => {\n const existing = collection.get(key);\n if (existing) {\n return existing;\n }\n\n const created = factory(key);\n collection.set(key, created);\n return created;\n};\n\nconst addObjectFields = (target: Map<string, FieldDefinitionNode>, fields: readonly FieldDefinitionNode[] | undefined): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addInputFields = (\n target: Map<string, InputValueDefinitionNode>,\n fields: readonly InputValueDefinitionNode[] | undefined,\n): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addEnumValues = (\n target: Map<string, EnumValueDefinitionNode>,\n values: readonly EnumValueDefinitionNode[] | undefined,\n): void => {\n if (!values) {\n return;\n }\n\n for (const value of values) {\n target.set(value.name.value, value);\n }\n};\n\nconst addUnionMembers = (target: Map<string, NamedTypeNode>, members: readonly NamedTypeNode[] | undefined): void => {\n if (!members) {\n return;\n }\n\n for (const member of members) {\n target.set(member.name.value, member);\n }\n};\n\nconst mergeDirectives = (\n existing: ConstDirectiveNode[] | undefined,\n incoming: readonly ConstDirectiveNode[] | undefined,\n precedence: \"definition\" | \"extension\",\n): ConstDirectiveNode[] => {\n const current = existing ?? [];\n const next = incoming ? Array.from(incoming) : [];\n return precedence === \"definition\" ? [...next, ...current] : [...current, ...next];\n};\n\nconst updateOperationTypes = (\n operationTypes: OperationTypeNames,\n definition: SchemaDefinitionNode | SchemaExtensionNode,\n): void => {\n for (const operation of definition.operationTypes ?? []) {\n const typeName = operation.type.name.value;\n switch (operation.operation) {\n case \"query\":\n operationTypes.query = typeName;\n break;\n case \"mutation\":\n operationTypes.mutation = typeName;\n break;\n case \"subscription\":\n operationTypes.subscription = typeName;\n break;\n default:\n break;\n }\n }\n};\n\nexport const createSchemaIndex = (document: DocumentNode): SchemaIndex => {\n const objects = new Map<string, ObjectRecord>();\n const inputs = new Map<string, InputRecord>();\n const enums = new Map<string, EnumRecord>();\n const unions = new Map<string, UnionRecord>();\n const scalars = new Map<string, ScalarRecord>();\n const operationTypes: OperationTypeNames = {};\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(objects, definition.name.value, (name) => ({\n name,\n fields: new Map<string, FieldDefinitionNode>(),\n directives: [],\n }));\n addObjectFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(inputs, definition.name.value, (name) => ({\n name,\n fields: new Map<string, InputValueDefinitionNode>(),\n directives: [],\n }));\n addInputFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.ENUM_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(enums, definition.name.value, (name) => ({\n name,\n values: new Map<string, EnumValueDefinitionNode>(),\n directives: [],\n }));\n addEnumValues(record.values, definition.values);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.UNION_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(unions, definition.name.value, (name) => ({\n name,\n members: new Map<string, NamedTypeNode>(),\n directives: [],\n }));\n addUnionMembers(record.members, definition.types);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.SCALAR_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(scalars, definition.name.value, (name) => ({\n name,\n directives: [],\n }));\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n updateOperationTypes(operationTypes, definition);\n break;\n default:\n break;\n }\n }\n\n if (!operationTypes.query && objects.has(\"Query\")) {\n operationTypes.query = \"Query\";\n }\n if (!operationTypes.mutation && objects.has(\"Mutation\")) {\n operationTypes.mutation = \"Mutation\";\n }\n if (!operationTypes.subscription && objects.has(\"Subscription\")) {\n operationTypes.subscription = \"Subscription\";\n }\n\n return {\n objects,\n inputs,\n enums,\n unions,\n scalars,\n operationTypes,\n } satisfies SchemaIndex;\n};\n\ntype TypeLevel = {\n readonly kind: \"list\" | \"named\";\n readonly nonNull: boolean;\n};\n\nconst collectTypeLevels = (\n type: TypeNode,\n nonNull = false,\n levels: TypeLevel[] = [],\n): { readonly name: string; readonly levels: TypeLevel[] } => {\n if (type.kind === Kind.NON_NULL_TYPE) {\n return collectTypeLevels(type.type, true, levels);\n }\n\n if (type.kind === Kind.LIST_TYPE) {\n levels.push({ kind: \"list\", nonNull });\n return collectTypeLevels(type.type, false, levels);\n }\n\n levels.push({ kind: \"named\", nonNull });\n return { name: type.name.value, levels };\n};\n\nconst buildTypeModifier = (levels: TypeLevel[]): TypeModifier => {\n let modifier: TypeModifier = \"?\";\n\n for (const level of levels.slice().reverse()) {\n if (level.kind === \"named\") {\n // Inner type: always explicit nullable marker\n modifier = level.nonNull ? \"!\" : \"?\";\n continue;\n }\n\n // List type: append []? or []! based on list's nullability\n const listSuffix = level.nonNull ? \"[]!\" : \"[]?\";\n modifier = `${modifier}${listSuffix}` as TypeModifier;\n }\n\n return modifier;\n};\n\nconst parseTypeReference = (type: TypeNode): { readonly name: string; readonly modifier: string } => {\n const { name, levels } = collectTypeLevels(type);\n return { name, modifier: buildTypeModifier(levels) };\n};\n\nconst renderType = (name: string, modifier: string): string => JSON.stringify(`${name}:${modifier}`);\n\nconst isScalarName = (schema: SchemaIndex, name: string): boolean => builtinScalarTypes.has(name) || schema.scalars.has(name);\nconst isEnumName = (schema: SchemaIndex, name: string): boolean => schema.enums.has(name);\nconst _isInputName = (schema: SchemaIndex, name: string): boolean => schema.inputs.has(name);\nconst isUnionName = (schema: SchemaIndex, name: string): boolean => schema.unions.has(name);\nconst isObjectName = (schema: SchemaIndex, name: string): boolean => schema.objects.has(name);\n\nconst renderConstValue = (value: ConstValueNode): string => {\n switch (value.kind) {\n case Kind.NULL:\n return \"null\";\n case Kind.INT:\n case Kind.FLOAT:\n return value.value;\n case Kind.STRING:\n case Kind.ENUM:\n return JSON.stringify(value.value);\n case Kind.BOOLEAN:\n return value.value ? \"true\" : \"false\";\n case Kind.LIST:\n return `[${value.values.map((item) => renderConstValue(item)).join(\", \")}]`;\n case Kind.OBJECT: {\n if (value.fields.length === 0) {\n return \"{}\";\n }\n const entries = value.fields.map((field) => `${field.name.value}: ${renderConstValue(field.value)}`);\n return `{ ${entries.join(\", \")} }`;\n }\n }\n};\n\nconst renderConstArgumentMap = (\n args: readonly { readonly name: { readonly value: string }; readonly value: ConstValueNode }[] | undefined,\n): string => {\n const entries = (args ?? []).map((arg) => `${arg.name.value}: ${renderConstValue(arg.value)}`);\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDirectives = (directives: readonly ConstDirectiveNode[] | undefined): string => {\n const entries = (directives ?? []).map(\n (directive) => `${directive.name.value}: ${renderConstArgumentMap(directive.arguments)}`,\n );\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDefaultValue = (value: ConstValueNode | null | undefined): string =>\n value ? `() => (${renderConstValue(value)})` : \"null\";\n\nconst renderInputRef = (schema: SchemaIndex, definition: InputValueDefinitionNode): string => {\n const { name, modifier } = parseTypeReference(definition.type);\n const tuple = renderType(name, modifier);\n const defaultValue = renderDefaultValue(definition.defaultValue ?? null);\n const directives = renderDirectives(definition.directives);\n\n if (isScalarName(schema, name)) {\n return `unsafeInputType.scalar(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeInputType.enum(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n return `unsafeInputType.input(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n};\n\nconst renderArgumentMap = (schema: SchemaIndex, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const entries = [...(args ?? [])]\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((arg) => `${arg.name.value}: ${renderInputRef(schema, arg)}`);\n\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderOutputRef = (schema: SchemaIndex, type: TypeNode, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const { name, modifier } = parseTypeReference(type);\n const modifiedType = renderType(name, modifier);\n const argumentMap = renderArgumentMap(schema, args);\n\n if (isScalarName(schema, name)) {\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeOutputType.enum(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isUnionName(schema, name)) {\n return `unsafeOutputType.union(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isObjectName(schema, name)) {\n return `unsafeOutputType.object(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n};\n\nconst renderPropertyLines = ({ entries, indentSize }: { entries: string[]; indentSize: number }) => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const indent = \" \".repeat(indentSize);\n const lastIndent = \" \".repeat(indentSize - 2);\n return [\"{\", `${indent}${entries.join(`,\\n${indent}`)},`, `${lastIndent}}`].join(`\\n`);\n};\n\nconst renderObjectFields = (schema: SchemaIndex, fields: Map<string, FieldDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderOutputRef(schema, field.type, field.arguments)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderInputFields = (schema: SchemaIndex, fields: Map<string, InputValueDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderInputRef(schema, field)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderScalarDefinition = (record: ScalarRecord): string => {\n const typeInfo = builtinScalarTypes.get(record.name) ?? { input: \"string\", output: \"string\" };\n const scalarType = `type<{ input: ${typeInfo.input}; output: ${typeInfo.output} }>()`;\n return `${record.name}: define(\"${record.name}\").scalar(${scalarType})`;\n};\n\nconst renderObjectDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.objects.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderObjectFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").object(${fields})`;\n};\n\nconst renderInputDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.inputs.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderInputFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").input(${fields})`;\n};\n\nconst renderEnumDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.enums.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const values = Array.from(record.values.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((value) => `${value.name.value}: true`)\n .join(\", \");\n const body = values.length === 0 ? \"{}\" : `{ ${values} }`;\n\n return `${record.name}: define(\"${record.name}\").enum(${body})`;\n};\n\nconst renderUnionDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.unions.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const members = Array.from(record.members.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((member) => `${member.name.value}: true`)\n .join(\", \");\n const body = members.length === 0 ? \"{}\" : `{ ${members} }`;\n\n return `${record.name}: define(\"${record.name}\").union(${body})`;\n};\n\nconst collectObjectTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.objects.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectInputTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.inputs.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectEnumTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.enums.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectUnionTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.unions.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectScalarNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.scalars.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst renderInputTypeMethod = (factoryVar: string, kind: \"scalar\" | \"enum\" | \"input\", typeName: string): string =>\n `${typeName}: ${factoryVar}(\"${kind}\", \"${typeName}\")`;\n\nconst renderInputTypeMethods = (schema: SchemaIndex, factoryVar: string): string => {\n const scalarMethods = Array.from(builtinScalarTypes.keys())\n .concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name)))\n .map((name) => renderInputTypeMethod(factoryVar, \"scalar\", name));\n\n const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, \"enum\", name));\n\n const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, \"input\", name));\n\n const allMethods = [...scalarMethods, ...enumMethods, ...inputMethods].sort((left, right) => {\n const leftName = left.split(\":\")[0] ?? \"\";\n const rightName = right.split(\":\")[0] ?? \"\";\n return leftName.localeCompare(rightName);\n });\n\n return renderPropertyLines({ entries: allMethods, indentSize: 2 });\n};\n\nexport type GeneratedModule = {\n readonly code: string;\n readonly stats: {\n readonly objects: number;\n readonly enums: number;\n readonly inputs: number;\n readonly unions: number;\n };\n};\n\ntype PerSchemaInjection = {\n readonly scalarImportPath: string;\n readonly adapterImportPath?: string;\n};\n\ntype RuntimeTemplateInjection =\n | { readonly mode: \"inline\" }\n | {\n readonly mode: \"inject\";\n readonly perSchema: Map<string, PerSchemaInjection>;\n };\n\nexport type RuntimeGenerationOptions = {\n readonly injection?: Map<string, PerSchemaInjection>;\n};\n\ntype MultiRuntimeTemplateOptions = {\n readonly schemas: Record<\n string,\n {\n readonly queryType: string;\n readonly mutationType: string;\n readonly subscriptionType: string;\n readonly scalarBlock: string;\n readonly enumBlock: string;\n readonly inputBlock: string;\n readonly objectBlock: string;\n readonly unionBlock: string;\n readonly inputTypeMethodsBlock: string;\n }\n >;\n readonly injection: RuntimeTemplateInjection;\n};\n\nconst multiRuntimeTemplate = ($$: MultiRuntimeTemplateOptions) => {\n // Build imports based on injection mode\n const imports: string[] = [];\n const scalarAliases = new Map<string, string>();\n const adapterAliases = new Map<string, string>();\n\n if ($$.injection.mode === \"inject\") {\n // Group imports by file path\n const importsByPath = new Map<string, string[]>();\n\n for (const [schemaName, injection] of $$.injection.perSchema) {\n const scalarAlias = `scalar_${schemaName}`;\n scalarAliases.set(schemaName, scalarAlias);\n\n // Group scalar import\n const scalarSpecifiers = importsByPath.get(injection.scalarImportPath) ?? [];\n if (!importsByPath.has(injection.scalarImportPath)) {\n importsByPath.set(injection.scalarImportPath, scalarSpecifiers);\n }\n scalarSpecifiers.push(`scalar as ${scalarAlias}`);\n\n // Group adapter import (optional)\n if (injection.adapterImportPath) {\n const adapterAlias = `adapter_${schemaName}`;\n adapterAliases.set(schemaName, adapterAlias);\n const adapterSpecifiers = importsByPath.get(injection.adapterImportPath) ?? [];\n if (!importsByPath.has(injection.adapterImportPath)) {\n importsByPath.set(injection.adapterImportPath, adapterSpecifiers);\n }\n adapterSpecifiers.push(`adapter as ${adapterAlias}`);\n }\n }\n\n // Generate grouped imports\n for (const [path, specifiers] of importsByPath) {\n if (specifiers.length === 1) {\n imports.push(`import { ${specifiers[0]} } from \"${path}\";`);\n } else {\n imports.push(`import {\\n ${specifiers.join(\",\\n \")},\\n} from \"${path}\";`);\n }\n }\n }\n\n const extraImports = imports.length > 0 ? `${imports.join(\"\\n\")}\\n` : \"\";\n\n // Generate per-schema definitions\n const schemaBlocks: string[] = [];\n const gqlEntries: string[] = [];\n\n for (const [name, config] of Object.entries($$.schemas)) {\n const schemaVar = `${name}Schema`;\n const scalarBlock = $$.injection.mode === \"inject\" ? scalarAliases.get(name) : config.scalarBlock;\n\n // Get optional adapter\n const adapterVar = adapterAliases.get(name);\n\n // Build type exports\n const typeExports = [`export type Schema_${name} = typeof ${schemaVar} & { _?: never };`];\n if (adapterVar) {\n typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);\n }\n\n const inputTypeMethodsVar = `inputTypeMethods_${name}`;\n const factoryVar = `createMethod_${name}`;\n\n schemaBlocks.push(`\nconst ${schemaVar} = {\n label: \"${name}\" as const,\n operations: defineOperationRoots({\n query: \"${config.queryType}\",\n mutation: \"${config.mutationType}\",\n subscription: \"${config.subscriptionType}\",\n }),\n scalar: ${scalarBlock},\n enum: ${config.enumBlock},\n input: ${config.inputBlock},\n object: ${config.objectBlock},\n union: ${config.unionBlock},\n} satisfies AnyGraphqlSchema;\n\nconst ${factoryVar} = createVarMethodFactory<typeof ${schemaVar}>();\nconst ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock} satisfies InputTypeMethods<typeof ${schemaVar}>;\n\n${typeExports.join(\"\\n\")}`);\n\n // Build gql entry with options - inputTypeMethods is always required\n if (adapterVar) {\n const typeParams = `<Schema_${name}, Adapter_${name}>`;\n gqlEntries.push(\n ` ${name}: createGqlElementComposer${typeParams}(${schemaVar}, { adapter: ${adapterVar}, inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n } else {\n gqlEntries.push(\n ` ${name}: createGqlElementComposer<Schema_${name}>(${schemaVar}, { inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n }\n }\n\n return `\\\nimport {\n type AnyGraphqlSchema,\n type InputTypeMethods,\n createGqlElementComposer,\n createVarMethodFactory,\n define,\n defineOperationRoots,\n unsafeInputType,\n unsafeOutputType,\n} from \"@soda-gql/core\";\n${extraImports}\n${schemaBlocks.join(\"\\n\")}\n\nexport const gql = {\n${gqlEntries.join(\",\\n\")}\n};\n`;\n};\n\nexport const generateMultiSchemaModule = (\n schemas: Map<string, DocumentNode>,\n options?: RuntimeGenerationOptions,\n): GeneratedModule => {\n // biome-ignore lint/suspicious/noExplicitAny: complex schema config type\n const schemaConfigs: Record<string, any> = {};\n const allStats = {\n objects: 0,\n enums: 0,\n inputs: 0,\n unions: 0,\n };\n\n for (const [name, document] of schemas.entries()) {\n const schema = createSchemaIndex(document);\n\n const builtinScalarDefinitions = Array.from(builtinScalarTypes.keys()).map((name) =>\n renderScalarDefinition(schema.scalars.get(name) ?? { name, directives: [] }),\n );\n\n const customScalarDefinitions = collectScalarNames(schema)\n .filter((name) => !builtinScalarTypes.has(name))\n .map((name) => {\n const record = schema.scalars.get(name);\n return record ? renderScalarDefinition(record) : \"\";\n })\n .filter((definition) => definition.length > 0);\n\n const allScalarDefinitions = builtinScalarDefinitions.concat(customScalarDefinitions);\n\n const objectTypeNames = collectObjectTypeNames(schema);\n const enumTypeNames = collectEnumTypeNames(schema);\n const inputTypeNames = collectInputTypeNames(schema);\n const unionTypeNames = collectUnionTypeNames(schema);\n\n const scalarBlock = renderPropertyLines({ entries: allScalarDefinitions, indentSize: 4 });\n const enumDefinitions = enumTypeNames\n .map((name) => renderEnumDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const enumBlock = renderPropertyLines({ entries: enumDefinitions, indentSize: 4 });\n const inputDefinitions = inputTypeNames\n .map((name) => renderInputDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const inputBlock = renderPropertyLines({ entries: inputDefinitions, indentSize: 4 });\n const objectDefinitions = objectTypeNames\n .map((name) => renderObjectDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const objectBlock = renderPropertyLines({ entries: objectDefinitions, indentSize: 4 });\n const unionDefinitions = unionTypeNames\n .map((name) => renderUnionDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const unionBlock = renderPropertyLines({ entries: unionDefinitions, indentSize: 4 });\n\n const factoryVar = `createMethod_${name}`;\n const inputTypeMethodsBlock = renderInputTypeMethods(schema, factoryVar);\n\n const queryType = schema.operationTypes.query ?? \"Query\";\n const mutationType = schema.operationTypes.mutation ?? \"Mutation\";\n const subscriptionType = schema.operationTypes.subscription ?? \"Subscription\";\n\n schemaConfigs[name] = {\n queryType,\n mutationType,\n subscriptionType,\n scalarBlock,\n enumBlock,\n inputBlock,\n objectBlock,\n unionBlock,\n inputTypeMethodsBlock,\n };\n\n // Accumulate stats\n allStats.objects += objectDefinitions.length;\n allStats.enums += enumDefinitions.length;\n allStats.inputs += inputDefinitions.length;\n allStats.unions += unionDefinitions.length;\n }\n\n const injection: RuntimeTemplateInjection = options?.injection\n ? { mode: \"inject\", perSchema: options.injection }\n : { mode: \"inline\" };\n\n const code = multiRuntimeTemplate({\n schemas: schemaConfigs,\n injection,\n });\n\n return {\n code,\n stats: allStats,\n };\n};\n"],"mappings":"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"}
|
|
@@ -367,11 +367,11 @@ const collectInputTypeNames = (schema) => Array.from(schema.inputs.keys()).filte
|
|
|
367
367
|
const collectEnumTypeNames = (schema) => Array.from(schema.enums.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
368
368
|
const collectUnionTypeNames = (schema) => Array.from(schema.unions.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
369
369
|
const collectScalarNames = (schema) => Array.from(schema.scalars.keys()).filter((name) => !name.startsWith("__")).sort((left, right) => left.localeCompare(right));
|
|
370
|
-
const renderInputTypeMethod = (kind, typeName) => `${typeName}:
|
|
371
|
-
const renderInputTypeMethods = (schema) => {
|
|
372
|
-
const scalarMethods = Array.from(builtinScalarTypes.keys()).concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name))).map((name) => renderInputTypeMethod("scalar", name));
|
|
373
|
-
const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod("enum", name));
|
|
374
|
-
const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod("input", name));
|
|
370
|
+
const renderInputTypeMethod = (factoryVar, kind, typeName) => `${typeName}: ${factoryVar}("${kind}", "${typeName}")`;
|
|
371
|
+
const renderInputTypeMethods = (schema, factoryVar) => {
|
|
372
|
+
const scalarMethods = Array.from(builtinScalarTypes.keys()).concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name))).map((name) => renderInputTypeMethod(factoryVar, "scalar", name));
|
|
373
|
+
const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, "enum", name));
|
|
374
|
+
const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, "input", name));
|
|
375
375
|
const allMethods = [
|
|
376
376
|
...scalarMethods,
|
|
377
377
|
...enumMethods,
|
|
@@ -430,6 +430,7 @@ const multiRuntimeTemplate = ($$) => {
|
|
|
430
430
|
typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);
|
|
431
431
|
}
|
|
432
432
|
const inputTypeMethodsVar = `inputTypeMethods_${name}`;
|
|
433
|
+
const factoryVar = `createMethod_${name}`;
|
|
433
434
|
schemaBlocks.push(`
|
|
434
435
|
const ${schemaVar} = {
|
|
435
436
|
label: "${name}" as const,
|
|
@@ -445,7 +446,8 @@ const ${schemaVar} = {
|
|
|
445
446
|
union: ${config.unionBlock},
|
|
446
447
|
} satisfies AnyGraphqlSchema;
|
|
447
448
|
|
|
448
|
-
const ${
|
|
449
|
+
const ${factoryVar} = createVarMethodFactory<typeof ${schemaVar}>();
|
|
450
|
+
const ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock} satisfies InputTypeMethods<typeof ${schemaVar}>;
|
|
449
451
|
|
|
450
452
|
${typeExports.join("\n")}`);
|
|
451
453
|
if (adapterVar) {
|
|
@@ -458,8 +460,9 @@ ${typeExports.join("\n")}`);
|
|
|
458
460
|
return `\
|
|
459
461
|
import {
|
|
460
462
|
type AnyGraphqlSchema,
|
|
463
|
+
type InputTypeMethods,
|
|
461
464
|
createGqlElementComposer,
|
|
462
|
-
|
|
465
|
+
createVarMethodFactory,
|
|
463
466
|
define,
|
|
464
467
|
defineOperationRoots,
|
|
465
468
|
unsafeInputType,
|
|
@@ -520,7 +523,8 @@ const generateMultiSchemaModule = (schemas, options) => {
|
|
|
520
523
|
entries: unionDefinitions,
|
|
521
524
|
indentSize: 4
|
|
522
525
|
});
|
|
523
|
-
const
|
|
526
|
+
const factoryVar = `createMethod_${name}`;
|
|
527
|
+
const inputTypeMethodsBlock = renderInputTypeMethods(schema, factoryVar);
|
|
524
528
|
const queryType = schema.operationTypes.query ?? "Query";
|
|
525
529
|
const mutationType = schema.operationTypes.mutation ?? "Mutation";
|
|
526
530
|
const subscriptionType = schema.operationTypes.subscription ?? "Subscription";
|
|
@@ -556,4 +560,4 @@ const generateMultiSchemaModule = (schemas, options) => {
|
|
|
556
560
|
|
|
557
561
|
//#endregion
|
|
558
562
|
export { generateMultiSchemaModule as n, createSchemaIndex as t };
|
|
559
|
-
//# sourceMappingURL=generator-
|
|
563
|
+
//# sourceMappingURL=generator-DQR0OMdO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-DQR0OMdO.mjs","names":["operationTypes: OperationTypeNames","modifier: TypeModifier","imports: string[]","schemaBlocks: string[]","gqlEntries: string[]","schemaConfigs: Record<string, any>","name","injection: RuntimeTemplateInjection"],"sources":["../src/generator.ts"],"sourcesContent":["import type { TypeModifier } from \"@soda-gql/core\";\nimport {\n type ConstDirectiveNode,\n type ConstValueNode,\n type DocumentNode,\n type EnumValueDefinitionNode,\n type FieldDefinitionNode,\n type InputValueDefinitionNode,\n Kind,\n type NamedTypeNode,\n type SchemaDefinitionNode,\n type SchemaExtensionNode,\n type TypeNode,\n} from \"graphql\";\n\nconst builtinScalarTypes = new Map<string, { readonly input: string; readonly output: string }>([\n [\"ID\", { input: \"string\", output: \"string\" }],\n [\"String\", { input: \"string\", output: \"string\" }],\n [\"Int\", { input: \"number\", output: \"number\" }],\n [\"Float\", { input: \"number\", output: \"number\" }],\n [\"Boolean\", { input: \"boolean\", output: \"boolean\" }],\n]);\n\ntype OperationTypeNames = {\n query?: string;\n mutation?: string;\n subscription?: string;\n};\n\ntype ObjectRecord = {\n readonly name: string;\n readonly fields: Map<string, FieldDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype InputRecord = {\n readonly name: string;\n readonly fields: Map<string, InputValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype EnumRecord = {\n readonly name: string;\n readonly values: Map<string, EnumValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype UnionRecord = {\n readonly name: string;\n readonly members: Map<string, NamedTypeNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype ScalarRecord = {\n readonly name: string;\n directives: ConstDirectiveNode[];\n};\n\ntype SchemaIndex = {\n readonly objects: Map<string, ObjectRecord>;\n readonly inputs: Map<string, InputRecord>;\n readonly enums: Map<string, EnumRecord>;\n readonly unions: Map<string, UnionRecord>;\n readonly scalars: Map<string, ScalarRecord>;\n readonly operationTypes: OperationTypeNames;\n};\n\nconst ensureRecord = <T>(collection: Map<string, T>, key: string, factory: (name: string) => T): T => {\n const existing = collection.get(key);\n if (existing) {\n return existing;\n }\n\n const created = factory(key);\n collection.set(key, created);\n return created;\n};\n\nconst addObjectFields = (target: Map<string, FieldDefinitionNode>, fields: readonly FieldDefinitionNode[] | undefined): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addInputFields = (\n target: Map<string, InputValueDefinitionNode>,\n fields: readonly InputValueDefinitionNode[] | undefined,\n): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addEnumValues = (\n target: Map<string, EnumValueDefinitionNode>,\n values: readonly EnumValueDefinitionNode[] | undefined,\n): void => {\n if (!values) {\n return;\n }\n\n for (const value of values) {\n target.set(value.name.value, value);\n }\n};\n\nconst addUnionMembers = (target: Map<string, NamedTypeNode>, members: readonly NamedTypeNode[] | undefined): void => {\n if (!members) {\n return;\n }\n\n for (const member of members) {\n target.set(member.name.value, member);\n }\n};\n\nconst mergeDirectives = (\n existing: ConstDirectiveNode[] | undefined,\n incoming: readonly ConstDirectiveNode[] | undefined,\n precedence: \"definition\" | \"extension\",\n): ConstDirectiveNode[] => {\n const current = existing ?? [];\n const next = incoming ? Array.from(incoming) : [];\n return precedence === \"definition\" ? [...next, ...current] : [...current, ...next];\n};\n\nconst updateOperationTypes = (\n operationTypes: OperationTypeNames,\n definition: SchemaDefinitionNode | SchemaExtensionNode,\n): void => {\n for (const operation of definition.operationTypes ?? []) {\n const typeName = operation.type.name.value;\n switch (operation.operation) {\n case \"query\":\n operationTypes.query = typeName;\n break;\n case \"mutation\":\n operationTypes.mutation = typeName;\n break;\n case \"subscription\":\n operationTypes.subscription = typeName;\n break;\n default:\n break;\n }\n }\n};\n\nexport const createSchemaIndex = (document: DocumentNode): SchemaIndex => {\n const objects = new Map<string, ObjectRecord>();\n const inputs = new Map<string, InputRecord>();\n const enums = new Map<string, EnumRecord>();\n const unions = new Map<string, UnionRecord>();\n const scalars = new Map<string, ScalarRecord>();\n const operationTypes: OperationTypeNames = {};\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(objects, definition.name.value, (name) => ({\n name,\n fields: new Map<string, FieldDefinitionNode>(),\n directives: [],\n }));\n addObjectFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(inputs, definition.name.value, (name) => ({\n name,\n fields: new Map<string, InputValueDefinitionNode>(),\n directives: [],\n }));\n addInputFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.ENUM_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(enums, definition.name.value, (name) => ({\n name,\n values: new Map<string, EnumValueDefinitionNode>(),\n directives: [],\n }));\n addEnumValues(record.values, definition.values);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.UNION_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(unions, definition.name.value, (name) => ({\n name,\n members: new Map<string, NamedTypeNode>(),\n directives: [],\n }));\n addUnionMembers(record.members, definition.types);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.SCALAR_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(scalars, definition.name.value, (name) => ({\n name,\n directives: [],\n }));\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n updateOperationTypes(operationTypes, definition);\n break;\n default:\n break;\n }\n }\n\n if (!operationTypes.query && objects.has(\"Query\")) {\n operationTypes.query = \"Query\";\n }\n if (!operationTypes.mutation && objects.has(\"Mutation\")) {\n operationTypes.mutation = \"Mutation\";\n }\n if (!operationTypes.subscription && objects.has(\"Subscription\")) {\n operationTypes.subscription = \"Subscription\";\n }\n\n return {\n objects,\n inputs,\n enums,\n unions,\n scalars,\n operationTypes,\n } satisfies SchemaIndex;\n};\n\ntype TypeLevel = {\n readonly kind: \"list\" | \"named\";\n readonly nonNull: boolean;\n};\n\nconst collectTypeLevels = (\n type: TypeNode,\n nonNull = false,\n levels: TypeLevel[] = [],\n): { readonly name: string; readonly levels: TypeLevel[] } => {\n if (type.kind === Kind.NON_NULL_TYPE) {\n return collectTypeLevels(type.type, true, levels);\n }\n\n if (type.kind === Kind.LIST_TYPE) {\n levels.push({ kind: \"list\", nonNull });\n return collectTypeLevels(type.type, false, levels);\n }\n\n levels.push({ kind: \"named\", nonNull });\n return { name: type.name.value, levels };\n};\n\nconst buildTypeModifier = (levels: TypeLevel[]): TypeModifier => {\n let modifier: TypeModifier = \"?\";\n\n for (const level of levels.slice().reverse()) {\n if (level.kind === \"named\") {\n // Inner type: always explicit nullable marker\n modifier = level.nonNull ? \"!\" : \"?\";\n continue;\n }\n\n // List type: append []? or []! based on list's nullability\n const listSuffix = level.nonNull ? \"[]!\" : \"[]?\";\n modifier = `${modifier}${listSuffix}` as TypeModifier;\n }\n\n return modifier;\n};\n\nconst parseTypeReference = (type: TypeNode): { readonly name: string; readonly modifier: string } => {\n const { name, levels } = collectTypeLevels(type);\n return { name, modifier: buildTypeModifier(levels) };\n};\n\nconst renderType = (name: string, modifier: string): string => JSON.stringify(`${name}:${modifier}`);\n\nconst isScalarName = (schema: SchemaIndex, name: string): boolean => builtinScalarTypes.has(name) || schema.scalars.has(name);\nconst isEnumName = (schema: SchemaIndex, name: string): boolean => schema.enums.has(name);\nconst _isInputName = (schema: SchemaIndex, name: string): boolean => schema.inputs.has(name);\nconst isUnionName = (schema: SchemaIndex, name: string): boolean => schema.unions.has(name);\nconst isObjectName = (schema: SchemaIndex, name: string): boolean => schema.objects.has(name);\n\nconst renderConstValue = (value: ConstValueNode): string => {\n switch (value.kind) {\n case Kind.NULL:\n return \"null\";\n case Kind.INT:\n case Kind.FLOAT:\n return value.value;\n case Kind.STRING:\n case Kind.ENUM:\n return JSON.stringify(value.value);\n case Kind.BOOLEAN:\n return value.value ? \"true\" : \"false\";\n case Kind.LIST:\n return `[${value.values.map((item) => renderConstValue(item)).join(\", \")}]`;\n case Kind.OBJECT: {\n if (value.fields.length === 0) {\n return \"{}\";\n }\n const entries = value.fields.map((field) => `${field.name.value}: ${renderConstValue(field.value)}`);\n return `{ ${entries.join(\", \")} }`;\n }\n }\n};\n\nconst renderConstArgumentMap = (\n args: readonly { readonly name: { readonly value: string }; readonly value: ConstValueNode }[] | undefined,\n): string => {\n const entries = (args ?? []).map((arg) => `${arg.name.value}: ${renderConstValue(arg.value)}`);\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDirectives = (directives: readonly ConstDirectiveNode[] | undefined): string => {\n const entries = (directives ?? []).map(\n (directive) => `${directive.name.value}: ${renderConstArgumentMap(directive.arguments)}`,\n );\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDefaultValue = (value: ConstValueNode | null | undefined): string =>\n value ? `() => (${renderConstValue(value)})` : \"null\";\n\nconst renderInputRef = (schema: SchemaIndex, definition: InputValueDefinitionNode): string => {\n const { name, modifier } = parseTypeReference(definition.type);\n const tuple = renderType(name, modifier);\n const defaultValue = renderDefaultValue(definition.defaultValue ?? null);\n const directives = renderDirectives(definition.directives);\n\n if (isScalarName(schema, name)) {\n return `unsafeInputType.scalar(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeInputType.enum(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n return `unsafeInputType.input(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n};\n\nconst renderArgumentMap = (schema: SchemaIndex, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const entries = [...(args ?? [])]\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((arg) => `${arg.name.value}: ${renderInputRef(schema, arg)}`);\n\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderOutputRef = (schema: SchemaIndex, type: TypeNode, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const { name, modifier } = parseTypeReference(type);\n const modifiedType = renderType(name, modifier);\n const argumentMap = renderArgumentMap(schema, args);\n\n if (isScalarName(schema, name)) {\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeOutputType.enum(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isUnionName(schema, name)) {\n return `unsafeOutputType.union(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isObjectName(schema, name)) {\n return `unsafeOutputType.object(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n};\n\nconst renderPropertyLines = ({ entries, indentSize }: { entries: string[]; indentSize: number }) => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const indent = \" \".repeat(indentSize);\n const lastIndent = \" \".repeat(indentSize - 2);\n return [\"{\", `${indent}${entries.join(`,\\n${indent}`)},`, `${lastIndent}}`].join(`\\n`);\n};\n\nconst renderObjectFields = (schema: SchemaIndex, fields: Map<string, FieldDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderOutputRef(schema, field.type, field.arguments)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderInputFields = (schema: SchemaIndex, fields: Map<string, InputValueDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderInputRef(schema, field)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderScalarDefinition = (record: ScalarRecord): string => {\n const typeInfo = builtinScalarTypes.get(record.name) ?? { input: \"string\", output: \"string\" };\n const scalarType = `type<{ input: ${typeInfo.input}; output: ${typeInfo.output} }>()`;\n return `${record.name}: define(\"${record.name}\").scalar(${scalarType})`;\n};\n\nconst renderObjectDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.objects.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderObjectFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").object(${fields})`;\n};\n\nconst renderInputDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.inputs.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderInputFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").input(${fields})`;\n};\n\nconst renderEnumDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.enums.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const values = Array.from(record.values.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((value) => `${value.name.value}: true`)\n .join(\", \");\n const body = values.length === 0 ? \"{}\" : `{ ${values} }`;\n\n return `${record.name}: define(\"${record.name}\").enum(${body})`;\n};\n\nconst renderUnionDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.unions.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const members = Array.from(record.members.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((member) => `${member.name.value}: true`)\n .join(\", \");\n const body = members.length === 0 ? \"{}\" : `{ ${members} }`;\n\n return `${record.name}: define(\"${record.name}\").union(${body})`;\n};\n\nconst collectObjectTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.objects.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectInputTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.inputs.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectEnumTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.enums.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectUnionTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.unions.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectScalarNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.scalars.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst renderInputTypeMethod = (factoryVar: string, kind: \"scalar\" | \"enum\" | \"input\", typeName: string): string =>\n `${typeName}: ${factoryVar}(\"${kind}\", \"${typeName}\")`;\n\nconst renderInputTypeMethods = (schema: SchemaIndex, factoryVar: string): string => {\n const scalarMethods = Array.from(builtinScalarTypes.keys())\n .concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name)))\n .map((name) => renderInputTypeMethod(factoryVar, \"scalar\", name));\n\n const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, \"enum\", name));\n\n const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(factoryVar, \"input\", name));\n\n const allMethods = [...scalarMethods, ...enumMethods, ...inputMethods].sort((left, right) => {\n const leftName = left.split(\":\")[0] ?? \"\";\n const rightName = right.split(\":\")[0] ?? \"\";\n return leftName.localeCompare(rightName);\n });\n\n return renderPropertyLines({ entries: allMethods, indentSize: 2 });\n};\n\nexport type GeneratedModule = {\n readonly code: string;\n readonly stats: {\n readonly objects: number;\n readonly enums: number;\n readonly inputs: number;\n readonly unions: number;\n };\n};\n\ntype PerSchemaInjection = {\n readonly scalarImportPath: string;\n readonly adapterImportPath?: string;\n};\n\ntype RuntimeTemplateInjection =\n | { readonly mode: \"inline\" }\n | {\n readonly mode: \"inject\";\n readonly perSchema: Map<string, PerSchemaInjection>;\n };\n\nexport type RuntimeGenerationOptions = {\n readonly injection?: Map<string, PerSchemaInjection>;\n};\n\ntype MultiRuntimeTemplateOptions = {\n readonly schemas: Record<\n string,\n {\n readonly queryType: string;\n readonly mutationType: string;\n readonly subscriptionType: string;\n readonly scalarBlock: string;\n readonly enumBlock: string;\n readonly inputBlock: string;\n readonly objectBlock: string;\n readonly unionBlock: string;\n readonly inputTypeMethodsBlock: string;\n }\n >;\n readonly injection: RuntimeTemplateInjection;\n};\n\nconst multiRuntimeTemplate = ($$: MultiRuntimeTemplateOptions) => {\n // Build imports based on injection mode\n const imports: string[] = [];\n const scalarAliases = new Map<string, string>();\n const adapterAliases = new Map<string, string>();\n\n if ($$.injection.mode === \"inject\") {\n // Group imports by file path\n const importsByPath = new Map<string, string[]>();\n\n for (const [schemaName, injection] of $$.injection.perSchema) {\n const scalarAlias = `scalar_${schemaName}`;\n scalarAliases.set(schemaName, scalarAlias);\n\n // Group scalar import\n const scalarSpecifiers = importsByPath.get(injection.scalarImportPath) ?? [];\n if (!importsByPath.has(injection.scalarImportPath)) {\n importsByPath.set(injection.scalarImportPath, scalarSpecifiers);\n }\n scalarSpecifiers.push(`scalar as ${scalarAlias}`);\n\n // Group adapter import (optional)\n if (injection.adapterImportPath) {\n const adapterAlias = `adapter_${schemaName}`;\n adapterAliases.set(schemaName, adapterAlias);\n const adapterSpecifiers = importsByPath.get(injection.adapterImportPath) ?? [];\n if (!importsByPath.has(injection.adapterImportPath)) {\n importsByPath.set(injection.adapterImportPath, adapterSpecifiers);\n }\n adapterSpecifiers.push(`adapter as ${adapterAlias}`);\n }\n }\n\n // Generate grouped imports\n for (const [path, specifiers] of importsByPath) {\n if (specifiers.length === 1) {\n imports.push(`import { ${specifiers[0]} } from \"${path}\";`);\n } else {\n imports.push(`import {\\n ${specifiers.join(\",\\n \")},\\n} from \"${path}\";`);\n }\n }\n }\n\n const extraImports = imports.length > 0 ? `${imports.join(\"\\n\")}\\n` : \"\";\n\n // Generate per-schema definitions\n const schemaBlocks: string[] = [];\n const gqlEntries: string[] = [];\n\n for (const [name, config] of Object.entries($$.schemas)) {\n const schemaVar = `${name}Schema`;\n const scalarBlock = $$.injection.mode === \"inject\" ? scalarAliases.get(name) : config.scalarBlock;\n\n // Get optional adapter\n const adapterVar = adapterAliases.get(name);\n\n // Build type exports\n const typeExports = [`export type Schema_${name} = typeof ${schemaVar} & { _?: never };`];\n if (adapterVar) {\n typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);\n }\n\n const inputTypeMethodsVar = `inputTypeMethods_${name}`;\n const factoryVar = `createMethod_${name}`;\n\n schemaBlocks.push(`\nconst ${schemaVar} = {\n label: \"${name}\" as const,\n operations: defineOperationRoots({\n query: \"${config.queryType}\",\n mutation: \"${config.mutationType}\",\n subscription: \"${config.subscriptionType}\",\n }),\n scalar: ${scalarBlock},\n enum: ${config.enumBlock},\n input: ${config.inputBlock},\n object: ${config.objectBlock},\n union: ${config.unionBlock},\n} satisfies AnyGraphqlSchema;\n\nconst ${factoryVar} = createVarMethodFactory<typeof ${schemaVar}>();\nconst ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock} satisfies InputTypeMethods<typeof ${schemaVar}>;\n\n${typeExports.join(\"\\n\")}`);\n\n // Build gql entry with options - inputTypeMethods is always required\n if (adapterVar) {\n const typeParams = `<Schema_${name}, Adapter_${name}>`;\n gqlEntries.push(\n ` ${name}: createGqlElementComposer${typeParams}(${schemaVar}, { adapter: ${adapterVar}, inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n } else {\n gqlEntries.push(\n ` ${name}: createGqlElementComposer<Schema_${name}>(${schemaVar}, { inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n }\n }\n\n return `\\\nimport {\n type AnyGraphqlSchema,\n type InputTypeMethods,\n createGqlElementComposer,\n createVarMethodFactory,\n define,\n defineOperationRoots,\n unsafeInputType,\n unsafeOutputType,\n} from \"@soda-gql/core\";\n${extraImports}\n${schemaBlocks.join(\"\\n\")}\n\nexport const gql = {\n${gqlEntries.join(\",\\n\")}\n};\n`;\n};\n\nexport const generateMultiSchemaModule = (\n schemas: Map<string, DocumentNode>,\n options?: RuntimeGenerationOptions,\n): GeneratedModule => {\n // biome-ignore lint/suspicious/noExplicitAny: complex schema config type\n const schemaConfigs: Record<string, any> = {};\n const allStats = {\n objects: 0,\n enums: 0,\n inputs: 0,\n unions: 0,\n };\n\n for (const [name, document] of schemas.entries()) {\n const schema = createSchemaIndex(document);\n\n const builtinScalarDefinitions = Array.from(builtinScalarTypes.keys()).map((name) =>\n renderScalarDefinition(schema.scalars.get(name) ?? { name, directives: [] }),\n );\n\n const customScalarDefinitions = collectScalarNames(schema)\n .filter((name) => !builtinScalarTypes.has(name))\n .map((name) => {\n const record = schema.scalars.get(name);\n return record ? renderScalarDefinition(record) : \"\";\n })\n .filter((definition) => definition.length > 0);\n\n const allScalarDefinitions = builtinScalarDefinitions.concat(customScalarDefinitions);\n\n const objectTypeNames = collectObjectTypeNames(schema);\n const enumTypeNames = collectEnumTypeNames(schema);\n const inputTypeNames = collectInputTypeNames(schema);\n const unionTypeNames = collectUnionTypeNames(schema);\n\n const scalarBlock = renderPropertyLines({ entries: allScalarDefinitions, indentSize: 4 });\n const enumDefinitions = enumTypeNames\n .map((name) => renderEnumDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const enumBlock = renderPropertyLines({ entries: enumDefinitions, indentSize: 4 });\n const inputDefinitions = inputTypeNames\n .map((name) => renderInputDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const inputBlock = renderPropertyLines({ entries: inputDefinitions, indentSize: 4 });\n const objectDefinitions = objectTypeNames\n .map((name) => renderObjectDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const objectBlock = renderPropertyLines({ entries: objectDefinitions, indentSize: 4 });\n const unionDefinitions = unionTypeNames\n .map((name) => renderUnionDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const unionBlock = renderPropertyLines({ entries: unionDefinitions, indentSize: 4 });\n\n const factoryVar = `createMethod_${name}`;\n const inputTypeMethodsBlock = renderInputTypeMethods(schema, factoryVar);\n\n const queryType = schema.operationTypes.query ?? \"Query\";\n const mutationType = schema.operationTypes.mutation ?? \"Mutation\";\n const subscriptionType = schema.operationTypes.subscription ?? \"Subscription\";\n\n schemaConfigs[name] = {\n queryType,\n mutationType,\n subscriptionType,\n scalarBlock,\n enumBlock,\n inputBlock,\n objectBlock,\n unionBlock,\n inputTypeMethodsBlock,\n };\n\n // Accumulate stats\n allStats.objects += objectDefinitions.length;\n allStats.enums += enumDefinitions.length;\n allStats.inputs += inputDefinitions.length;\n allStats.unions += unionDefinitions.length;\n }\n\n const injection: RuntimeTemplateInjection = options?.injection\n ? { mode: \"inject\", perSchema: options.injection }\n : { mode: \"inline\" };\n\n const code = multiRuntimeTemplate({\n schemas: schemaConfigs,\n injection,\n });\n\n return {\n code,\n stats: allStats,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_generator = require('./generator-
|
|
1
|
+
const require_generator = require('./generator-BVf7xlYs.cjs');
|
|
2
2
|
|
|
3
3
|
exports.createSchemaIndex = require_generator.createSchemaIndex;
|
|
4
4
|
exports.generateMultiSchemaModule = require_generator.generateMultiSchemaModule;
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_generator = require('./generator-
|
|
1
|
+
const require_generator = require('./generator-BVf7xlYs.cjs');
|
|
2
2
|
let node_fs = require("node:fs");
|
|
3
3
|
let node_path = require("node:path");
|
|
4
4
|
let neverthrow = require("neverthrow");
|
|
@@ -198,7 +198,7 @@ const runCodegen = async (options) => {
|
|
|
198
198
|
}
|
|
199
199
|
const { code } = require_generator.generateMultiSchemaModule(schemas, { injection: injectionConfig });
|
|
200
200
|
for (const [name, document] of schemas.entries()) {
|
|
201
|
-
const schemaIndex = (await Promise.resolve().then(() => require("./generator-
|
|
201
|
+
const schemaIndex = (await Promise.resolve().then(() => require("./generator-D_GvAaQh.cjs"))).createSchemaIndex(document);
|
|
202
202
|
const objects = Array.from(schemaIndex.objects.keys()).filter((n) => !n.startsWith("__")).length;
|
|
203
203
|
const enums = Array.from(schemaIndex.enums.keys()).filter((n) => !n.startsWith("__")).length;
|
|
204
204
|
const inputs = Array.from(schemaIndex.inputs.keys()).filter((n) => !n.startsWith("__")).length;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as generateMultiSchemaModule } from "./generator-
|
|
1
|
+
import { n as generateMultiSchemaModule } from "./generator-DQR0OMdO.mjs";
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { basename, dirname, extname, relative, resolve } from "node:path";
|
|
4
4
|
import { err, ok } from "neverthrow";
|
|
@@ -198,7 +198,7 @@ const runCodegen = async (options) => {
|
|
|
198
198
|
}
|
|
199
199
|
const { code } = generateMultiSchemaModule(schemas, { injection: injectionConfig });
|
|
200
200
|
for (const [name, document] of schemas.entries()) {
|
|
201
|
-
const schemaIndex = (await import("./generator-
|
|
201
|
+
const schemaIndex = (await import("./generator-DpnCKxKF.mjs")).createSchemaIndex(document);
|
|
202
202
|
const objects = Array.from(schemaIndex.objects.keys()).filter((n) => !n.startsWith("__")).length;
|
|
203
203
|
const enums = Array.from(schemaIndex.enums.keys()).filter((n) => !n.startsWith("__")).length;
|
|
204
204
|
const inputs = Array.from(schemaIndex.inputs.keys()).filter((n) => !n.startsWith("__")).length;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soda-gql/codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "GraphQL schema code generation for soda-gql",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"./package.json": "./package.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@soda-gql/core": "0.
|
|
50
|
-
"@soda-gql/runtime": "0.
|
|
49
|
+
"@soda-gql/core": "0.4.1",
|
|
50
|
+
"@soda-gql/runtime": "0.4.1",
|
|
51
51
|
"esbuild": "^0.24.0",
|
|
52
52
|
"graphql": "^16.8.1",
|
|
53
53
|
"neverthrow": "^8.1.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator-BEIrzINv.mjs","names":["operationTypes: OperationTypeNames","modifier: TypeModifier","imports: string[]","schemaBlocks: string[]","gqlEntries: string[]","schemaConfigs: Record<string, any>","name","injection: RuntimeTemplateInjection"],"sources":["../src/generator.ts"],"sourcesContent":["import type { TypeModifier } from \"@soda-gql/core\";\nimport {\n type ConstDirectiveNode,\n type ConstValueNode,\n type DocumentNode,\n type EnumValueDefinitionNode,\n type FieldDefinitionNode,\n type InputValueDefinitionNode,\n Kind,\n type NamedTypeNode,\n type SchemaDefinitionNode,\n type SchemaExtensionNode,\n type TypeNode,\n} from \"graphql\";\n\nconst builtinScalarTypes = new Map<string, { readonly input: string; readonly output: string }>([\n [\"ID\", { input: \"string\", output: \"string\" }],\n [\"String\", { input: \"string\", output: \"string\" }],\n [\"Int\", { input: \"number\", output: \"number\" }],\n [\"Float\", { input: \"number\", output: \"number\" }],\n [\"Boolean\", { input: \"boolean\", output: \"boolean\" }],\n]);\n\ntype OperationTypeNames = {\n query?: string;\n mutation?: string;\n subscription?: string;\n};\n\ntype ObjectRecord = {\n readonly name: string;\n readonly fields: Map<string, FieldDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype InputRecord = {\n readonly name: string;\n readonly fields: Map<string, InputValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype EnumRecord = {\n readonly name: string;\n readonly values: Map<string, EnumValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype UnionRecord = {\n readonly name: string;\n readonly members: Map<string, NamedTypeNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype ScalarRecord = {\n readonly name: string;\n directives: ConstDirectiveNode[];\n};\n\ntype SchemaIndex = {\n readonly objects: Map<string, ObjectRecord>;\n readonly inputs: Map<string, InputRecord>;\n readonly enums: Map<string, EnumRecord>;\n readonly unions: Map<string, UnionRecord>;\n readonly scalars: Map<string, ScalarRecord>;\n readonly operationTypes: OperationTypeNames;\n};\n\nconst ensureRecord = <T>(collection: Map<string, T>, key: string, factory: (name: string) => T): T => {\n const existing = collection.get(key);\n if (existing) {\n return existing;\n }\n\n const created = factory(key);\n collection.set(key, created);\n return created;\n};\n\nconst addObjectFields = (target: Map<string, FieldDefinitionNode>, fields: readonly FieldDefinitionNode[] | undefined): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addInputFields = (\n target: Map<string, InputValueDefinitionNode>,\n fields: readonly InputValueDefinitionNode[] | undefined,\n): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addEnumValues = (\n target: Map<string, EnumValueDefinitionNode>,\n values: readonly EnumValueDefinitionNode[] | undefined,\n): void => {\n if (!values) {\n return;\n }\n\n for (const value of values) {\n target.set(value.name.value, value);\n }\n};\n\nconst addUnionMembers = (target: Map<string, NamedTypeNode>, members: readonly NamedTypeNode[] | undefined): void => {\n if (!members) {\n return;\n }\n\n for (const member of members) {\n target.set(member.name.value, member);\n }\n};\n\nconst mergeDirectives = (\n existing: ConstDirectiveNode[] | undefined,\n incoming: readonly ConstDirectiveNode[] | undefined,\n precedence: \"definition\" | \"extension\",\n): ConstDirectiveNode[] => {\n const current = existing ?? [];\n const next = incoming ? Array.from(incoming) : [];\n return precedence === \"definition\" ? [...next, ...current] : [...current, ...next];\n};\n\nconst updateOperationTypes = (\n operationTypes: OperationTypeNames,\n definition: SchemaDefinitionNode | SchemaExtensionNode,\n): void => {\n for (const operation of definition.operationTypes ?? []) {\n const typeName = operation.type.name.value;\n switch (operation.operation) {\n case \"query\":\n operationTypes.query = typeName;\n break;\n case \"mutation\":\n operationTypes.mutation = typeName;\n break;\n case \"subscription\":\n operationTypes.subscription = typeName;\n break;\n default:\n break;\n }\n }\n};\n\nexport const createSchemaIndex = (document: DocumentNode): SchemaIndex => {\n const objects = new Map<string, ObjectRecord>();\n const inputs = new Map<string, InputRecord>();\n const enums = new Map<string, EnumRecord>();\n const unions = new Map<string, UnionRecord>();\n const scalars = new Map<string, ScalarRecord>();\n const operationTypes: OperationTypeNames = {};\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(objects, definition.name.value, (name) => ({\n name,\n fields: new Map<string, FieldDefinitionNode>(),\n directives: [],\n }));\n addObjectFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(inputs, definition.name.value, (name) => ({\n name,\n fields: new Map<string, InputValueDefinitionNode>(),\n directives: [],\n }));\n addInputFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.ENUM_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(enums, definition.name.value, (name) => ({\n name,\n values: new Map<string, EnumValueDefinitionNode>(),\n directives: [],\n }));\n addEnumValues(record.values, definition.values);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.UNION_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(unions, definition.name.value, (name) => ({\n name,\n members: new Map<string, NamedTypeNode>(),\n directives: [],\n }));\n addUnionMembers(record.members, definition.types);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.SCALAR_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(scalars, definition.name.value, (name) => ({\n name,\n directives: [],\n }));\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n updateOperationTypes(operationTypes, definition);\n break;\n default:\n break;\n }\n }\n\n if (!operationTypes.query && objects.has(\"Query\")) {\n operationTypes.query = \"Query\";\n }\n if (!operationTypes.mutation && objects.has(\"Mutation\")) {\n operationTypes.mutation = \"Mutation\";\n }\n if (!operationTypes.subscription && objects.has(\"Subscription\")) {\n operationTypes.subscription = \"Subscription\";\n }\n\n return {\n objects,\n inputs,\n enums,\n unions,\n scalars,\n operationTypes,\n } satisfies SchemaIndex;\n};\n\ntype TypeLevel = {\n readonly kind: \"list\" | \"named\";\n readonly nonNull: boolean;\n};\n\nconst collectTypeLevels = (\n type: TypeNode,\n nonNull = false,\n levels: TypeLevel[] = [],\n): { readonly name: string; readonly levels: TypeLevel[] } => {\n if (type.kind === Kind.NON_NULL_TYPE) {\n return collectTypeLevels(type.type, true, levels);\n }\n\n if (type.kind === Kind.LIST_TYPE) {\n levels.push({ kind: \"list\", nonNull });\n return collectTypeLevels(type.type, false, levels);\n }\n\n levels.push({ kind: \"named\", nonNull });\n return { name: type.name.value, levels };\n};\n\nconst buildTypeModifier = (levels: TypeLevel[]): TypeModifier => {\n let modifier: TypeModifier = \"?\";\n\n for (const level of levels.slice().reverse()) {\n if (level.kind === \"named\") {\n // Inner type: always explicit nullable marker\n modifier = level.nonNull ? \"!\" : \"?\";\n continue;\n }\n\n // List type: append []? or []! based on list's nullability\n const listSuffix = level.nonNull ? \"[]!\" : \"[]?\";\n modifier = `${modifier}${listSuffix}` as TypeModifier;\n }\n\n return modifier;\n};\n\nconst parseTypeReference = (type: TypeNode): { readonly name: string; readonly modifier: string } => {\n const { name, levels } = collectTypeLevels(type);\n return { name, modifier: buildTypeModifier(levels) };\n};\n\nconst renderType = (name: string, modifier: string): string => JSON.stringify(`${name}:${modifier}`);\n\nconst isScalarName = (schema: SchemaIndex, name: string): boolean => builtinScalarTypes.has(name) || schema.scalars.has(name);\nconst isEnumName = (schema: SchemaIndex, name: string): boolean => schema.enums.has(name);\nconst _isInputName = (schema: SchemaIndex, name: string): boolean => schema.inputs.has(name);\nconst isUnionName = (schema: SchemaIndex, name: string): boolean => schema.unions.has(name);\nconst isObjectName = (schema: SchemaIndex, name: string): boolean => schema.objects.has(name);\n\nconst renderConstValue = (value: ConstValueNode): string => {\n switch (value.kind) {\n case Kind.NULL:\n return \"null\";\n case Kind.INT:\n case Kind.FLOAT:\n return value.value;\n case Kind.STRING:\n case Kind.ENUM:\n return JSON.stringify(value.value);\n case Kind.BOOLEAN:\n return value.value ? \"true\" : \"false\";\n case Kind.LIST:\n return `[${value.values.map((item) => renderConstValue(item)).join(\", \")}]`;\n case Kind.OBJECT: {\n if (value.fields.length === 0) {\n return \"{}\";\n }\n const entries = value.fields.map((field) => `${field.name.value}: ${renderConstValue(field.value)}`);\n return `{ ${entries.join(\", \")} }`;\n }\n }\n};\n\nconst renderConstArgumentMap = (\n args: readonly { readonly name: { readonly value: string }; readonly value: ConstValueNode }[] | undefined,\n): string => {\n const entries = (args ?? []).map((arg) => `${arg.name.value}: ${renderConstValue(arg.value)}`);\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDirectives = (directives: readonly ConstDirectiveNode[] | undefined): string => {\n const entries = (directives ?? []).map(\n (directive) => `${directive.name.value}: ${renderConstArgumentMap(directive.arguments)}`,\n );\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDefaultValue = (value: ConstValueNode | null | undefined): string =>\n value ? `() => (${renderConstValue(value)})` : \"null\";\n\nconst renderInputRef = (schema: SchemaIndex, definition: InputValueDefinitionNode): string => {\n const { name, modifier } = parseTypeReference(definition.type);\n const tuple = renderType(name, modifier);\n const defaultValue = renderDefaultValue(definition.defaultValue ?? null);\n const directives = renderDirectives(definition.directives);\n\n if (isScalarName(schema, name)) {\n return `unsafeInputType.scalar(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeInputType.enum(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n return `unsafeInputType.input(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n};\n\nconst renderArgumentMap = (schema: SchemaIndex, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const entries = [...(args ?? [])]\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((arg) => `${arg.name.value}: ${renderInputRef(schema, arg)}`);\n\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderOutputRef = (schema: SchemaIndex, type: TypeNode, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const { name, modifier } = parseTypeReference(type);\n const modifiedType = renderType(name, modifier);\n const argumentMap = renderArgumentMap(schema, args);\n\n if (isScalarName(schema, name)) {\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeOutputType.enum(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isUnionName(schema, name)) {\n return `unsafeOutputType.union(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isObjectName(schema, name)) {\n return `unsafeOutputType.object(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n};\n\nconst renderPropertyLines = ({ entries, indentSize }: { entries: string[]; indentSize: number }) => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const indent = \" \".repeat(indentSize);\n const lastIndent = \" \".repeat(indentSize - 2);\n return [\"{\", `${indent}${entries.join(`,\\n${indent}`)},`, `${lastIndent}}`].join(`\\n`);\n};\n\nconst renderObjectFields = (schema: SchemaIndex, fields: Map<string, FieldDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderOutputRef(schema, field.type, field.arguments)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderInputFields = (schema: SchemaIndex, fields: Map<string, InputValueDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderInputRef(schema, field)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderScalarDefinition = (record: ScalarRecord): string => {\n const typeInfo = builtinScalarTypes.get(record.name) ?? { input: \"string\", output: \"string\" };\n const scalarType = `type<{ input: ${typeInfo.input}; output: ${typeInfo.output} }>()`;\n return `${record.name}: define(\"${record.name}\").scalar(${scalarType})`;\n};\n\nconst renderObjectDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.objects.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderObjectFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").object(${fields})`;\n};\n\nconst renderInputDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.inputs.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderInputFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").input(${fields})`;\n};\n\nconst renderEnumDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.enums.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const values = Array.from(record.values.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((value) => `${value.name.value}: true`)\n .join(\", \");\n const body = values.length === 0 ? \"{}\" : `{ ${values} }`;\n\n return `${record.name}: define(\"${record.name}\").enum(${body})`;\n};\n\nconst renderUnionDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.unions.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const members = Array.from(record.members.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((member) => `${member.name.value}: true`)\n .join(\", \");\n const body = members.length === 0 ? \"{}\" : `{ ${members} }`;\n\n return `${record.name}: define(\"${record.name}\").union(${body})`;\n};\n\nconst collectObjectTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.objects.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectInputTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.inputs.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectEnumTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.enums.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectUnionTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.unions.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectScalarNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.scalars.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst renderInputTypeMethod = (kind: \"scalar\" | \"enum\" | \"input\", typeName: string): string =>\n `${typeName}: createVarMethod(\"${kind}\", \"${typeName}\")`;\n\nconst renderInputTypeMethods = (schema: SchemaIndex): string => {\n const scalarMethods = Array.from(builtinScalarTypes.keys())\n .concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name)))\n .map((name) => renderInputTypeMethod(\"scalar\", name));\n\n const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(\"enum\", name));\n\n const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(\"input\", name));\n\n const allMethods = [...scalarMethods, ...enumMethods, ...inputMethods].sort((left, right) => {\n const leftName = left.split(\":\")[0] ?? \"\";\n const rightName = right.split(\":\")[0] ?? \"\";\n return leftName.localeCompare(rightName);\n });\n\n return renderPropertyLines({ entries: allMethods, indentSize: 2 });\n};\n\nexport type GeneratedModule = {\n readonly code: string;\n readonly stats: {\n readonly objects: number;\n readonly enums: number;\n readonly inputs: number;\n readonly unions: number;\n };\n};\n\ntype PerSchemaInjection = {\n readonly scalarImportPath: string;\n readonly adapterImportPath?: string;\n};\n\ntype RuntimeTemplateInjection =\n | { readonly mode: \"inline\" }\n | {\n readonly mode: \"inject\";\n readonly perSchema: Map<string, PerSchemaInjection>;\n };\n\nexport type RuntimeGenerationOptions = {\n readonly injection?: Map<string, PerSchemaInjection>;\n};\n\ntype MultiRuntimeTemplateOptions = {\n readonly schemas: Record<\n string,\n {\n readonly queryType: string;\n readonly mutationType: string;\n readonly subscriptionType: string;\n readonly scalarBlock: string;\n readonly enumBlock: string;\n readonly inputBlock: string;\n readonly objectBlock: string;\n readonly unionBlock: string;\n readonly inputTypeMethodsBlock: string;\n }\n >;\n readonly injection: RuntimeTemplateInjection;\n};\n\nconst multiRuntimeTemplate = ($$: MultiRuntimeTemplateOptions) => {\n // Build imports based on injection mode\n const imports: string[] = [];\n const scalarAliases = new Map<string, string>();\n const adapterAliases = new Map<string, string>();\n\n if ($$.injection.mode === \"inject\") {\n // Group imports by file path\n const importsByPath = new Map<string, string[]>();\n\n for (const [schemaName, injection] of $$.injection.perSchema) {\n const scalarAlias = `scalar_${schemaName}`;\n scalarAliases.set(schemaName, scalarAlias);\n\n // Group scalar import\n const scalarSpecifiers = importsByPath.get(injection.scalarImportPath) ?? [];\n if (!importsByPath.has(injection.scalarImportPath)) {\n importsByPath.set(injection.scalarImportPath, scalarSpecifiers);\n }\n scalarSpecifiers.push(`scalar as ${scalarAlias}`);\n\n // Group adapter import (optional)\n if (injection.adapterImportPath) {\n const adapterAlias = `adapter_${schemaName}`;\n adapterAliases.set(schemaName, adapterAlias);\n const adapterSpecifiers = importsByPath.get(injection.adapterImportPath) ?? [];\n if (!importsByPath.has(injection.adapterImportPath)) {\n importsByPath.set(injection.adapterImportPath, adapterSpecifiers);\n }\n adapterSpecifiers.push(`adapter as ${adapterAlias}`);\n }\n }\n\n // Generate grouped imports\n for (const [path, specifiers] of importsByPath) {\n if (specifiers.length === 1) {\n imports.push(`import { ${specifiers[0]} } from \"${path}\";`);\n } else {\n imports.push(`import {\\n ${specifiers.join(\",\\n \")},\\n} from \"${path}\";`);\n }\n }\n }\n\n const extraImports = imports.length > 0 ? `${imports.join(\"\\n\")}\\n` : \"\";\n\n // Generate per-schema definitions\n const schemaBlocks: string[] = [];\n const gqlEntries: string[] = [];\n\n for (const [name, config] of Object.entries($$.schemas)) {\n const schemaVar = `${name}Schema`;\n const scalarBlock = $$.injection.mode === \"inject\" ? scalarAliases.get(name) : config.scalarBlock;\n\n // Get optional adapter\n const adapterVar = adapterAliases.get(name);\n\n // Build type exports\n const typeExports = [`export type Schema_${name} = typeof ${schemaVar} & { _?: never };`];\n if (adapterVar) {\n typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);\n }\n\n const inputTypeMethodsVar = `inputTypeMethods_${name}`;\n\n schemaBlocks.push(`\nconst ${schemaVar} = {\n label: \"${name}\" as const,\n operations: defineOperationRoots({\n query: \"${config.queryType}\",\n mutation: \"${config.mutationType}\",\n subscription: \"${config.subscriptionType}\",\n }),\n scalar: ${scalarBlock},\n enum: ${config.enumBlock},\n input: ${config.inputBlock},\n object: ${config.objectBlock},\n union: ${config.unionBlock},\n} satisfies AnyGraphqlSchema;\n\nconst ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock};\n\n${typeExports.join(\"\\n\")}`);\n\n // Build gql entry with options - inputTypeMethods is always required\n if (adapterVar) {\n const typeParams = `<Schema_${name}, Adapter_${name}>`;\n gqlEntries.push(\n ` ${name}: createGqlElementComposer${typeParams}(${schemaVar}, { adapter: ${adapterVar}, inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n } else {\n gqlEntries.push(\n ` ${name}: createGqlElementComposer<Schema_${name}>(${schemaVar}, { inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n }\n }\n\n return `\\\nimport {\n type AnyGraphqlSchema,\n createGqlElementComposer,\n createVarMethod,\n define,\n defineOperationRoots,\n unsafeInputType,\n unsafeOutputType,\n} from \"@soda-gql/core\";\n${extraImports}\n${schemaBlocks.join(\"\\n\")}\n\nexport const gql = {\n${gqlEntries.join(\",\\n\")}\n};\n`;\n};\n\nexport const generateMultiSchemaModule = (\n schemas: Map<string, DocumentNode>,\n options?: RuntimeGenerationOptions,\n): GeneratedModule => {\n // biome-ignore lint/suspicious/noExplicitAny: complex schema config type\n const schemaConfigs: Record<string, any> = {};\n const allStats = {\n objects: 0,\n enums: 0,\n inputs: 0,\n unions: 0,\n };\n\n for (const [name, document] of schemas.entries()) {\n const schema = createSchemaIndex(document);\n\n const builtinScalarDefinitions = Array.from(builtinScalarTypes.keys()).map((name) =>\n renderScalarDefinition(schema.scalars.get(name) ?? { name, directives: [] }),\n );\n\n const customScalarDefinitions = collectScalarNames(schema)\n .filter((name) => !builtinScalarTypes.has(name))\n .map((name) => {\n const record = schema.scalars.get(name);\n return record ? renderScalarDefinition(record) : \"\";\n })\n .filter((definition) => definition.length > 0);\n\n const allScalarDefinitions = builtinScalarDefinitions.concat(customScalarDefinitions);\n\n const objectTypeNames = collectObjectTypeNames(schema);\n const enumTypeNames = collectEnumTypeNames(schema);\n const inputTypeNames = collectInputTypeNames(schema);\n const unionTypeNames = collectUnionTypeNames(schema);\n\n const scalarBlock = renderPropertyLines({ entries: allScalarDefinitions, indentSize: 4 });\n const enumDefinitions = enumTypeNames\n .map((name) => renderEnumDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const enumBlock = renderPropertyLines({ entries: enumDefinitions, indentSize: 4 });\n const inputDefinitions = inputTypeNames\n .map((name) => renderInputDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const inputBlock = renderPropertyLines({ entries: inputDefinitions, indentSize: 4 });\n const objectDefinitions = objectTypeNames\n .map((name) => renderObjectDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const objectBlock = renderPropertyLines({ entries: objectDefinitions, indentSize: 4 });\n const unionDefinitions = unionTypeNames\n .map((name) => renderUnionDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const unionBlock = renderPropertyLines({ entries: unionDefinitions, indentSize: 4 });\n\n const inputTypeMethodsBlock = renderInputTypeMethods(schema);\n\n const queryType = schema.operationTypes.query ?? \"Query\";\n const mutationType = schema.operationTypes.mutation ?? \"Mutation\";\n const subscriptionType = schema.operationTypes.subscription ?? \"Subscription\";\n\n schemaConfigs[name] = {\n queryType,\n mutationType,\n subscriptionType,\n scalarBlock,\n enumBlock,\n inputBlock,\n objectBlock,\n unionBlock,\n inputTypeMethodsBlock,\n };\n\n // Accumulate stats\n allStats.objects += objectDefinitions.length;\n allStats.enums += enumDefinitions.length;\n allStats.inputs += inputDefinitions.length;\n allStats.unions += unionDefinitions.length;\n }\n\n const injection: RuntimeTemplateInjection = options?.injection\n ? { mode: \"inject\", perSchema: options.injection }\n : { mode: \"inline\" };\n\n const code = multiRuntimeTemplate({\n schemas: schemaConfigs,\n injection,\n });\n\n return {\n code,\n stats: allStats,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator-CMKkXhGP.cjs","names":["operationTypes: OperationTypeNames","Kind","modifier: TypeModifier","imports: string[]","schemaBlocks: string[]","gqlEntries: string[]","schemaConfigs: Record<string, any>","name","injection: RuntimeTemplateInjection"],"sources":["../src/generator.ts"],"sourcesContent":["import type { TypeModifier } from \"@soda-gql/core\";\nimport {\n type ConstDirectiveNode,\n type ConstValueNode,\n type DocumentNode,\n type EnumValueDefinitionNode,\n type FieldDefinitionNode,\n type InputValueDefinitionNode,\n Kind,\n type NamedTypeNode,\n type SchemaDefinitionNode,\n type SchemaExtensionNode,\n type TypeNode,\n} from \"graphql\";\n\nconst builtinScalarTypes = new Map<string, { readonly input: string; readonly output: string }>([\n [\"ID\", { input: \"string\", output: \"string\" }],\n [\"String\", { input: \"string\", output: \"string\" }],\n [\"Int\", { input: \"number\", output: \"number\" }],\n [\"Float\", { input: \"number\", output: \"number\" }],\n [\"Boolean\", { input: \"boolean\", output: \"boolean\" }],\n]);\n\ntype OperationTypeNames = {\n query?: string;\n mutation?: string;\n subscription?: string;\n};\n\ntype ObjectRecord = {\n readonly name: string;\n readonly fields: Map<string, FieldDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype InputRecord = {\n readonly name: string;\n readonly fields: Map<string, InputValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype EnumRecord = {\n readonly name: string;\n readonly values: Map<string, EnumValueDefinitionNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype UnionRecord = {\n readonly name: string;\n readonly members: Map<string, NamedTypeNode>;\n directives: ConstDirectiveNode[];\n};\n\ntype ScalarRecord = {\n readonly name: string;\n directives: ConstDirectiveNode[];\n};\n\ntype SchemaIndex = {\n readonly objects: Map<string, ObjectRecord>;\n readonly inputs: Map<string, InputRecord>;\n readonly enums: Map<string, EnumRecord>;\n readonly unions: Map<string, UnionRecord>;\n readonly scalars: Map<string, ScalarRecord>;\n readonly operationTypes: OperationTypeNames;\n};\n\nconst ensureRecord = <T>(collection: Map<string, T>, key: string, factory: (name: string) => T): T => {\n const existing = collection.get(key);\n if (existing) {\n return existing;\n }\n\n const created = factory(key);\n collection.set(key, created);\n return created;\n};\n\nconst addObjectFields = (target: Map<string, FieldDefinitionNode>, fields: readonly FieldDefinitionNode[] | undefined): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addInputFields = (\n target: Map<string, InputValueDefinitionNode>,\n fields: readonly InputValueDefinitionNode[] | undefined,\n): void => {\n if (!fields) {\n return;\n }\n\n for (const field of fields) {\n target.set(field.name.value, field);\n }\n};\n\nconst addEnumValues = (\n target: Map<string, EnumValueDefinitionNode>,\n values: readonly EnumValueDefinitionNode[] | undefined,\n): void => {\n if (!values) {\n return;\n }\n\n for (const value of values) {\n target.set(value.name.value, value);\n }\n};\n\nconst addUnionMembers = (target: Map<string, NamedTypeNode>, members: readonly NamedTypeNode[] | undefined): void => {\n if (!members) {\n return;\n }\n\n for (const member of members) {\n target.set(member.name.value, member);\n }\n};\n\nconst mergeDirectives = (\n existing: ConstDirectiveNode[] | undefined,\n incoming: readonly ConstDirectiveNode[] | undefined,\n precedence: \"definition\" | \"extension\",\n): ConstDirectiveNode[] => {\n const current = existing ?? [];\n const next = incoming ? Array.from(incoming) : [];\n return precedence === \"definition\" ? [...next, ...current] : [...current, ...next];\n};\n\nconst updateOperationTypes = (\n operationTypes: OperationTypeNames,\n definition: SchemaDefinitionNode | SchemaExtensionNode,\n): void => {\n for (const operation of definition.operationTypes ?? []) {\n const typeName = operation.type.name.value;\n switch (operation.operation) {\n case \"query\":\n operationTypes.query = typeName;\n break;\n case \"mutation\":\n operationTypes.mutation = typeName;\n break;\n case \"subscription\":\n operationTypes.subscription = typeName;\n break;\n default:\n break;\n }\n }\n};\n\nexport const createSchemaIndex = (document: DocumentNode): SchemaIndex => {\n const objects = new Map<string, ObjectRecord>();\n const inputs = new Map<string, InputRecord>();\n const enums = new Map<string, EnumRecord>();\n const unions = new Map<string, UnionRecord>();\n const scalars = new Map<string, ScalarRecord>();\n const operationTypes: OperationTypeNames = {};\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(objects, definition.name.value, (name) => ({\n name,\n fields: new Map<string, FieldDefinitionNode>(),\n directives: [],\n }));\n addObjectFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(inputs, definition.name.value, (name) => ({\n name,\n fields: new Map<string, InputValueDefinitionNode>(),\n directives: [],\n }));\n addInputFields(record.fields, definition.fields);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.ENUM_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(enums, definition.name.value, (name) => ({\n name,\n values: new Map<string, EnumValueDefinitionNode>(),\n directives: [],\n }));\n addEnumValues(record.values, definition.values);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.UNION_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(unions, definition.name.value, (name) => ({\n name,\n members: new Map<string, NamedTypeNode>(),\n directives: [],\n }));\n addUnionMembers(record.members, definition.types);\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION: {\n const precedence = definition.kind === Kind.SCALAR_TYPE_DEFINITION ? \"definition\" : \"extension\";\n const record = ensureRecord(scalars, definition.name.value, (name) => ({\n name,\n directives: [],\n }));\n record.directives = mergeDirectives(record.directives, definition.directives, precedence);\n break;\n }\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n updateOperationTypes(operationTypes, definition);\n break;\n default:\n break;\n }\n }\n\n if (!operationTypes.query && objects.has(\"Query\")) {\n operationTypes.query = \"Query\";\n }\n if (!operationTypes.mutation && objects.has(\"Mutation\")) {\n operationTypes.mutation = \"Mutation\";\n }\n if (!operationTypes.subscription && objects.has(\"Subscription\")) {\n operationTypes.subscription = \"Subscription\";\n }\n\n return {\n objects,\n inputs,\n enums,\n unions,\n scalars,\n operationTypes,\n } satisfies SchemaIndex;\n};\n\ntype TypeLevel = {\n readonly kind: \"list\" | \"named\";\n readonly nonNull: boolean;\n};\n\nconst collectTypeLevels = (\n type: TypeNode,\n nonNull = false,\n levels: TypeLevel[] = [],\n): { readonly name: string; readonly levels: TypeLevel[] } => {\n if (type.kind === Kind.NON_NULL_TYPE) {\n return collectTypeLevels(type.type, true, levels);\n }\n\n if (type.kind === Kind.LIST_TYPE) {\n levels.push({ kind: \"list\", nonNull });\n return collectTypeLevels(type.type, false, levels);\n }\n\n levels.push({ kind: \"named\", nonNull });\n return { name: type.name.value, levels };\n};\n\nconst buildTypeModifier = (levels: TypeLevel[]): TypeModifier => {\n let modifier: TypeModifier = \"?\";\n\n for (const level of levels.slice().reverse()) {\n if (level.kind === \"named\") {\n // Inner type: always explicit nullable marker\n modifier = level.nonNull ? \"!\" : \"?\";\n continue;\n }\n\n // List type: append []? or []! based on list's nullability\n const listSuffix = level.nonNull ? \"[]!\" : \"[]?\";\n modifier = `${modifier}${listSuffix}` as TypeModifier;\n }\n\n return modifier;\n};\n\nconst parseTypeReference = (type: TypeNode): { readonly name: string; readonly modifier: string } => {\n const { name, levels } = collectTypeLevels(type);\n return { name, modifier: buildTypeModifier(levels) };\n};\n\nconst renderType = (name: string, modifier: string): string => JSON.stringify(`${name}:${modifier}`);\n\nconst isScalarName = (schema: SchemaIndex, name: string): boolean => builtinScalarTypes.has(name) || schema.scalars.has(name);\nconst isEnumName = (schema: SchemaIndex, name: string): boolean => schema.enums.has(name);\nconst _isInputName = (schema: SchemaIndex, name: string): boolean => schema.inputs.has(name);\nconst isUnionName = (schema: SchemaIndex, name: string): boolean => schema.unions.has(name);\nconst isObjectName = (schema: SchemaIndex, name: string): boolean => schema.objects.has(name);\n\nconst renderConstValue = (value: ConstValueNode): string => {\n switch (value.kind) {\n case Kind.NULL:\n return \"null\";\n case Kind.INT:\n case Kind.FLOAT:\n return value.value;\n case Kind.STRING:\n case Kind.ENUM:\n return JSON.stringify(value.value);\n case Kind.BOOLEAN:\n return value.value ? \"true\" : \"false\";\n case Kind.LIST:\n return `[${value.values.map((item) => renderConstValue(item)).join(\", \")}]`;\n case Kind.OBJECT: {\n if (value.fields.length === 0) {\n return \"{}\";\n }\n const entries = value.fields.map((field) => `${field.name.value}: ${renderConstValue(field.value)}`);\n return `{ ${entries.join(\", \")} }`;\n }\n }\n};\n\nconst renderConstArgumentMap = (\n args: readonly { readonly name: { readonly value: string }; readonly value: ConstValueNode }[] | undefined,\n): string => {\n const entries = (args ?? []).map((arg) => `${arg.name.value}: ${renderConstValue(arg.value)}`);\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDirectives = (directives: readonly ConstDirectiveNode[] | undefined): string => {\n const entries = (directives ?? []).map(\n (directive) => `${directive.name.value}: ${renderConstArgumentMap(directive.arguments)}`,\n );\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderDefaultValue = (value: ConstValueNode | null | undefined): string =>\n value ? `() => (${renderConstValue(value)})` : \"null\";\n\nconst renderInputRef = (schema: SchemaIndex, definition: InputValueDefinitionNode): string => {\n const { name, modifier } = parseTypeReference(definition.type);\n const tuple = renderType(name, modifier);\n const defaultValue = renderDefaultValue(definition.defaultValue ?? null);\n const directives = renderDirectives(definition.directives);\n\n if (isScalarName(schema, name)) {\n return `unsafeInputType.scalar(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeInputType.enum(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n }\n\n return `unsafeInputType.input(${tuple}, { default: ${defaultValue}, directives: ${directives} })`;\n};\n\nconst renderArgumentMap = (schema: SchemaIndex, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const entries = [...(args ?? [])]\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((arg) => `${arg.name.value}: ${renderInputRef(schema, arg)}`);\n\n return renderPropertyLines({ entries, indentSize: 8 });\n};\n\nconst renderOutputRef = (schema: SchemaIndex, type: TypeNode, args: readonly InputValueDefinitionNode[] | undefined): string => {\n const { name, modifier } = parseTypeReference(type);\n const modifiedType = renderType(name, modifier);\n const argumentMap = renderArgumentMap(schema, args);\n\n if (isScalarName(schema, name)) {\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isEnumName(schema, name)) {\n return `unsafeOutputType.enum(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isUnionName(schema, name)) {\n return `unsafeOutputType.union(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n if (isObjectName(schema, name)) {\n return `unsafeOutputType.object(${modifiedType}, { arguments: ${argumentMap} })`;\n }\n\n return `unsafeOutputType.scalar(${modifiedType}, { arguments: ${argumentMap} })`;\n};\n\nconst renderPropertyLines = ({ entries, indentSize }: { entries: string[]; indentSize: number }) => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const indent = \" \".repeat(indentSize);\n const lastIndent = \" \".repeat(indentSize - 2);\n return [\"{\", `${indent}${entries.join(`,\\n${indent}`)},`, `${lastIndent}}`].join(`\\n`);\n};\n\nconst renderObjectFields = (schema: SchemaIndex, fields: Map<string, FieldDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderOutputRef(schema, field.type, field.arguments)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderInputFields = (schema: SchemaIndex, fields: Map<string, InputValueDefinitionNode>): string => {\n const entries = Array.from(fields.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((field) => `${field.name.value}: ${renderInputRef(schema, field)}`);\n\n return renderPropertyLines({ entries, indentSize: 6 });\n};\n\nconst renderScalarDefinition = (record: ScalarRecord): string => {\n const typeInfo = builtinScalarTypes.get(record.name) ?? { input: \"string\", output: \"string\" };\n const scalarType = `type<{ input: ${typeInfo.input}; output: ${typeInfo.output} }>()`;\n return `${record.name}: define(\"${record.name}\").scalar(${scalarType})`;\n};\n\nconst renderObjectDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.objects.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderObjectFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").object(${fields})`;\n};\n\nconst renderInputDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.inputs.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const fields = renderInputFields(schema, record.fields);\n return `${record.name}: define(\"${record.name}\").input(${fields})`;\n};\n\nconst renderEnumDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.enums.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const values = Array.from(record.values.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((value) => `${value.name.value}: true`)\n .join(\", \");\n const body = values.length === 0 ? \"{}\" : `{ ${values} }`;\n\n return `${record.name}: define(\"${record.name}\").enum(${body})`;\n};\n\nconst renderUnionDefinition = (schema: SchemaIndex, typeName: string): string => {\n const record = schema.unions.get(typeName);\n if (!record) {\n return \"\";\n }\n\n const members = Array.from(record.members.values())\n .sort((left, right) => left.name.value.localeCompare(right.name.value))\n .map((member) => `${member.name.value}: true`)\n .join(\", \");\n const body = members.length === 0 ? \"{}\" : `{ ${members} }`;\n\n return `${record.name}: define(\"${record.name}\").union(${body})`;\n};\n\nconst collectObjectTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.objects.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectInputTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.inputs.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectEnumTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.enums.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectUnionTypeNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.unions.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst collectScalarNames = (schema: SchemaIndex): string[] =>\n Array.from(schema.scalars.keys())\n .filter((name) => !name.startsWith(\"__\"))\n .sort((left, right) => left.localeCompare(right));\n\nconst renderInputTypeMethod = (kind: \"scalar\" | \"enum\" | \"input\", typeName: string): string =>\n `${typeName}: createVarMethod(\"${kind}\", \"${typeName}\")`;\n\nconst renderInputTypeMethods = (schema: SchemaIndex): string => {\n const scalarMethods = Array.from(builtinScalarTypes.keys())\n .concat(collectScalarNames(schema).filter((name) => !builtinScalarTypes.has(name)))\n .map((name) => renderInputTypeMethod(\"scalar\", name));\n\n const enumMethods = collectEnumTypeNames(schema).map((name) => renderInputTypeMethod(\"enum\", name));\n\n const inputMethods = collectInputTypeNames(schema).map((name) => renderInputTypeMethod(\"input\", name));\n\n const allMethods = [...scalarMethods, ...enumMethods, ...inputMethods].sort((left, right) => {\n const leftName = left.split(\":\")[0] ?? \"\";\n const rightName = right.split(\":\")[0] ?? \"\";\n return leftName.localeCompare(rightName);\n });\n\n return renderPropertyLines({ entries: allMethods, indentSize: 2 });\n};\n\nexport type GeneratedModule = {\n readonly code: string;\n readonly stats: {\n readonly objects: number;\n readonly enums: number;\n readonly inputs: number;\n readonly unions: number;\n };\n};\n\ntype PerSchemaInjection = {\n readonly scalarImportPath: string;\n readonly adapterImportPath?: string;\n};\n\ntype RuntimeTemplateInjection =\n | { readonly mode: \"inline\" }\n | {\n readonly mode: \"inject\";\n readonly perSchema: Map<string, PerSchemaInjection>;\n };\n\nexport type RuntimeGenerationOptions = {\n readonly injection?: Map<string, PerSchemaInjection>;\n};\n\ntype MultiRuntimeTemplateOptions = {\n readonly schemas: Record<\n string,\n {\n readonly queryType: string;\n readonly mutationType: string;\n readonly subscriptionType: string;\n readonly scalarBlock: string;\n readonly enumBlock: string;\n readonly inputBlock: string;\n readonly objectBlock: string;\n readonly unionBlock: string;\n readonly inputTypeMethodsBlock: string;\n }\n >;\n readonly injection: RuntimeTemplateInjection;\n};\n\nconst multiRuntimeTemplate = ($$: MultiRuntimeTemplateOptions) => {\n // Build imports based on injection mode\n const imports: string[] = [];\n const scalarAliases = new Map<string, string>();\n const adapterAliases = new Map<string, string>();\n\n if ($$.injection.mode === \"inject\") {\n // Group imports by file path\n const importsByPath = new Map<string, string[]>();\n\n for (const [schemaName, injection] of $$.injection.perSchema) {\n const scalarAlias = `scalar_${schemaName}`;\n scalarAliases.set(schemaName, scalarAlias);\n\n // Group scalar import\n const scalarSpecifiers = importsByPath.get(injection.scalarImportPath) ?? [];\n if (!importsByPath.has(injection.scalarImportPath)) {\n importsByPath.set(injection.scalarImportPath, scalarSpecifiers);\n }\n scalarSpecifiers.push(`scalar as ${scalarAlias}`);\n\n // Group adapter import (optional)\n if (injection.adapterImportPath) {\n const adapterAlias = `adapter_${schemaName}`;\n adapterAliases.set(schemaName, adapterAlias);\n const adapterSpecifiers = importsByPath.get(injection.adapterImportPath) ?? [];\n if (!importsByPath.has(injection.adapterImportPath)) {\n importsByPath.set(injection.adapterImportPath, adapterSpecifiers);\n }\n adapterSpecifiers.push(`adapter as ${adapterAlias}`);\n }\n }\n\n // Generate grouped imports\n for (const [path, specifiers] of importsByPath) {\n if (specifiers.length === 1) {\n imports.push(`import { ${specifiers[0]} } from \"${path}\";`);\n } else {\n imports.push(`import {\\n ${specifiers.join(\",\\n \")},\\n} from \"${path}\";`);\n }\n }\n }\n\n const extraImports = imports.length > 0 ? `${imports.join(\"\\n\")}\\n` : \"\";\n\n // Generate per-schema definitions\n const schemaBlocks: string[] = [];\n const gqlEntries: string[] = [];\n\n for (const [name, config] of Object.entries($$.schemas)) {\n const schemaVar = `${name}Schema`;\n const scalarBlock = $$.injection.mode === \"inject\" ? scalarAliases.get(name) : config.scalarBlock;\n\n // Get optional adapter\n const adapterVar = adapterAliases.get(name);\n\n // Build type exports\n const typeExports = [`export type Schema_${name} = typeof ${schemaVar} & { _?: never };`];\n if (adapterVar) {\n typeExports.push(`export type Adapter_${name} = typeof ${adapterVar} & { _?: never };`);\n }\n\n const inputTypeMethodsVar = `inputTypeMethods_${name}`;\n\n schemaBlocks.push(`\nconst ${schemaVar} = {\n label: \"${name}\" as const,\n operations: defineOperationRoots({\n query: \"${config.queryType}\",\n mutation: \"${config.mutationType}\",\n subscription: \"${config.subscriptionType}\",\n }),\n scalar: ${scalarBlock},\n enum: ${config.enumBlock},\n input: ${config.inputBlock},\n object: ${config.objectBlock},\n union: ${config.unionBlock},\n} satisfies AnyGraphqlSchema;\n\nconst ${inputTypeMethodsVar} = ${config.inputTypeMethodsBlock};\n\n${typeExports.join(\"\\n\")}`);\n\n // Build gql entry with options - inputTypeMethods is always required\n if (adapterVar) {\n const typeParams = `<Schema_${name}, Adapter_${name}>`;\n gqlEntries.push(\n ` ${name}: createGqlElementComposer${typeParams}(${schemaVar}, { adapter: ${adapterVar}, inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n } else {\n gqlEntries.push(\n ` ${name}: createGqlElementComposer<Schema_${name}>(${schemaVar}, { inputTypeMethods: ${inputTypeMethodsVar} })`,\n );\n }\n }\n\n return `\\\nimport {\n type AnyGraphqlSchema,\n createGqlElementComposer,\n createVarMethod,\n define,\n defineOperationRoots,\n unsafeInputType,\n unsafeOutputType,\n} from \"@soda-gql/core\";\n${extraImports}\n${schemaBlocks.join(\"\\n\")}\n\nexport const gql = {\n${gqlEntries.join(\",\\n\")}\n};\n`;\n};\n\nexport const generateMultiSchemaModule = (\n schemas: Map<string, DocumentNode>,\n options?: RuntimeGenerationOptions,\n): GeneratedModule => {\n // biome-ignore lint/suspicious/noExplicitAny: complex schema config type\n const schemaConfigs: Record<string, any> = {};\n const allStats = {\n objects: 0,\n enums: 0,\n inputs: 0,\n unions: 0,\n };\n\n for (const [name, document] of schemas.entries()) {\n const schema = createSchemaIndex(document);\n\n const builtinScalarDefinitions = Array.from(builtinScalarTypes.keys()).map((name) =>\n renderScalarDefinition(schema.scalars.get(name) ?? { name, directives: [] }),\n );\n\n const customScalarDefinitions = collectScalarNames(schema)\n .filter((name) => !builtinScalarTypes.has(name))\n .map((name) => {\n const record = schema.scalars.get(name);\n return record ? renderScalarDefinition(record) : \"\";\n })\n .filter((definition) => definition.length > 0);\n\n const allScalarDefinitions = builtinScalarDefinitions.concat(customScalarDefinitions);\n\n const objectTypeNames = collectObjectTypeNames(schema);\n const enumTypeNames = collectEnumTypeNames(schema);\n const inputTypeNames = collectInputTypeNames(schema);\n const unionTypeNames = collectUnionTypeNames(schema);\n\n const scalarBlock = renderPropertyLines({ entries: allScalarDefinitions, indentSize: 4 });\n const enumDefinitions = enumTypeNames\n .map((name) => renderEnumDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const enumBlock = renderPropertyLines({ entries: enumDefinitions, indentSize: 4 });\n const inputDefinitions = inputTypeNames\n .map((name) => renderInputDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const inputBlock = renderPropertyLines({ entries: inputDefinitions, indentSize: 4 });\n const objectDefinitions = objectTypeNames\n .map((name) => renderObjectDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const objectBlock = renderPropertyLines({ entries: objectDefinitions, indentSize: 4 });\n const unionDefinitions = unionTypeNames\n .map((name) => renderUnionDefinition(schema, name))\n .filter((definition) => definition.length > 0);\n const unionBlock = renderPropertyLines({ entries: unionDefinitions, indentSize: 4 });\n\n const inputTypeMethodsBlock = renderInputTypeMethods(schema);\n\n const queryType = schema.operationTypes.query ?? \"Query\";\n const mutationType = schema.operationTypes.mutation ?? \"Mutation\";\n const subscriptionType = schema.operationTypes.subscription ?? \"Subscription\";\n\n schemaConfigs[name] = {\n queryType,\n mutationType,\n subscriptionType,\n scalarBlock,\n enumBlock,\n inputBlock,\n objectBlock,\n unionBlock,\n inputTypeMethodsBlock,\n };\n\n // Accumulate stats\n allStats.objects += objectDefinitions.length;\n allStats.enums += enumDefinitions.length;\n allStats.inputs += inputDefinitions.length;\n allStats.unions += unionDefinitions.length;\n }\n\n const injection: RuntimeTemplateInjection = options?.injection\n ? { mode: \"inject\", perSchema: options.injection }\n : { mode: \"inline\" };\n\n const code = multiRuntimeTemplate({\n schemas: schemaConfigs,\n injection,\n });\n\n return {\n code,\n stats: allStats,\n };\n};\n"],"mappings":"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"}
|