protoc-gen-pothos 0.6.0 → 0.6.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/dslgen/index.js +1 -1
- package/dist/dslgen/index.js.map +1 -1
- package/dist/dslgen/index.mjs +1 -1
- package/dist/dslgen/index.mjs.map +1 -1
- package/dist/dslgen/printers/index.js +1 -1
- package/dist/dslgen/printers/index.js.map +1 -1
- package/dist/dslgen/printers/index.mjs +1 -1
- package/dist/dslgen/printers/index.mjs.map +1 -1
- package/dist/dslgen/printers/oneofUnionType.js +10 -1
- package/dist/dslgen/printers/oneofUnionType.js.map +1 -1
- package/dist/dslgen/printers/oneofUnionType.mjs +10 -1
- package/dist/dslgen/printers/oneofUnionType.mjs.map +1 -1
- package/dist/plugin.js +2 -2
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +2 -2
- package/dist/plugin.mjs.map +1 -1
- package/dist/printer.js +1 -1
- package/dist/printer.js.map +1 -1
- package/dist/printer.mjs +1 -1
- package/dist/printer.mjs.map +1 -1
- package/dist/protoc-gen-pothos.js +2 -2
- package/dist/protoc-gen-pothos.js.map +1 -1
- package/dist/protoc-gen-pothos.mjs +2 -2
- package/dist/protoc-gen-pothos.mjs.map +1 -1
- package/dist/src/dslgen/printers/oneofUnionType.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__snapshots__/plugin.test.ts.snap +3195 -946
- package/src/dslgen/printers/oneofUnionType.ts +7 -2
package/dist/dslgen/index.js
CHANGED
|
@@ -500,7 +500,7 @@ var import_codegen_core8 = require("@proto-graphql/codegen-core");
|
|
|
500
500
|
var import_ts_poet9 = require("ts-poet");
|
|
501
501
|
function createOneofUnionTypeCode(type, registry, opts) {
|
|
502
502
|
const typeOpts = {
|
|
503
|
-
types: type.fields.map((f) =>
|
|
503
|
+
types: type.fields.map((f) => fieldTypeRef(f, opts)),
|
|
504
504
|
description: type.description,
|
|
505
505
|
extensions: (0, import_codegen_core8.protobufGraphQLExtensions)(type, registry)
|
|
506
506
|
};
|
package/dist/dslgen/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/dslgen/index.ts","../../src/dslgen/printers/index.ts","../../src/dslgen/printers/enumType.ts","../../src/dslgen/printers/util.ts","../../src/dslgen/printers/inputObjectType.ts","../../src/dslgen/printers/field.ts","../../src/dslgen/printers/fieldResolver/enumFieldResolver.ts","../../src/dslgen/printers/fieldResolver/nonNullResolver.ts","../../src/dslgen/printers/fieldResolver/oneofUnionResolver.ts","../../src/dslgen/printers/objectType.ts","../../src/dslgen/printers/oneofUnionType.ts"],"sourcesContent":["export * from \"./printers\";\n","import type { createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectType,\n ObjectType,\n OneofUnionType,\n SquashedOneofUnionType,\n} from \"@proto-graphql/codegen-core\";\nimport type { Code } from \"ts-poet\";\n\nimport { createEnumTypeCode } from \"./enumType\";\nimport { createInputObjectTypeCode } from \"./inputObjectType\";\nimport { createObjectTypeCode } from \"./objectType\";\nimport { createOneofUnionTypeCode } from \"./oneofUnionType\";\nimport type { PothosPrinterOptions } from \"./util\";\n\nexport function createTypeDslCodes(\n types: (\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n )[],\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code[] {\n return types.flatMap((type) => {\n if (type instanceof ObjectType) {\n return createObjectTypeCode(type, registry, opts);\n }\n if (type instanceof InputObjectType) {\n return createInputObjectTypeCode(type, registry, opts);\n }\n if (type instanceof EnumType) {\n return [createEnumTypeCode(type, registry, opts)];\n }\n if (\n type instanceof OneofUnionType ||\n type instanceof SquashedOneofUnionType\n ) {\n return [createOneofUnionTypeCode(type, registry, opts)];\n }\n\n const _exhaustiveCheck: never = type;\n throw \"unreachable\";\n });\n}\n","import {\n type EnumType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Hello$Ref: EnumRef<Hello, Hello> = builder.enumType(\"Hello\", {\n * values: [\n * // ...\n * ],\n * // ...\n * })\n * ```\n */\nexport function createEnumTypeCode(\n type: EnumType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n description: type.description,\n values: code`{${joinCode(\n type.values\n .filter((v) => !v.isIgnored() && !v.isUnespecified())\n .map(\n (ev) =>\n code`${ev.name}: ${literalOf(\n compact({\n description: ev.description,\n deprecationReason: ev.deprecationReason,\n value: ev.number,\n extensions: protobufGraphQLExtensions(ev, registry),\n }),\n )},`,\n ),\n )}} as const`,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n\n const protoTypeExpr = protoType(type.proto, opts);\n // EnumRef<Hello, Hello>\n const refTypeExpr = code`${imp(\n \"EnumRef@@pothos/core\",\n )}<${protoTypeExpr}, ${protoTypeExpr}>`;\n\n return code`\n export const ${pothosRef(type)}: ${refTypeExpr} =\n ${pothosBuilder(type, opts)}.enumType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n","import * as path from \"node:path\";\n\nimport {\n type EnumType,\n type InputObjectField,\n type InputObjectType,\n type InterfaceType,\n type ObjectField,\n type ObjectOneofField,\n type ObjectType,\n type OneofUnionType,\n type PrinterOptions,\n type SquashedOneofUnionType,\n filename,\n generatedGraphQLTypeImportPath,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp } from \"ts-poet\";\n\nexport type PothosPrinterOptions = Extract<PrinterOptions, { dsl: \"pothos\" }>;\n\nexport function pothosRef(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): Code {\n return code`${pothosRefName(type)}`;\n}\n\nfunction pothosRefName(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): string {\n return `${type.typeName}$Ref`;\n}\n\nexport function shapeType(type: InputObjectType): Code {\n return code`${shapeTypeName(type)}`;\n}\n\nexport function shapeTypeName(type: InputObjectType): string {\n return `${type.typeName}$Shape`;\n}\n\nexport function fieldTypeRef(\n field:\n | ObjectField<\n ObjectType | EnumType | InterfaceType | SquashedOneofUnionType\n >\n | InputObjectField<InputObjectType | EnumType>\n | ObjectOneofField,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return pothosRef(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = pothosRefName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function fieldTypeShape(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return shapeType(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = shapeTypeName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function pothosBuilder(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType,\n opts: Pick<\n PothosPrinterOptions,\n \"dsl\" | \"pothos\" | \"fileLayout\" | \"filenameSuffix\"\n >,\n): Code {\n const importPath = opts.pothos.builderPath.startsWith(\".\")\n ? path.relative(path.dirname(filename(type, opts)), opts.pothos.builderPath)\n : opts.pothos.builderPath;\n return code`${imp(`builder@${importPath}`)}`;\n}\n","import {\n EnumType,\n type InputObjectField,\n InputObjectType,\n type Registry,\n ScalarType,\n compact,\n generatedGraphQLTypeImportPath,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport {\n type PothosPrinterOptions,\n fieldTypeShape,\n pothosBuilder,\n pothosRef,\n shapeType,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export type HelloInput$Shape = {\n * // ...\n * }\n * export const HelloInput$Ref: pothos.InputObjectRef<Hello$SHape> = builder.inputRef(\"HelloInput\").implement({\n * description: \"...\",\n * fields: (t) => ({\n * // ...\n * }),\n * })\n *\n * export function HelloInput$toProto () {\n * return {\n * // ...\n * }\n * }\n *\n * ```\n */\nexport function createInputObjectTypeCode(\n type: InputObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const shapeTypeCode = code`\n export type ${shapeType(type)} = {\n ${joinCode(\n type.fields.map((f) => {\n let typeNode: Code;\n if (f.type instanceof InputObjectType) {\n // @ts-expect-error f should be inferred as InputObjectField<InputObjectType>\n typeNode = code`${fieldTypeShape(f, opts)}`;\n if (f.isList()) typeNode = code`Array<${typeNode}>`;\n } else {\n typeNode = code`${protoType(type.proto, opts)}[${literalOf(\n tsFieldName(f.proto, opts),\n )}]`;\n }\n return f.isNullable()\n ? code`${f.name}?: ${typeNode} | null,`\n : code`${f.name}: ${\n f.type instanceof ScalarType && f.type.isCustomScalar()\n ? code`NonNullable<${typeNode}>`\n : typeNode\n },`;\n }),\n )}\n };\n `;\n\n const refCode = code`\n export const ${pothosRef(type)}: ${imp(\n \"InputObjectRef@@pothos/core\",\n )}<${shapeType(type)}> =\n ${pothosBuilder(type, opts)}.inputRef<${shapeType(type)}>(${literalOf(\n type.typeName,\n )}).implement(\n ${literalOf(\n compact({\n description: type.description,\n fields: code`t => ({${\n type.fields.length > 0\n ? type.fields.map(\n (f) =>\n code`${f.name}: ${createFieldRefCode(\n f,\n registry,\n opts,\n )},`,\n )\n : code`_: ${createNoopFieldRefCode({ input: true })}`\n }})`,\n extensions: protobufGraphQLExtensions(type, registry),\n }),\n )}\n );\n `;\n\n const codes = [shapeTypeCode, refCode];\n\n if (opts.protobuf === \"protobuf-es\") {\n codes.push(createToProtoFuncCode(type, opts));\n }\n\n return code` ${codes} `;\n}\n\nfunction createToProtoFuncCode(\n type: InputObjectType,\n opts: PothosPrinterOptions,\n): Code {\n const oneofFields: Record<string, InputObjectField<InputObjectType>[]> = {};\n for (const f of type.fields) {\n if (f.proto.oneof == null) continue;\n if (!(f.type instanceof InputObjectType)) {\n throw new Error(\"Oneof fields must be of message\");\n }\n\n oneofFields[f.proto.oneof.name] = [\n ...(oneofFields[f.proto.oneof.name] || []),\n f as InputObjectField<InputObjectType>,\n ];\n }\n\n return code`\n export function ${toProtoFuncName(type)} (input: ${shapeType(\n type,\n )} | null | undefined): ${protoType(type.proto, opts)} {\n return new ${protoType(type.proto, opts)}({\n ${type.fields\n .filter((f) => f.proto.oneof == null)\n .map((f) => {\n switch (true) {\n case f.type instanceof InputObjectType: {\n const localName = tsFieldName(f.proto, opts);\n const toProtoFunc = fieldToProtoFunc(\n f as InputObjectField<InputObjectType>,\n opts,\n );\n if (f.isList()) {\n return code`${localName}: input?.${f.name}?.map(v => ${toProtoFunc}(v)),`;\n }\n return code`${localName}: input ? ${toProtoFunc}(input.${f.name}) : undefined,`;\n }\n case f.type instanceof ScalarType:\n case f.type instanceof EnumType: {\n const localName = tsFieldName(f.proto, opts);\n return code`${localName}: input?.${f.name} ?? undefined,`;\n }\n default: {\n f.type satisfies never;\n throw \"unreachable\";\n }\n }\n })}\n ${Object.values(oneofFields).map((fields) => {\n return code`${tsFieldName(\n // biome-ignore lint/style/noNonNullAssertion: we know it's not null\n fields[0]!.proto.oneof!,\n opts,\n )}:${fields.map(\n (f) =>\n code`input?.${f.name} ? { case: \"${tsFieldName(\n f.proto,\n opts,\n )}\", value: ${fieldToProtoFunc(f, opts)}(input.${f.name}) } :`,\n )} undefined,`;\n })}\n });\n }\n `;\n}\n\nfunction toProtoFuncName(type: InputObjectType): string {\n return `${type.typeName}$toProto`;\n}\n\nfunction fieldToProtoFunc(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return code`${toProtoFuncName(field.type)}`;\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = toProtoFuncName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n","import type { DescField, createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectField,\n ObjectField,\n ObjectOneofField,\n ObjectType,\n ScalarType,\n SquashedOneofUnionType,\n compact,\n createGetFieldValueCode,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { createEnumResolverCode } from \"./fieldResolver/enumFieldResolver\";\nimport { createNonNullResolverCode } from \"./fieldResolver/nonNullResolver\";\nimport { createOneofUnionResolverCode } from \"./fieldResolver/oneofUnionResolver\";\nimport { type PothosPrinterOptions, fieldTypeRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * t.expose(\"name\", {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * })\n * ```\n * ```ts\n * t.field({\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createFieldRefCode(\n field: ObjectField<any> | ObjectOneofField | InputObjectField<any>,\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code {\n const isInput = field instanceof InputObjectField;\n const baseType =\n field.type instanceof ScalarType\n ? literalOf(field.type.typeName)\n : fieldTypeRef(field, opts);\n\n const sourceExpr = code`source`;\n let resolverCode: Code | undefined;\n if (!isInput) {\n if (field instanceof ObjectOneofField) {\n resolverCode = createOneofUnionResolverCode(sourceExpr, field, opts);\n } else {\n const valueExpr = createGetFieldValueCode(sourceExpr, field.proto, opts);\n const nullableInProto =\n field.type instanceof ObjectType ||\n (field.type instanceof ScalarType &&\n !field.type.isPrimitive() &&\n !field.type.isWrapperType());\n if (nullableInProto && !field.isNullable()) {\n resolverCode = createNonNullResolverCode(valueExpr);\n }\n if (field.type instanceof EnumType && field instanceof ObjectField) {\n resolverCode = createEnumResolverCode(valueExpr, field, opts);\n }\n if (\n field.type instanceof SquashedOneofUnionType &&\n field instanceof ObjectField\n ) {\n resolverCode = createOneofUnionResolverCode(valueExpr, field, opts);\n }\n if (field.type instanceof ScalarType && field.type.isBytes()) {\n if (field.isList()) {\n resolverCode = code`return ${valueExpr}.map(v => Buffer.from(v));`;\n } else if (field.isNullable()) {\n resolverCode = code`return ${valueExpr} == null ? null : Buffer.from(${valueExpr});`;\n } else {\n resolverCode = code`return Buffer.from(${valueExpr});`;\n }\n }\n }\n }\n\n const nullableValue = isInput !== field.isNullable(); /* Logical XOR */\n const fieldOpts = {\n type: field.isList() ? code`[${baseType}]` : baseType,\n [isInput ? \"required\" : \"nullable\"]: field.isList()\n ? { list: nullableValue, items: isInput /* always non-null */ }\n : nullableValue,\n description: field.description,\n deprecationReason: field.deprecationReason,\n resolve: resolverCode ? code`${sourceExpr} => {${resolverCode}}` : null,\n extensions: protobufGraphQLExtensions(field, registry),\n };\n\n const shouldUseFieldFunc = isInput || resolverCode != null;\n return shouldUseFieldFunc\n ? code`t.field(${literalOf(compact(fieldOpts))})`\n : code`t.expose(${literalOf(\n tsFieldName(field.proto as DescField, opts),\n )}, ${literalOf(compact(fieldOpts))})`;\n}\n\n/**\n * @example\n * ```ts\n * t.field( {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"noop field\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createNoopFieldRefCode(opts: { input: boolean }): Code {\n return code`\n t.field({\n type: \"Boolean\",\n ${opts.input ? \"required: false\" : \"nullable: true\"},\n description: \"noop field\",\n ${opts.input ? \"\" : \"resolve: () => true,\"}\n })\n `;\n}\n","import { localName } from \"@bufbuild/protoplugin/ecmascript\";\nimport {\n type EnumType,\n type EnumTypeValue,\n type ObjectField,\n type PrinterOptions,\n protoType,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * return null\n * }\n * return root.myEnum\n * ```\n * @example notNull\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * throw new Error(\"Message.field is required field. but got null or unspecified.\")\n * }\n * return root.myEnum\n * ```\n */\nexport function createEnumResolverCode(\n valueExpr: Code,\n field: ObjectField<EnumType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCodes = (valueExpr: Code): Code[] => {\n const chunks: Code[] = [];\n\n if (field.type.unspecifiedValue != null) {\n const escapeCode =\n field.isNullable() && !field.isList()\n ? code`return null;`\n : code`throw new Error(\"${field.name} is required field. But got unspecified.\");`;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, field.type.unspecifiedValue, opts)}) {\n ${escapeCode}\n }\n `);\n }\n for (const ev of field.type.valuesWithIgnored) {\n if (!ev.isIgnored()) continue;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, ev, opts)}) {\n throw new Error(\"${ev.name} is ignored in GraphQL schema\");\n }\n `);\n }\n\n return chunks;\n };\n\n if (field.isList()) {\n const stmts = createBlockStmtCodes(code`item`);\n if (stmts.length === 0) {\n return code`return ${valueExpr}`;\n }\n return code`return ${valueExpr}.map(item => {\n ${stmts}\n return item;\n })`;\n }\n\n return code`\n ${createBlockStmtCodes(valueExpr)}\n return ${valueExpr};\n `;\n}\n\nfunction enumValueJsName(\n et: EnumType,\n ev: EnumTypeValue,\n opts: PrinterOptions,\n): string {\n switch (opts.protobuf) {\n case \"ts-proto\":\n return ev.proto.name;\n case \"protobuf-es\": {\n return localName(ev.proto);\n }\n case \"protobufjs\":\n case \"google-protobuf\":\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import { type Code, code } from \"ts-poet\";\n\nexport function createNonNullResolverCode(valueExpr: Code): Code {\n return code`\n return ${valueExpr}!;\n `;\n}\n","import {\n ObjectField,\n ObjectOneofField,\n type PrinterOptions,\n type SquashedOneofUnionType,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * const value = source.v1 ?? source.v2 ?? source.v3;\n * if (value != null) {\n * throw new Error(\"...\");\n * }\n * return value\n * ```\n */\nexport function createOneofUnionResolverCode(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCode = (\n sourceExpr: Code,\n { nullable, list }: { nullable: boolean; list: boolean },\n ): Code => {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return createBlockStmtCodeForTsProto(sourceExpr, field, opts, {\n nullable,\n });\n }\n case \"protobuf-es\": {\n return createBlockStmtCodeForProtobufEs(sourceExpr, field, opts, {\n nullable,\n list,\n });\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n };\n\n if (field instanceof ObjectField && field.isList()) {\n return code`\n return ${sourceExpr}.map(item => {\n ${createBlockStmtCode(code`item`, { nullable: false, list: true })}\n })\n `;\n }\n\n return createBlockStmtCode(sourceExpr, {\n nullable: field.isNullable(),\n list: false,\n });\n}\n\nfunction createBlockStmtCodeForTsProto(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable }: { nullable: boolean },\n): Code {\n const createFieldExpr = (memberField: ObjectField<any>) => {\n if (field instanceof ObjectOneofField) {\n return code`${sourceExpr}.${tsFieldName(memberField.proto, opts)}`;\n }\n return code`${sourceExpr}?.${tsFieldName(memberField.proto, opts)}`;\n };\n\n return code`\n const value = ${joinCode(field.type.fields.map(createFieldExpr), {\n on: \"??\",\n })};\n if (value == null) {\n ${\n nullable\n ? \"return null\"\n : `throw new Error(\"${field.name} should not be null\")`\n };\n }\n return value;\n `;\n}\n\nfunction createBlockStmtCodeForProtobufEs(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable, list }: { nullable: boolean; list: boolean },\n): Code {\n let valueExpr: Code;\n switch (true) {\n case field instanceof ObjectOneofField: {\n valueExpr = code`${sourceExpr}.${tsFieldName(field.proto, opts)}.value`;\n break;\n }\n case field instanceof ObjectField: {\n valueExpr = code`${sourceExpr}${list ? \"\" : \"?\"}.${tsFieldName(\n field.type.oneofUnionType.proto,\n opts,\n )}.value`;\n break;\n }\n default: {\n field satisfies never;\n throw \"unreachable\";\n }\n }\n if (nullable) {\n return code`return ${valueExpr};`;\n }\n return code`\n const value = ${valueExpr};\n if (value == null) {\n throw new Error(\"${field.name} should not be null\");\n }\n return value;\n `;\n}\n","import type { DescField } from \"@bufbuild/protobuf\";\nimport {\n InterfaceType,\n type ObjectType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export const Hello$Ref = builder.objectRef<_$hello$hello_pb.Hello>(\"Hello\")\n * builder.objectType(Hello$Ref, {\n * name: \"Hello\",\n * // ...\n * })\n * ```\n */\nexport function createObjectTypeCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const isInterface = type instanceof InterfaceType;\n const typeOpts = {\n name: type.typeName,\n fields: code`t => ({${\n type.fields.length > 0\n ? joinCode(\n type.fields.map(\n (f) => code`${f.name}: ${createFieldRefCode(f, registry, opts)},`,\n ),\n )\n : code`_: ${createNoopFieldRefCode({ input: false })}`\n }})`,\n description: type.description,\n isTypeOf: isInterface\n ? undefined\n : createIsTypeOfFuncCode(type, registry, opts),\n extensions: protobufGraphQLExtensions(type, registry),\n };\n const buildRefFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Ref`;\n const buildTypeFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Type`;\n const refFuncTypeArg = isInterface\n ? code`\n Pick<\n ${protoType(type.proto, opts)},\n ${joinCode(\n type.fields.map(\n (f) =>\n code`${literalOf(tsFieldName(f.proto as DescField, opts))}`,\n ),\n { on: \"|\" },\n )}\n >`\n : protoType(type.proto, opts);\n\n return code`\n export const ${pothosRef(\n type,\n )} = ${buildRefFunc}<${refFuncTypeArg}>(${literalOf(type.typeName)});\n ${buildTypeFunc}(${pothosRef(type)}, ${literalOf(compact(typeOpts))});\n `;\n}\n\nfunction createIsTypeOfFuncCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return code`\n (source) => {\n return (source as ${protoType(type.proto, opts)} | { $type: string & {} }).$type\n === ${literalOf(type.proto.typeName)};\n }\n `;\n }\n case \"protobuf-es\": {\n return code`\n (source) => {\n return source instanceof ${protoType(type.proto, opts)}\n }\n `;\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf lib: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import {\n type OneofUnionType,\n type Registry,\n type SquashedOneofUnionType,\n compact,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Oneof = builder.unionType(\"Oneof\", {\n * types: [...],\n * // ...\n * })\n * ```\n */\nexport function createOneofUnionTypeCode(\n type: OneofUnionType | SquashedOneofUnionType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n types: type.fields.map((f) => pothosRef(f.type)),\n description: type.description,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n return code`\n export const ${pothosRef(type)} =\n ${pothosBuilder(type, opts)}.unionType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n"],"mappings":"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","names":["import_codegen_core","import_codegen_core","import_ts_poet","pothosRef","type","code","pothosRefName","typeName","shapeType","shapeTypeName","fieldTypeRef","field","opts","importPath","generatedGraphQLTypeImportPath","imported","imp","symbol","fieldTypeShape","pothosBuilder","pothos","builderPath","startsWith","relative","dirname","filename","createEnumTypeCode","type","registry","opts","typeOpts","description","values","code","joinCode","filter","v","isIgnored","isUnespecified","map","ev","name","literalOf","compact","deprecationReason","value","number","extensions","protobufGraphQLExtensions","protoTypeExpr","protoType","proto","refTypeExpr","imp","pothosRef","pothosBuilder","typeName","import_codegen_core","import_ts_poet","import_codegen_core","import_ts_poet","import_codegen_core","import_ts_poet","createEnumResolverCode","valueExpr","field","opts","createBlockStmtCodes","chunks","type","unspecifiedValue","escapeCode","isNullable","isList","code","name","push","protoType","proto","enumValueJsName","ev","valuesWithIgnored","isIgnored","stmts","length","et","protobuf","localName","Error","import_ts_poet","createNonNullResolverCode","valueExpr","code","import_codegen_core","import_ts_poet","createOneofUnionResolverCode","sourceExpr","field","opts","createBlockStmtCode","nullable","list","protobuf","createBlockStmtCodeForTsProto","createBlockStmtCodeForProtobufEs","Error","ObjectField","isList","code","isNullable","createFieldExpr","memberField","ObjectOneofField","tsFieldName","proto","joinCode","type","fields","map","on","name","valueExpr","oneofUnionType","createFieldRefCode","field","registry","opts","isInput","InputObjectField","baseType","type","ScalarType","literalOf","typeName","fieldTypeRef","sourceExpr","code","resolverCode","ObjectOneofField","createOneofUnionResolverCode","valueExpr","createGetFieldValueCode","proto","nullableInProto","ObjectType","isPrimitive","isWrapperType","isNullable","createNonNullResolverCode","EnumType","ObjectField","createEnumResolverCode","SquashedOneofUnionType","isBytes","isList","nullableValue","fieldOpts","list","items","description","deprecationReason","resolve","extensions","protobufGraphQLExtensions","shouldUseFieldFunc","compact","tsFieldName","createNoopFieldRefCode","input","createInputObjectTypeCode","type","registry","opts","shapeTypeCode","code","shapeType","joinCode","fields","map","f","typeNode","InputObjectType","fieldTypeShape","isList","protoType","proto","literalOf","tsFieldName","isNullable","name","ScalarType","isCustomScalar","refCode","pothosRef","imp","pothosBuilder","typeName","compact","description","length","createFieldRefCode","createNoopFieldRefCode","input","extensions","protobufGraphQLExtensions","codes","protobuf","push","createToProtoFuncCode","oneofFields","oneof","Error","toProtoFuncName","filter","localName","toProtoFunc","fieldToProtoFunc","EnumType","Object","values","field","importPath","generatedGraphQLTypeImportPath","imported","symbol","import_codegen_core","import_ts_poet","createObjectTypeCode","type","registry","opts","isInterface","InterfaceType","typeOpts","name","typeName","fields","code","length","joinCode","map","f","createFieldRefCode","createNoopFieldRefCode","input","description","isTypeOf","undefined","createIsTypeOfFuncCode","extensions","protobufGraphQLExtensions","buildRefFunc","pothosBuilder","buildTypeFunc","refFuncTypeArg","protoType","proto","literalOf","tsFieldName","on","pothosRef","compact","protobuf","Error","import_codegen_core","import_ts_poet","createOneofUnionTypeCode","type","registry","opts","typeOpts","types","fields","map","f","pothosRef","description","extensions","protobufGraphQLExtensions","code","pothosBuilder","literalOf","typeName","compact","createTypeDslCodes","types","registry","opts","flatMap","type","ObjectType","createObjectTypeCode","InputObjectType","createInputObjectTypeCode","EnumType","createEnumTypeCode","OneofUnionType","SquashedOneofUnionType","createOneofUnionTypeCode","_exhaustiveCheck"]}
|
|
1
|
+
{"version":3,"sources":["../../src/dslgen/index.ts","../../src/dslgen/printers/index.ts","../../src/dslgen/printers/enumType.ts","../../src/dslgen/printers/util.ts","../../src/dslgen/printers/inputObjectType.ts","../../src/dslgen/printers/field.ts","../../src/dslgen/printers/fieldResolver/enumFieldResolver.ts","../../src/dslgen/printers/fieldResolver/nonNullResolver.ts","../../src/dslgen/printers/fieldResolver/oneofUnionResolver.ts","../../src/dslgen/printers/objectType.ts","../../src/dslgen/printers/oneofUnionType.ts"],"sourcesContent":["export * from \"./printers\";\n","import type { createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectType,\n ObjectType,\n OneofUnionType,\n SquashedOneofUnionType,\n} from \"@proto-graphql/codegen-core\";\nimport type { Code } from \"ts-poet\";\n\nimport { createEnumTypeCode } from \"./enumType\";\nimport { createInputObjectTypeCode } from \"./inputObjectType\";\nimport { createObjectTypeCode } from \"./objectType\";\nimport { createOneofUnionTypeCode } from \"./oneofUnionType\";\nimport type { PothosPrinterOptions } from \"./util\";\n\nexport function createTypeDslCodes(\n types: (\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n )[],\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code[] {\n return types.flatMap((type) => {\n if (type instanceof ObjectType) {\n return createObjectTypeCode(type, registry, opts);\n }\n if (type instanceof InputObjectType) {\n return createInputObjectTypeCode(type, registry, opts);\n }\n if (type instanceof EnumType) {\n return [createEnumTypeCode(type, registry, opts)];\n }\n if (\n type instanceof OneofUnionType ||\n type instanceof SquashedOneofUnionType\n ) {\n return [createOneofUnionTypeCode(type, registry, opts)];\n }\n\n const _exhaustiveCheck: never = type;\n throw \"unreachable\";\n });\n}\n","import {\n type EnumType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Hello$Ref: EnumRef<Hello, Hello> = builder.enumType(\"Hello\", {\n * values: [\n * // ...\n * ],\n * // ...\n * })\n * ```\n */\nexport function createEnumTypeCode(\n type: EnumType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n description: type.description,\n values: code`{${joinCode(\n type.values\n .filter((v) => !v.isIgnored() && !v.isUnespecified())\n .map(\n (ev) =>\n code`${ev.name}: ${literalOf(\n compact({\n description: ev.description,\n deprecationReason: ev.deprecationReason,\n value: ev.number,\n extensions: protobufGraphQLExtensions(ev, registry),\n }),\n )},`,\n ),\n )}} as const`,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n\n const protoTypeExpr = protoType(type.proto, opts);\n // EnumRef<Hello, Hello>\n const refTypeExpr = code`${imp(\n \"EnumRef@@pothos/core\",\n )}<${protoTypeExpr}, ${protoTypeExpr}>`;\n\n return code`\n export const ${pothosRef(type)}: ${refTypeExpr} =\n ${pothosBuilder(type, opts)}.enumType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n","import * as path from \"node:path\";\n\nimport {\n type EnumType,\n type InputObjectField,\n type InputObjectType,\n type InterfaceType,\n type ObjectField,\n type ObjectOneofField,\n type ObjectType,\n type OneofUnionType,\n type PrinterOptions,\n type SquashedOneofUnionType,\n filename,\n generatedGraphQLTypeImportPath,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp } from \"ts-poet\";\n\nexport type PothosPrinterOptions = Extract<PrinterOptions, { dsl: \"pothos\" }>;\n\nexport function pothosRef(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): Code {\n return code`${pothosRefName(type)}`;\n}\n\nfunction pothosRefName(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): string {\n return `${type.typeName}$Ref`;\n}\n\nexport function shapeType(type: InputObjectType): Code {\n return code`${shapeTypeName(type)}`;\n}\n\nexport function shapeTypeName(type: InputObjectType): string {\n return `${type.typeName}$Shape`;\n}\n\nexport function fieldTypeRef(\n field:\n | ObjectField<\n ObjectType | EnumType | InterfaceType | SquashedOneofUnionType\n >\n | InputObjectField<InputObjectType | EnumType>\n | ObjectOneofField,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return pothosRef(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = pothosRefName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function fieldTypeShape(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return shapeType(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = shapeTypeName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function pothosBuilder(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType,\n opts: Pick<\n PothosPrinterOptions,\n \"dsl\" | \"pothos\" | \"fileLayout\" | \"filenameSuffix\"\n >,\n): Code {\n const importPath = opts.pothos.builderPath.startsWith(\".\")\n ? path.relative(path.dirname(filename(type, opts)), opts.pothos.builderPath)\n : opts.pothos.builderPath;\n return code`${imp(`builder@${importPath}`)}`;\n}\n","import {\n EnumType,\n type InputObjectField,\n InputObjectType,\n type Registry,\n ScalarType,\n compact,\n generatedGraphQLTypeImportPath,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport {\n type PothosPrinterOptions,\n fieldTypeShape,\n pothosBuilder,\n pothosRef,\n shapeType,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export type HelloInput$Shape = {\n * // ...\n * }\n * export const HelloInput$Ref: pothos.InputObjectRef<Hello$SHape> = builder.inputRef(\"HelloInput\").implement({\n * description: \"...\",\n * fields: (t) => ({\n * // ...\n * }),\n * })\n *\n * export function HelloInput$toProto () {\n * return {\n * // ...\n * }\n * }\n *\n * ```\n */\nexport function createInputObjectTypeCode(\n type: InputObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const shapeTypeCode = code`\n export type ${shapeType(type)} = {\n ${joinCode(\n type.fields.map((f) => {\n let typeNode: Code;\n if (f.type instanceof InputObjectType) {\n // @ts-expect-error f should be inferred as InputObjectField<InputObjectType>\n typeNode = code`${fieldTypeShape(f, opts)}`;\n if (f.isList()) typeNode = code`Array<${typeNode}>`;\n } else {\n typeNode = code`${protoType(type.proto, opts)}[${literalOf(\n tsFieldName(f.proto, opts),\n )}]`;\n }\n return f.isNullable()\n ? code`${f.name}?: ${typeNode} | null,`\n : code`${f.name}: ${\n f.type instanceof ScalarType && f.type.isCustomScalar()\n ? code`NonNullable<${typeNode}>`\n : typeNode\n },`;\n }),\n )}\n };\n `;\n\n const refCode = code`\n export const ${pothosRef(type)}: ${imp(\n \"InputObjectRef@@pothos/core\",\n )}<${shapeType(type)}> =\n ${pothosBuilder(type, opts)}.inputRef<${shapeType(type)}>(${literalOf(\n type.typeName,\n )}).implement(\n ${literalOf(\n compact({\n description: type.description,\n fields: code`t => ({${\n type.fields.length > 0\n ? type.fields.map(\n (f) =>\n code`${f.name}: ${createFieldRefCode(\n f,\n registry,\n opts,\n )},`,\n )\n : code`_: ${createNoopFieldRefCode({ input: true })}`\n }})`,\n extensions: protobufGraphQLExtensions(type, registry),\n }),\n )}\n );\n `;\n\n const codes = [shapeTypeCode, refCode];\n\n if (opts.protobuf === \"protobuf-es\") {\n codes.push(createToProtoFuncCode(type, opts));\n }\n\n return code` ${codes} `;\n}\n\nfunction createToProtoFuncCode(\n type: InputObjectType,\n opts: PothosPrinterOptions,\n): Code {\n const oneofFields: Record<string, InputObjectField<InputObjectType>[]> = {};\n for (const f of type.fields) {\n if (f.proto.oneof == null) continue;\n if (!(f.type instanceof InputObjectType)) {\n throw new Error(\"Oneof fields must be of message\");\n }\n\n oneofFields[f.proto.oneof.name] = [\n ...(oneofFields[f.proto.oneof.name] || []),\n f as InputObjectField<InputObjectType>,\n ];\n }\n\n return code`\n export function ${toProtoFuncName(type)} (input: ${shapeType(\n type,\n )} | null | undefined): ${protoType(type.proto, opts)} {\n return new ${protoType(type.proto, opts)}({\n ${type.fields\n .filter((f) => f.proto.oneof == null)\n .map((f) => {\n switch (true) {\n case f.type instanceof InputObjectType: {\n const localName = tsFieldName(f.proto, opts);\n const toProtoFunc = fieldToProtoFunc(\n f as InputObjectField<InputObjectType>,\n opts,\n );\n if (f.isList()) {\n return code`${localName}: input?.${f.name}?.map(v => ${toProtoFunc}(v)),`;\n }\n return code`${localName}: input ? ${toProtoFunc}(input.${f.name}) : undefined,`;\n }\n case f.type instanceof ScalarType:\n case f.type instanceof EnumType: {\n const localName = tsFieldName(f.proto, opts);\n return code`${localName}: input?.${f.name} ?? undefined,`;\n }\n default: {\n f.type satisfies never;\n throw \"unreachable\";\n }\n }\n })}\n ${Object.values(oneofFields).map((fields) => {\n return code`${tsFieldName(\n // biome-ignore lint/style/noNonNullAssertion: we know it's not null\n fields[0]!.proto.oneof!,\n opts,\n )}:${fields.map(\n (f) =>\n code`input?.${f.name} ? { case: \"${tsFieldName(\n f.proto,\n opts,\n )}\", value: ${fieldToProtoFunc(f, opts)}(input.${f.name}) } :`,\n )} undefined,`;\n })}\n });\n }\n `;\n}\n\nfunction toProtoFuncName(type: InputObjectType): string {\n return `${type.typeName}$toProto`;\n}\n\nfunction fieldToProtoFunc(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return code`${toProtoFuncName(field.type)}`;\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = toProtoFuncName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n","import type { DescField, createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectField,\n ObjectField,\n ObjectOneofField,\n ObjectType,\n ScalarType,\n SquashedOneofUnionType,\n compact,\n createGetFieldValueCode,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { createEnumResolverCode } from \"./fieldResolver/enumFieldResolver\";\nimport { createNonNullResolverCode } from \"./fieldResolver/nonNullResolver\";\nimport { createOneofUnionResolverCode } from \"./fieldResolver/oneofUnionResolver\";\nimport { type PothosPrinterOptions, fieldTypeRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * t.expose(\"name\", {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * })\n * ```\n * ```ts\n * t.field({\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createFieldRefCode(\n field: ObjectField<any> | ObjectOneofField | InputObjectField<any>,\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code {\n const isInput = field instanceof InputObjectField;\n const baseType =\n field.type instanceof ScalarType\n ? literalOf(field.type.typeName)\n : fieldTypeRef(field, opts);\n\n const sourceExpr = code`source`;\n let resolverCode: Code | undefined;\n if (!isInput) {\n if (field instanceof ObjectOneofField) {\n resolverCode = createOneofUnionResolverCode(sourceExpr, field, opts);\n } else {\n const valueExpr = createGetFieldValueCode(sourceExpr, field.proto, opts);\n const nullableInProto =\n field.type instanceof ObjectType ||\n (field.type instanceof ScalarType &&\n !field.type.isPrimitive() &&\n !field.type.isWrapperType());\n if (nullableInProto && !field.isNullable()) {\n resolverCode = createNonNullResolverCode(valueExpr);\n }\n if (field.type instanceof EnumType && field instanceof ObjectField) {\n resolverCode = createEnumResolverCode(valueExpr, field, opts);\n }\n if (\n field.type instanceof SquashedOneofUnionType &&\n field instanceof ObjectField\n ) {\n resolverCode = createOneofUnionResolverCode(valueExpr, field, opts);\n }\n if (field.type instanceof ScalarType && field.type.isBytes()) {\n if (field.isList()) {\n resolverCode = code`return ${valueExpr}.map(v => Buffer.from(v));`;\n } else if (field.isNullable()) {\n resolverCode = code`return ${valueExpr} == null ? null : Buffer.from(${valueExpr});`;\n } else {\n resolverCode = code`return Buffer.from(${valueExpr});`;\n }\n }\n }\n }\n\n const nullableValue = isInput !== field.isNullable(); /* Logical XOR */\n const fieldOpts = {\n type: field.isList() ? code`[${baseType}]` : baseType,\n [isInput ? \"required\" : \"nullable\"]: field.isList()\n ? { list: nullableValue, items: isInput /* always non-null */ }\n : nullableValue,\n description: field.description,\n deprecationReason: field.deprecationReason,\n resolve: resolverCode ? code`${sourceExpr} => {${resolverCode}}` : null,\n extensions: protobufGraphQLExtensions(field, registry),\n };\n\n const shouldUseFieldFunc = isInput || resolverCode != null;\n return shouldUseFieldFunc\n ? code`t.field(${literalOf(compact(fieldOpts))})`\n : code`t.expose(${literalOf(\n tsFieldName(field.proto as DescField, opts),\n )}, ${literalOf(compact(fieldOpts))})`;\n}\n\n/**\n * @example\n * ```ts\n * t.field( {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"noop field\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createNoopFieldRefCode(opts: { input: boolean }): Code {\n return code`\n t.field({\n type: \"Boolean\",\n ${opts.input ? \"required: false\" : \"nullable: true\"},\n description: \"noop field\",\n ${opts.input ? \"\" : \"resolve: () => true,\"}\n })\n `;\n}\n","import { localName } from \"@bufbuild/protoplugin/ecmascript\";\nimport {\n type EnumType,\n type EnumTypeValue,\n type ObjectField,\n type PrinterOptions,\n protoType,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * return null\n * }\n * return root.myEnum\n * ```\n * @example notNull\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * throw new Error(\"Message.field is required field. but got null or unspecified.\")\n * }\n * return root.myEnum\n * ```\n */\nexport function createEnumResolverCode(\n valueExpr: Code,\n field: ObjectField<EnumType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCodes = (valueExpr: Code): Code[] => {\n const chunks: Code[] = [];\n\n if (field.type.unspecifiedValue != null) {\n const escapeCode =\n field.isNullable() && !field.isList()\n ? code`return null;`\n : code`throw new Error(\"${field.name} is required field. But got unspecified.\");`;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, field.type.unspecifiedValue, opts)}) {\n ${escapeCode}\n }\n `);\n }\n for (const ev of field.type.valuesWithIgnored) {\n if (!ev.isIgnored()) continue;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, ev, opts)}) {\n throw new Error(\"${ev.name} is ignored in GraphQL schema\");\n }\n `);\n }\n\n return chunks;\n };\n\n if (field.isList()) {\n const stmts = createBlockStmtCodes(code`item`);\n if (stmts.length === 0) {\n return code`return ${valueExpr}`;\n }\n return code`return ${valueExpr}.map(item => {\n ${stmts}\n return item;\n })`;\n }\n\n return code`\n ${createBlockStmtCodes(valueExpr)}\n return ${valueExpr};\n `;\n}\n\nfunction enumValueJsName(\n et: EnumType,\n ev: EnumTypeValue,\n opts: PrinterOptions,\n): string {\n switch (opts.protobuf) {\n case \"ts-proto\":\n return ev.proto.name;\n case \"protobuf-es\": {\n return localName(ev.proto);\n }\n case \"protobufjs\":\n case \"google-protobuf\":\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import { type Code, code } from \"ts-poet\";\n\nexport function createNonNullResolverCode(valueExpr: Code): Code {\n return code`\n return ${valueExpr}!;\n `;\n}\n","import {\n ObjectField,\n ObjectOneofField,\n type PrinterOptions,\n type SquashedOneofUnionType,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * const value = source.v1 ?? source.v2 ?? source.v3;\n * if (value != null) {\n * throw new Error(\"...\");\n * }\n * return value\n * ```\n */\nexport function createOneofUnionResolverCode(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCode = (\n sourceExpr: Code,\n { nullable, list }: { nullable: boolean; list: boolean },\n ): Code => {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return createBlockStmtCodeForTsProto(sourceExpr, field, opts, {\n nullable,\n });\n }\n case \"protobuf-es\": {\n return createBlockStmtCodeForProtobufEs(sourceExpr, field, opts, {\n nullable,\n list,\n });\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n };\n\n if (field instanceof ObjectField && field.isList()) {\n return code`\n return ${sourceExpr}.map(item => {\n ${createBlockStmtCode(code`item`, { nullable: false, list: true })}\n })\n `;\n }\n\n return createBlockStmtCode(sourceExpr, {\n nullable: field.isNullable(),\n list: false,\n });\n}\n\nfunction createBlockStmtCodeForTsProto(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable }: { nullable: boolean },\n): Code {\n const createFieldExpr = (memberField: ObjectField<any>) => {\n if (field instanceof ObjectOneofField) {\n return code`${sourceExpr}.${tsFieldName(memberField.proto, opts)}`;\n }\n return code`${sourceExpr}?.${tsFieldName(memberField.proto, opts)}`;\n };\n\n return code`\n const value = ${joinCode(field.type.fields.map(createFieldExpr), {\n on: \"??\",\n })};\n if (value == null) {\n ${\n nullable\n ? \"return null\"\n : `throw new Error(\"${field.name} should not be null\")`\n };\n }\n return value;\n `;\n}\n\nfunction createBlockStmtCodeForProtobufEs(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable, list }: { nullable: boolean; list: boolean },\n): Code {\n let valueExpr: Code;\n switch (true) {\n case field instanceof ObjectOneofField: {\n valueExpr = code`${sourceExpr}.${tsFieldName(field.proto, opts)}.value`;\n break;\n }\n case field instanceof ObjectField: {\n valueExpr = code`${sourceExpr}${list ? \"\" : \"?\"}.${tsFieldName(\n field.type.oneofUnionType.proto,\n opts,\n )}.value`;\n break;\n }\n default: {\n field satisfies never;\n throw \"unreachable\";\n }\n }\n if (nullable) {\n return code`return ${valueExpr};`;\n }\n return code`\n const value = ${valueExpr};\n if (value == null) {\n throw new Error(\"${field.name} should not be null\");\n }\n return value;\n `;\n}\n","import type { DescField } from \"@bufbuild/protobuf\";\nimport {\n InterfaceType,\n type ObjectType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export const Hello$Ref = builder.objectRef<_$hello$hello_pb.Hello>(\"Hello\")\n * builder.objectType(Hello$Ref, {\n * name: \"Hello\",\n * // ...\n * })\n * ```\n */\nexport function createObjectTypeCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const isInterface = type instanceof InterfaceType;\n const typeOpts = {\n name: type.typeName,\n fields: code`t => ({${\n type.fields.length > 0\n ? joinCode(\n type.fields.map(\n (f) => code`${f.name}: ${createFieldRefCode(f, registry, opts)},`,\n ),\n )\n : code`_: ${createNoopFieldRefCode({ input: false })}`\n }})`,\n description: type.description,\n isTypeOf: isInterface\n ? undefined\n : createIsTypeOfFuncCode(type, registry, opts),\n extensions: protobufGraphQLExtensions(type, registry),\n };\n const buildRefFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Ref`;\n const buildTypeFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Type`;\n const refFuncTypeArg = isInterface\n ? code`\n Pick<\n ${protoType(type.proto, opts)},\n ${joinCode(\n type.fields.map(\n (f) =>\n code`${literalOf(tsFieldName(f.proto as DescField, opts))}`,\n ),\n { on: \"|\" },\n )}\n >`\n : protoType(type.proto, opts);\n\n return code`\n export const ${pothosRef(\n type,\n )} = ${buildRefFunc}<${refFuncTypeArg}>(${literalOf(type.typeName)});\n ${buildTypeFunc}(${pothosRef(type)}, ${literalOf(compact(typeOpts))});\n `;\n}\n\nfunction createIsTypeOfFuncCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return code`\n (source) => {\n return (source as ${protoType(type.proto, opts)} | { $type: string & {} }).$type\n === ${literalOf(type.proto.typeName)};\n }\n `;\n }\n case \"protobuf-es\": {\n return code`\n (source) => {\n return source instanceof ${protoType(type.proto, opts)}\n }\n `;\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf lib: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import {\n type OneofUnionType,\n type Registry,\n type SquashedOneofUnionType,\n compact,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport {\n type PothosPrinterOptions,\n fieldTypeRef,\n pothosBuilder,\n pothosRef,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Oneof = builder.unionType(\"Oneof\", {\n * types: [...],\n * // ...\n * })\n * ```\n */\nexport function createOneofUnionTypeCode(\n type: OneofUnionType | SquashedOneofUnionType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n types: type.fields.map((f) => fieldTypeRef(f, opts)),\n description: type.description,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n return code`\n export const ${pothosRef(type)} =\n ${pothosBuilder(type, opts)}.unionType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n"],"mappings":"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","names":["import_codegen_core","import_codegen_core","import_ts_poet","pothosRef","type","code","pothosRefName","typeName","shapeType","shapeTypeName","fieldTypeRef","field","opts","importPath","generatedGraphQLTypeImportPath","imported","imp","symbol","fieldTypeShape","pothosBuilder","pothos","builderPath","startsWith","relative","dirname","filename","createEnumTypeCode","type","registry","opts","typeOpts","description","values","code","joinCode","filter","v","isIgnored","isUnespecified","map","ev","name","literalOf","compact","deprecationReason","value","number","extensions","protobufGraphQLExtensions","protoTypeExpr","protoType","proto","refTypeExpr","imp","pothosRef","pothosBuilder","typeName","import_codegen_core","import_ts_poet","import_codegen_core","import_ts_poet","import_codegen_core","import_ts_poet","createEnumResolverCode","valueExpr","field","opts","createBlockStmtCodes","chunks","type","unspecifiedValue","escapeCode","isNullable","isList","code","name","push","protoType","proto","enumValueJsName","ev","valuesWithIgnored","isIgnored","stmts","length","et","protobuf","localName","Error","import_ts_poet","createNonNullResolverCode","valueExpr","code","import_codegen_core","import_ts_poet","createOneofUnionResolverCode","sourceExpr","field","opts","createBlockStmtCode","nullable","list","protobuf","createBlockStmtCodeForTsProto","createBlockStmtCodeForProtobufEs","Error","ObjectField","isList","code","isNullable","createFieldExpr","memberField","ObjectOneofField","tsFieldName","proto","joinCode","type","fields","map","on","name","valueExpr","oneofUnionType","createFieldRefCode","field","registry","opts","isInput","InputObjectField","baseType","type","ScalarType","literalOf","typeName","fieldTypeRef","sourceExpr","code","resolverCode","ObjectOneofField","createOneofUnionResolverCode","valueExpr","createGetFieldValueCode","proto","nullableInProto","ObjectType","isPrimitive","isWrapperType","isNullable","createNonNullResolverCode","EnumType","ObjectField","createEnumResolverCode","SquashedOneofUnionType","isBytes","isList","nullableValue","fieldOpts","list","items","description","deprecationReason","resolve","extensions","protobufGraphQLExtensions","shouldUseFieldFunc","compact","tsFieldName","createNoopFieldRefCode","input","createInputObjectTypeCode","type","registry","opts","shapeTypeCode","code","shapeType","joinCode","fields","map","f","typeNode","InputObjectType","fieldTypeShape","isList","protoType","proto","literalOf","tsFieldName","isNullable","name","ScalarType","isCustomScalar","refCode","pothosRef","imp","pothosBuilder","typeName","compact","description","length","createFieldRefCode","createNoopFieldRefCode","input","extensions","protobufGraphQLExtensions","codes","protobuf","push","createToProtoFuncCode","oneofFields","oneof","Error","toProtoFuncName","filter","localName","toProtoFunc","fieldToProtoFunc","EnumType","Object","values","field","importPath","generatedGraphQLTypeImportPath","imported","symbol","import_codegen_core","import_ts_poet","createObjectTypeCode","type","registry","opts","isInterface","InterfaceType","typeOpts","name","typeName","fields","code","length","joinCode","map","f","createFieldRefCode","createNoopFieldRefCode","input","description","isTypeOf","undefined","createIsTypeOfFuncCode","extensions","protobufGraphQLExtensions","buildRefFunc","pothosBuilder","buildTypeFunc","refFuncTypeArg","protoType","proto","literalOf","tsFieldName","on","pothosRef","compact","protobuf","Error","import_codegen_core","import_ts_poet","createOneofUnionTypeCode","type","registry","opts","typeOpts","types","fields","map","f","fieldTypeRef","description","extensions","protobufGraphQLExtensions","code","pothosRef","pothosBuilder","literalOf","typeName","compact","createTypeDslCodes","types","registry","opts","flatMap","type","ObjectType","createObjectTypeCode","InputObjectType","createInputObjectTypeCode","EnumType","createEnumTypeCode","OneofUnionType","SquashedOneofUnionType","createOneofUnionTypeCode","_exhaustiveCheck"]}
|
package/dist/dslgen/index.mjs
CHANGED
|
@@ -466,7 +466,7 @@ import { compact as compact5, protobufGraphQLExtensions as protobufGraphQLExtens
|
|
|
466
466
|
import { code as code9, literalOf as literalOf5 } from "ts-poet";
|
|
467
467
|
function createOneofUnionTypeCode(type, registry, opts) {
|
|
468
468
|
const typeOpts = {
|
|
469
|
-
types: type.fields.map((f) =>
|
|
469
|
+
types: type.fields.map((f) => fieldTypeRef(f, opts)),
|
|
470
470
|
description: type.description,
|
|
471
471
|
extensions: protobufGraphQLExtensions5(type, registry)
|
|
472
472
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/dslgen/printers/index.ts","../../src/dslgen/printers/enumType.ts","../../src/dslgen/printers/util.ts","../../src/dslgen/printers/inputObjectType.ts","../../src/dslgen/printers/field.ts","../../src/dslgen/printers/fieldResolver/enumFieldResolver.ts","../../src/dslgen/printers/fieldResolver/nonNullResolver.ts","../../src/dslgen/printers/fieldResolver/oneofUnionResolver.ts","../../src/dslgen/printers/objectType.ts","../../src/dslgen/printers/oneofUnionType.ts"],"sourcesContent":["import type { createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectType,\n ObjectType,\n OneofUnionType,\n SquashedOneofUnionType,\n} from \"@proto-graphql/codegen-core\";\nimport type { Code } from \"ts-poet\";\n\nimport { createEnumTypeCode } from \"./enumType\";\nimport { createInputObjectTypeCode } from \"./inputObjectType\";\nimport { createObjectTypeCode } from \"./objectType\";\nimport { createOneofUnionTypeCode } from \"./oneofUnionType\";\nimport type { PothosPrinterOptions } from \"./util\";\n\nexport function createTypeDslCodes(\n types: (\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n )[],\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code[] {\n return types.flatMap((type) => {\n if (type instanceof ObjectType) {\n return createObjectTypeCode(type, registry, opts);\n }\n if (type instanceof InputObjectType) {\n return createInputObjectTypeCode(type, registry, opts);\n }\n if (type instanceof EnumType) {\n return [createEnumTypeCode(type, registry, opts)];\n }\n if (\n type instanceof OneofUnionType ||\n type instanceof SquashedOneofUnionType\n ) {\n return [createOneofUnionTypeCode(type, registry, opts)];\n }\n\n const _exhaustiveCheck: never = type;\n throw \"unreachable\";\n });\n}\n","import {\n type EnumType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Hello$Ref: EnumRef<Hello, Hello> = builder.enumType(\"Hello\", {\n * values: [\n * // ...\n * ],\n * // ...\n * })\n * ```\n */\nexport function createEnumTypeCode(\n type: EnumType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n description: type.description,\n values: code`{${joinCode(\n type.values\n .filter((v) => !v.isIgnored() && !v.isUnespecified())\n .map(\n (ev) =>\n code`${ev.name}: ${literalOf(\n compact({\n description: ev.description,\n deprecationReason: ev.deprecationReason,\n value: ev.number,\n extensions: protobufGraphQLExtensions(ev, registry),\n }),\n )},`,\n ),\n )}} as const`,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n\n const protoTypeExpr = protoType(type.proto, opts);\n // EnumRef<Hello, Hello>\n const refTypeExpr = code`${imp(\n \"EnumRef@@pothos/core\",\n )}<${protoTypeExpr}, ${protoTypeExpr}>`;\n\n return code`\n export const ${pothosRef(type)}: ${refTypeExpr} =\n ${pothosBuilder(type, opts)}.enumType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n","import * as path from \"node:path\";\n\nimport {\n type EnumType,\n type InputObjectField,\n type InputObjectType,\n type InterfaceType,\n type ObjectField,\n type ObjectOneofField,\n type ObjectType,\n type OneofUnionType,\n type PrinterOptions,\n type SquashedOneofUnionType,\n filename,\n generatedGraphQLTypeImportPath,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp } from \"ts-poet\";\n\nexport type PothosPrinterOptions = Extract<PrinterOptions, { dsl: \"pothos\" }>;\n\nexport function pothosRef(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): Code {\n return code`${pothosRefName(type)}`;\n}\n\nfunction pothosRefName(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): string {\n return `${type.typeName}$Ref`;\n}\n\nexport function shapeType(type: InputObjectType): Code {\n return code`${shapeTypeName(type)}`;\n}\n\nexport function shapeTypeName(type: InputObjectType): string {\n return `${type.typeName}$Shape`;\n}\n\nexport function fieldTypeRef(\n field:\n | ObjectField<\n ObjectType | EnumType | InterfaceType | SquashedOneofUnionType\n >\n | InputObjectField<InputObjectType | EnumType>\n | ObjectOneofField,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return pothosRef(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = pothosRefName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function fieldTypeShape(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return shapeType(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = shapeTypeName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function pothosBuilder(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType,\n opts: Pick<\n PothosPrinterOptions,\n \"dsl\" | \"pothos\" | \"fileLayout\" | \"filenameSuffix\"\n >,\n): Code {\n const importPath = opts.pothos.builderPath.startsWith(\".\")\n ? path.relative(path.dirname(filename(type, opts)), opts.pothos.builderPath)\n : opts.pothos.builderPath;\n return code`${imp(`builder@${importPath}`)}`;\n}\n","import {\n EnumType,\n type InputObjectField,\n InputObjectType,\n type Registry,\n ScalarType,\n compact,\n generatedGraphQLTypeImportPath,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport {\n type PothosPrinterOptions,\n fieldTypeShape,\n pothosBuilder,\n pothosRef,\n shapeType,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export type HelloInput$Shape = {\n * // ...\n * }\n * export const HelloInput$Ref: pothos.InputObjectRef<Hello$SHape> = builder.inputRef(\"HelloInput\").implement({\n * description: \"...\",\n * fields: (t) => ({\n * // ...\n * }),\n * })\n *\n * export function HelloInput$toProto () {\n * return {\n * // ...\n * }\n * }\n *\n * ```\n */\nexport function createInputObjectTypeCode(\n type: InputObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const shapeTypeCode = code`\n export type ${shapeType(type)} = {\n ${joinCode(\n type.fields.map((f) => {\n let typeNode: Code;\n if (f.type instanceof InputObjectType) {\n // @ts-expect-error f should be inferred as InputObjectField<InputObjectType>\n typeNode = code`${fieldTypeShape(f, opts)}`;\n if (f.isList()) typeNode = code`Array<${typeNode}>`;\n } else {\n typeNode = code`${protoType(type.proto, opts)}[${literalOf(\n tsFieldName(f.proto, opts),\n )}]`;\n }\n return f.isNullable()\n ? code`${f.name}?: ${typeNode} | null,`\n : code`${f.name}: ${\n f.type instanceof ScalarType && f.type.isCustomScalar()\n ? code`NonNullable<${typeNode}>`\n : typeNode\n },`;\n }),\n )}\n };\n `;\n\n const refCode = code`\n export const ${pothosRef(type)}: ${imp(\n \"InputObjectRef@@pothos/core\",\n )}<${shapeType(type)}> =\n ${pothosBuilder(type, opts)}.inputRef<${shapeType(type)}>(${literalOf(\n type.typeName,\n )}).implement(\n ${literalOf(\n compact({\n description: type.description,\n fields: code`t => ({${\n type.fields.length > 0\n ? type.fields.map(\n (f) =>\n code`${f.name}: ${createFieldRefCode(\n f,\n registry,\n opts,\n )},`,\n )\n : code`_: ${createNoopFieldRefCode({ input: true })}`\n }})`,\n extensions: protobufGraphQLExtensions(type, registry),\n }),\n )}\n );\n `;\n\n const codes = [shapeTypeCode, refCode];\n\n if (opts.protobuf === \"protobuf-es\") {\n codes.push(createToProtoFuncCode(type, opts));\n }\n\n return code` ${codes} `;\n}\n\nfunction createToProtoFuncCode(\n type: InputObjectType,\n opts: PothosPrinterOptions,\n): Code {\n const oneofFields: Record<string, InputObjectField<InputObjectType>[]> = {};\n for (const f of type.fields) {\n if (f.proto.oneof == null) continue;\n if (!(f.type instanceof InputObjectType)) {\n throw new Error(\"Oneof fields must be of message\");\n }\n\n oneofFields[f.proto.oneof.name] = [\n ...(oneofFields[f.proto.oneof.name] || []),\n f as InputObjectField<InputObjectType>,\n ];\n }\n\n return code`\n export function ${toProtoFuncName(type)} (input: ${shapeType(\n type,\n )} | null | undefined): ${protoType(type.proto, opts)} {\n return new ${protoType(type.proto, opts)}({\n ${type.fields\n .filter((f) => f.proto.oneof == null)\n .map((f) => {\n switch (true) {\n case f.type instanceof InputObjectType: {\n const localName = tsFieldName(f.proto, opts);\n const toProtoFunc = fieldToProtoFunc(\n f as InputObjectField<InputObjectType>,\n opts,\n );\n if (f.isList()) {\n return code`${localName}: input?.${f.name}?.map(v => ${toProtoFunc}(v)),`;\n }\n return code`${localName}: input ? ${toProtoFunc}(input.${f.name}) : undefined,`;\n }\n case f.type instanceof ScalarType:\n case f.type instanceof EnumType: {\n const localName = tsFieldName(f.proto, opts);\n return code`${localName}: input?.${f.name} ?? undefined,`;\n }\n default: {\n f.type satisfies never;\n throw \"unreachable\";\n }\n }\n })}\n ${Object.values(oneofFields).map((fields) => {\n return code`${tsFieldName(\n // biome-ignore lint/style/noNonNullAssertion: we know it's not null\n fields[0]!.proto.oneof!,\n opts,\n )}:${fields.map(\n (f) =>\n code`input?.${f.name} ? { case: \"${tsFieldName(\n f.proto,\n opts,\n )}\", value: ${fieldToProtoFunc(f, opts)}(input.${f.name}) } :`,\n )} undefined,`;\n })}\n });\n }\n `;\n}\n\nfunction toProtoFuncName(type: InputObjectType): string {\n return `${type.typeName}$toProto`;\n}\n\nfunction fieldToProtoFunc(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return code`${toProtoFuncName(field.type)}`;\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = toProtoFuncName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n","import type { DescField, createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectField,\n ObjectField,\n ObjectOneofField,\n ObjectType,\n ScalarType,\n SquashedOneofUnionType,\n compact,\n createGetFieldValueCode,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { createEnumResolverCode } from \"./fieldResolver/enumFieldResolver\";\nimport { createNonNullResolverCode } from \"./fieldResolver/nonNullResolver\";\nimport { createOneofUnionResolverCode } from \"./fieldResolver/oneofUnionResolver\";\nimport { type PothosPrinterOptions, fieldTypeRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * t.expose(\"name\", {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * })\n * ```\n * ```ts\n * t.field({\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createFieldRefCode(\n field: ObjectField<any> | ObjectOneofField | InputObjectField<any>,\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code {\n const isInput = field instanceof InputObjectField;\n const baseType =\n field.type instanceof ScalarType\n ? literalOf(field.type.typeName)\n : fieldTypeRef(field, opts);\n\n const sourceExpr = code`source`;\n let resolverCode: Code | undefined;\n if (!isInput) {\n if (field instanceof ObjectOneofField) {\n resolverCode = createOneofUnionResolverCode(sourceExpr, field, opts);\n } else {\n const valueExpr = createGetFieldValueCode(sourceExpr, field.proto, opts);\n const nullableInProto =\n field.type instanceof ObjectType ||\n (field.type instanceof ScalarType &&\n !field.type.isPrimitive() &&\n !field.type.isWrapperType());\n if (nullableInProto && !field.isNullable()) {\n resolverCode = createNonNullResolverCode(valueExpr);\n }\n if (field.type instanceof EnumType && field instanceof ObjectField) {\n resolverCode = createEnumResolverCode(valueExpr, field, opts);\n }\n if (\n field.type instanceof SquashedOneofUnionType &&\n field instanceof ObjectField\n ) {\n resolverCode = createOneofUnionResolverCode(valueExpr, field, opts);\n }\n if (field.type instanceof ScalarType && field.type.isBytes()) {\n if (field.isList()) {\n resolverCode = code`return ${valueExpr}.map(v => Buffer.from(v));`;\n } else if (field.isNullable()) {\n resolverCode = code`return ${valueExpr} == null ? null : Buffer.from(${valueExpr});`;\n } else {\n resolverCode = code`return Buffer.from(${valueExpr});`;\n }\n }\n }\n }\n\n const nullableValue = isInput !== field.isNullable(); /* Logical XOR */\n const fieldOpts = {\n type: field.isList() ? code`[${baseType}]` : baseType,\n [isInput ? \"required\" : \"nullable\"]: field.isList()\n ? { list: nullableValue, items: isInput /* always non-null */ }\n : nullableValue,\n description: field.description,\n deprecationReason: field.deprecationReason,\n resolve: resolverCode ? code`${sourceExpr} => {${resolverCode}}` : null,\n extensions: protobufGraphQLExtensions(field, registry),\n };\n\n const shouldUseFieldFunc = isInput || resolverCode != null;\n return shouldUseFieldFunc\n ? code`t.field(${literalOf(compact(fieldOpts))})`\n : code`t.expose(${literalOf(\n tsFieldName(field.proto as DescField, opts),\n )}, ${literalOf(compact(fieldOpts))})`;\n}\n\n/**\n * @example\n * ```ts\n * t.field( {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"noop field\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createNoopFieldRefCode(opts: { input: boolean }): Code {\n return code`\n t.field({\n type: \"Boolean\",\n ${opts.input ? \"required: false\" : \"nullable: true\"},\n description: \"noop field\",\n ${opts.input ? \"\" : \"resolve: () => true,\"}\n })\n `;\n}\n","import { localName } from \"@bufbuild/protoplugin/ecmascript\";\nimport {\n type EnumType,\n type EnumTypeValue,\n type ObjectField,\n type PrinterOptions,\n protoType,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * return null\n * }\n * return root.myEnum\n * ```\n * @example notNull\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * throw new Error(\"Message.field is required field. but got null or unspecified.\")\n * }\n * return root.myEnum\n * ```\n */\nexport function createEnumResolverCode(\n valueExpr: Code,\n field: ObjectField<EnumType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCodes = (valueExpr: Code): Code[] => {\n const chunks: Code[] = [];\n\n if (field.type.unspecifiedValue != null) {\n const escapeCode =\n field.isNullable() && !field.isList()\n ? code`return null;`\n : code`throw new Error(\"${field.name} is required field. But got unspecified.\");`;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, field.type.unspecifiedValue, opts)}) {\n ${escapeCode}\n }\n `);\n }\n for (const ev of field.type.valuesWithIgnored) {\n if (!ev.isIgnored()) continue;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, ev, opts)}) {\n throw new Error(\"${ev.name} is ignored in GraphQL schema\");\n }\n `);\n }\n\n return chunks;\n };\n\n if (field.isList()) {\n const stmts = createBlockStmtCodes(code`item`);\n if (stmts.length === 0) {\n return code`return ${valueExpr}`;\n }\n return code`return ${valueExpr}.map(item => {\n ${stmts}\n return item;\n })`;\n }\n\n return code`\n ${createBlockStmtCodes(valueExpr)}\n return ${valueExpr};\n `;\n}\n\nfunction enumValueJsName(\n et: EnumType,\n ev: EnumTypeValue,\n opts: PrinterOptions,\n): string {\n switch (opts.protobuf) {\n case \"ts-proto\":\n return ev.proto.name;\n case \"protobuf-es\": {\n return localName(ev.proto);\n }\n case \"protobufjs\":\n case \"google-protobuf\":\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import { type Code, code } from \"ts-poet\";\n\nexport function createNonNullResolverCode(valueExpr: Code): Code {\n return code`\n return ${valueExpr}!;\n `;\n}\n","import {\n ObjectField,\n ObjectOneofField,\n type PrinterOptions,\n type SquashedOneofUnionType,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * const value = source.v1 ?? source.v2 ?? source.v3;\n * if (value != null) {\n * throw new Error(\"...\");\n * }\n * return value\n * ```\n */\nexport function createOneofUnionResolverCode(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCode = (\n sourceExpr: Code,\n { nullable, list }: { nullable: boolean; list: boolean },\n ): Code => {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return createBlockStmtCodeForTsProto(sourceExpr, field, opts, {\n nullable,\n });\n }\n case \"protobuf-es\": {\n return createBlockStmtCodeForProtobufEs(sourceExpr, field, opts, {\n nullable,\n list,\n });\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n };\n\n if (field instanceof ObjectField && field.isList()) {\n return code`\n return ${sourceExpr}.map(item => {\n ${createBlockStmtCode(code`item`, { nullable: false, list: true })}\n })\n `;\n }\n\n return createBlockStmtCode(sourceExpr, {\n nullable: field.isNullable(),\n list: false,\n });\n}\n\nfunction createBlockStmtCodeForTsProto(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable }: { nullable: boolean },\n): Code {\n const createFieldExpr = (memberField: ObjectField<any>) => {\n if (field instanceof ObjectOneofField) {\n return code`${sourceExpr}.${tsFieldName(memberField.proto, opts)}`;\n }\n return code`${sourceExpr}?.${tsFieldName(memberField.proto, opts)}`;\n };\n\n return code`\n const value = ${joinCode(field.type.fields.map(createFieldExpr), {\n on: \"??\",\n })};\n if (value == null) {\n ${\n nullable\n ? \"return null\"\n : `throw new Error(\"${field.name} should not be null\")`\n };\n }\n return value;\n `;\n}\n\nfunction createBlockStmtCodeForProtobufEs(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable, list }: { nullable: boolean; list: boolean },\n): Code {\n let valueExpr: Code;\n switch (true) {\n case field instanceof ObjectOneofField: {\n valueExpr = code`${sourceExpr}.${tsFieldName(field.proto, opts)}.value`;\n break;\n }\n case field instanceof ObjectField: {\n valueExpr = code`${sourceExpr}${list ? \"\" : \"?\"}.${tsFieldName(\n field.type.oneofUnionType.proto,\n opts,\n )}.value`;\n break;\n }\n default: {\n field satisfies never;\n throw \"unreachable\";\n }\n }\n if (nullable) {\n return code`return ${valueExpr};`;\n }\n return code`\n const value = ${valueExpr};\n if (value == null) {\n throw new Error(\"${field.name} should not be null\");\n }\n return value;\n `;\n}\n","import type { DescField } from \"@bufbuild/protobuf\";\nimport {\n InterfaceType,\n type ObjectType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export const Hello$Ref = builder.objectRef<_$hello$hello_pb.Hello>(\"Hello\")\n * builder.objectType(Hello$Ref, {\n * name: \"Hello\",\n * // ...\n * })\n * ```\n */\nexport function createObjectTypeCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const isInterface = type instanceof InterfaceType;\n const typeOpts = {\n name: type.typeName,\n fields: code`t => ({${\n type.fields.length > 0\n ? joinCode(\n type.fields.map(\n (f) => code`${f.name}: ${createFieldRefCode(f, registry, opts)},`,\n ),\n )\n : code`_: ${createNoopFieldRefCode({ input: false })}`\n }})`,\n description: type.description,\n isTypeOf: isInterface\n ? undefined\n : createIsTypeOfFuncCode(type, registry, opts),\n extensions: protobufGraphQLExtensions(type, registry),\n };\n const buildRefFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Ref`;\n const buildTypeFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Type`;\n const refFuncTypeArg = isInterface\n ? code`\n Pick<\n ${protoType(type.proto, opts)},\n ${joinCode(\n type.fields.map(\n (f) =>\n code`${literalOf(tsFieldName(f.proto as DescField, opts))}`,\n ),\n { on: \"|\" },\n )}\n >`\n : protoType(type.proto, opts);\n\n return code`\n export const ${pothosRef(\n type,\n )} = ${buildRefFunc}<${refFuncTypeArg}>(${literalOf(type.typeName)});\n ${buildTypeFunc}(${pothosRef(type)}, ${literalOf(compact(typeOpts))});\n `;\n}\n\nfunction createIsTypeOfFuncCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return code`\n (source) => {\n return (source as ${protoType(type.proto, opts)} | { $type: string & {} }).$type\n === ${literalOf(type.proto.typeName)};\n }\n `;\n }\n case \"protobuf-es\": {\n return code`\n (source) => {\n return source instanceof ${protoType(type.proto, opts)}\n }\n `;\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf lib: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import {\n type OneofUnionType,\n type Registry,\n type SquashedOneofUnionType,\n compact,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Oneof = builder.unionType(\"Oneof\", {\n * types: [...],\n * // ...\n * })\n * ```\n */\nexport function createOneofUnionTypeCode(\n type: OneofUnionType | SquashedOneofUnionType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n types: type.fields.map((f) => pothosRef(f.type)),\n description: type.description,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n return code`\n export const ${pothosRef(type)} =\n ${pothosBuilder(type, opts)}.unionType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n"],"mappings":"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","names":["EnumType","InputObjectType","ObjectType","OneofUnionType","SquashedOneofUnionType","compact","protoType","protobufGraphQLExtensions","code","imp","joinCode","literalOf","path","filename","generatedGraphQLTypeImportPath","code","imp","pothosRef","type","code","pothosRefName","typeName","shapeType","shapeTypeName","fieldTypeRef","field","opts","importPath","generatedGraphQLTypeImportPath","imported","imp","symbol","fieldTypeShape","pothosBuilder","pothos","builderPath","startsWith","relative","dirname","filename","createEnumTypeCode","type","registry","opts","typeOpts","description","values","code","joinCode","filter","v","isIgnored","isUnespecified","map","ev","name","literalOf","compact","deprecationReason","value","number","extensions","protobufGraphQLExtensions","protoTypeExpr","protoType","proto","refTypeExpr","imp","pothosRef","pothosBuilder","typeName","EnumType","InputObjectType","ScalarType","compact","generatedGraphQLTypeImportPath","protoType","protobufGraphQLExtensions","tsFieldName","code","imp","joinCode","literalOf","EnumType","InputObjectField","ObjectField","ObjectOneofField","ObjectType","ScalarType","SquashedOneofUnionType","compact","createGetFieldValueCode","protobufGraphQLExtensions","tsFieldName","code","literalOf","localName","protoType","code","createEnumResolverCode","valueExpr","field","opts","createBlockStmtCodes","chunks","type","unspecifiedValue","escapeCode","isNullable","isList","code","name","push","protoType","proto","enumValueJsName","ev","valuesWithIgnored","isIgnored","stmts","length","et","protobuf","localName","Error","code","createNonNullResolverCode","valueExpr","code","ObjectField","ObjectOneofField","tsFieldName","code","joinCode","createOneofUnionResolverCode","sourceExpr","field","opts","createBlockStmtCode","nullable","list","protobuf","createBlockStmtCodeForTsProto","createBlockStmtCodeForProtobufEs","Error","ObjectField","isList","code","isNullable","createFieldExpr","memberField","ObjectOneofField","tsFieldName","proto","joinCode","type","fields","map","on","name","valueExpr","oneofUnionType","createFieldRefCode","field","registry","opts","isInput","InputObjectField","baseType","type","ScalarType","literalOf","typeName","fieldTypeRef","sourceExpr","code","resolverCode","ObjectOneofField","createOneofUnionResolverCode","valueExpr","createGetFieldValueCode","proto","nullableInProto","ObjectType","isPrimitive","isWrapperType","isNullable","createNonNullResolverCode","EnumType","ObjectField","createEnumResolverCode","SquashedOneofUnionType","isBytes","isList","nullableValue","fieldOpts","list","items","description","deprecationReason","resolve","extensions","protobufGraphQLExtensions","shouldUseFieldFunc","compact","tsFieldName","createNoopFieldRefCode","input","createInputObjectTypeCode","type","registry","opts","shapeTypeCode","code","shapeType","joinCode","fields","map","f","typeNode","InputObjectType","fieldTypeShape","isList","protoType","proto","literalOf","tsFieldName","isNullable","name","ScalarType","isCustomScalar","refCode","pothosRef","imp","pothosBuilder","typeName","compact","description","length","createFieldRefCode","createNoopFieldRefCode","input","extensions","protobufGraphQLExtensions","codes","protobuf","push","createToProtoFuncCode","oneofFields","oneof","Error","toProtoFuncName","filter","localName","toProtoFunc","fieldToProtoFunc","EnumType","Object","values","field","importPath","generatedGraphQLTypeImportPath","imported","symbol","InterfaceType","compact","protoType","protobufGraphQLExtensions","tsFieldName","code","joinCode","literalOf","createObjectTypeCode","type","registry","opts","isInterface","InterfaceType","typeOpts","name","typeName","fields","code","length","joinCode","map","f","createFieldRefCode","createNoopFieldRefCode","input","description","isTypeOf","undefined","createIsTypeOfFuncCode","extensions","protobufGraphQLExtensions","buildRefFunc","pothosBuilder","buildTypeFunc","refFuncTypeArg","protoType","proto","literalOf","tsFieldName","on","pothosRef","compact","protobuf","Error","compact","protobufGraphQLExtensions","code","literalOf","createOneofUnionTypeCode","type","registry","opts","typeOpts","types","fields","map","f","pothosRef","description","extensions","protobufGraphQLExtensions","code","pothosBuilder","literalOf","typeName","compact","createTypeDslCodes","types","registry","opts","flatMap","type","ObjectType","createObjectTypeCode","InputObjectType","createInputObjectTypeCode","EnumType","createEnumTypeCode","OneofUnionType","SquashedOneofUnionType","createOneofUnionTypeCode","_exhaustiveCheck"]}
|
|
1
|
+
{"version":3,"sources":["../../src/dslgen/printers/index.ts","../../src/dslgen/printers/enumType.ts","../../src/dslgen/printers/util.ts","../../src/dslgen/printers/inputObjectType.ts","../../src/dslgen/printers/field.ts","../../src/dslgen/printers/fieldResolver/enumFieldResolver.ts","../../src/dslgen/printers/fieldResolver/nonNullResolver.ts","../../src/dslgen/printers/fieldResolver/oneofUnionResolver.ts","../../src/dslgen/printers/objectType.ts","../../src/dslgen/printers/oneofUnionType.ts"],"sourcesContent":["import type { createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectType,\n ObjectType,\n OneofUnionType,\n SquashedOneofUnionType,\n} from \"@proto-graphql/codegen-core\";\nimport type { Code } from \"ts-poet\";\n\nimport { createEnumTypeCode } from \"./enumType\";\nimport { createInputObjectTypeCode } from \"./inputObjectType\";\nimport { createObjectTypeCode } from \"./objectType\";\nimport { createOneofUnionTypeCode } from \"./oneofUnionType\";\nimport type { PothosPrinterOptions } from \"./util\";\n\nexport function createTypeDslCodes(\n types: (\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n )[],\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code[] {\n return types.flatMap((type) => {\n if (type instanceof ObjectType) {\n return createObjectTypeCode(type, registry, opts);\n }\n if (type instanceof InputObjectType) {\n return createInputObjectTypeCode(type, registry, opts);\n }\n if (type instanceof EnumType) {\n return [createEnumTypeCode(type, registry, opts)];\n }\n if (\n type instanceof OneofUnionType ||\n type instanceof SquashedOneofUnionType\n ) {\n return [createOneofUnionTypeCode(type, registry, opts)];\n }\n\n const _exhaustiveCheck: never = type;\n throw \"unreachable\";\n });\n}\n","import {\n type EnumType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Hello$Ref: EnumRef<Hello, Hello> = builder.enumType(\"Hello\", {\n * values: [\n * // ...\n * ],\n * // ...\n * })\n * ```\n */\nexport function createEnumTypeCode(\n type: EnumType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n description: type.description,\n values: code`{${joinCode(\n type.values\n .filter((v) => !v.isIgnored() && !v.isUnespecified())\n .map(\n (ev) =>\n code`${ev.name}: ${literalOf(\n compact({\n description: ev.description,\n deprecationReason: ev.deprecationReason,\n value: ev.number,\n extensions: protobufGraphQLExtensions(ev, registry),\n }),\n )},`,\n ),\n )}} as const`,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n\n const protoTypeExpr = protoType(type.proto, opts);\n // EnumRef<Hello, Hello>\n const refTypeExpr = code`${imp(\n \"EnumRef@@pothos/core\",\n )}<${protoTypeExpr}, ${protoTypeExpr}>`;\n\n return code`\n export const ${pothosRef(type)}: ${refTypeExpr} =\n ${pothosBuilder(type, opts)}.enumType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n","import * as path from \"node:path\";\n\nimport {\n type EnumType,\n type InputObjectField,\n type InputObjectType,\n type InterfaceType,\n type ObjectField,\n type ObjectOneofField,\n type ObjectType,\n type OneofUnionType,\n type PrinterOptions,\n type SquashedOneofUnionType,\n filename,\n generatedGraphQLTypeImportPath,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp } from \"ts-poet\";\n\nexport type PothosPrinterOptions = Extract<PrinterOptions, { dsl: \"pothos\" }>;\n\nexport function pothosRef(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): Code {\n return code`${pothosRefName(type)}`;\n}\n\nfunction pothosRefName(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType\n | InterfaceType,\n): string {\n return `${type.typeName}$Ref`;\n}\n\nexport function shapeType(type: InputObjectType): Code {\n return code`${shapeTypeName(type)}`;\n}\n\nexport function shapeTypeName(type: InputObjectType): string {\n return `${type.typeName}$Shape`;\n}\n\nexport function fieldTypeRef(\n field:\n | ObjectField<\n ObjectType | EnumType | InterfaceType | SquashedOneofUnionType\n >\n | InputObjectField<InputObjectType | EnumType>\n | ObjectOneofField,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return pothosRef(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = pothosRefName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function fieldTypeShape(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return shapeType(field.type);\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = shapeTypeName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n\nexport function pothosBuilder(\n type:\n | ObjectType\n | InputObjectType\n | EnumType\n | OneofUnionType\n | SquashedOneofUnionType,\n opts: Pick<\n PothosPrinterOptions,\n \"dsl\" | \"pothos\" | \"fileLayout\" | \"filenameSuffix\"\n >,\n): Code {\n const importPath = opts.pothos.builderPath.startsWith(\".\")\n ? path.relative(path.dirname(filename(type, opts)), opts.pothos.builderPath)\n : opts.pothos.builderPath;\n return code`${imp(`builder@${importPath}`)}`;\n}\n","import {\n EnumType,\n type InputObjectField,\n InputObjectType,\n type Registry,\n ScalarType,\n compact,\n generatedGraphQLTypeImportPath,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, imp, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport {\n type PothosPrinterOptions,\n fieldTypeShape,\n pothosBuilder,\n pothosRef,\n shapeType,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export type HelloInput$Shape = {\n * // ...\n * }\n * export const HelloInput$Ref: pothos.InputObjectRef<Hello$SHape> = builder.inputRef(\"HelloInput\").implement({\n * description: \"...\",\n * fields: (t) => ({\n * // ...\n * }),\n * })\n *\n * export function HelloInput$toProto () {\n * return {\n * // ...\n * }\n * }\n *\n * ```\n */\nexport function createInputObjectTypeCode(\n type: InputObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const shapeTypeCode = code`\n export type ${shapeType(type)} = {\n ${joinCode(\n type.fields.map((f) => {\n let typeNode: Code;\n if (f.type instanceof InputObjectType) {\n // @ts-expect-error f should be inferred as InputObjectField<InputObjectType>\n typeNode = code`${fieldTypeShape(f, opts)}`;\n if (f.isList()) typeNode = code`Array<${typeNode}>`;\n } else {\n typeNode = code`${protoType(type.proto, opts)}[${literalOf(\n tsFieldName(f.proto, opts),\n )}]`;\n }\n return f.isNullable()\n ? code`${f.name}?: ${typeNode} | null,`\n : code`${f.name}: ${\n f.type instanceof ScalarType && f.type.isCustomScalar()\n ? code`NonNullable<${typeNode}>`\n : typeNode\n },`;\n }),\n )}\n };\n `;\n\n const refCode = code`\n export const ${pothosRef(type)}: ${imp(\n \"InputObjectRef@@pothos/core\",\n )}<${shapeType(type)}> =\n ${pothosBuilder(type, opts)}.inputRef<${shapeType(type)}>(${literalOf(\n type.typeName,\n )}).implement(\n ${literalOf(\n compact({\n description: type.description,\n fields: code`t => ({${\n type.fields.length > 0\n ? type.fields.map(\n (f) =>\n code`${f.name}: ${createFieldRefCode(\n f,\n registry,\n opts,\n )},`,\n )\n : code`_: ${createNoopFieldRefCode({ input: true })}`\n }})`,\n extensions: protobufGraphQLExtensions(type, registry),\n }),\n )}\n );\n `;\n\n const codes = [shapeTypeCode, refCode];\n\n if (opts.protobuf === \"protobuf-es\") {\n codes.push(createToProtoFuncCode(type, opts));\n }\n\n return code` ${codes} `;\n}\n\nfunction createToProtoFuncCode(\n type: InputObjectType,\n opts: PothosPrinterOptions,\n): Code {\n const oneofFields: Record<string, InputObjectField<InputObjectType>[]> = {};\n for (const f of type.fields) {\n if (f.proto.oneof == null) continue;\n if (!(f.type instanceof InputObjectType)) {\n throw new Error(\"Oneof fields must be of message\");\n }\n\n oneofFields[f.proto.oneof.name] = [\n ...(oneofFields[f.proto.oneof.name] || []),\n f as InputObjectField<InputObjectType>,\n ];\n }\n\n return code`\n export function ${toProtoFuncName(type)} (input: ${shapeType(\n type,\n )} | null | undefined): ${protoType(type.proto, opts)} {\n return new ${protoType(type.proto, opts)}({\n ${type.fields\n .filter((f) => f.proto.oneof == null)\n .map((f) => {\n switch (true) {\n case f.type instanceof InputObjectType: {\n const localName = tsFieldName(f.proto, opts);\n const toProtoFunc = fieldToProtoFunc(\n f as InputObjectField<InputObjectType>,\n opts,\n );\n if (f.isList()) {\n return code`${localName}: input?.${f.name}?.map(v => ${toProtoFunc}(v)),`;\n }\n return code`${localName}: input ? ${toProtoFunc}(input.${f.name}) : undefined,`;\n }\n case f.type instanceof ScalarType:\n case f.type instanceof EnumType: {\n const localName = tsFieldName(f.proto, opts);\n return code`${localName}: input?.${f.name} ?? undefined,`;\n }\n default: {\n f.type satisfies never;\n throw \"unreachable\";\n }\n }\n })}\n ${Object.values(oneofFields).map((fields) => {\n return code`${tsFieldName(\n // biome-ignore lint/style/noNonNullAssertion: we know it's not null\n fields[0]!.proto.oneof!,\n opts,\n )}:${fields.map(\n (f) =>\n code`input?.${f.name} ? { case: \"${tsFieldName(\n f.proto,\n opts,\n )}\", value: ${fieldToProtoFunc(f, opts)}(input.${f.name}) } :`,\n )} undefined,`;\n })}\n });\n }\n `;\n}\n\nfunction toProtoFuncName(type: InputObjectType): string {\n return `${type.typeName}$toProto`;\n}\n\nfunction fieldToProtoFunc(\n field: InputObjectField<InputObjectType>,\n opts: PothosPrinterOptions,\n): Code {\n const importPath = generatedGraphQLTypeImportPath(field, opts);\n if (importPath == null) return code`${toProtoFuncName(field.type)}`;\n\n const imported = imp(`IMPORTED_PLACEHOLDER@${importPath}`);\n imported.symbol = toProtoFuncName(field.type); // NOTE: Workaround for ts-poet not recognizing \"$\" as an identifier\n return code`${imported}`;\n}\n","import type { DescField, createRegistry } from \"@bufbuild/protobuf\";\nimport {\n EnumType,\n InputObjectField,\n ObjectField,\n ObjectOneofField,\n ObjectType,\n ScalarType,\n SquashedOneofUnionType,\n compact,\n createGetFieldValueCode,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport { createEnumResolverCode } from \"./fieldResolver/enumFieldResolver\";\nimport { createNonNullResolverCode } from \"./fieldResolver/nonNullResolver\";\nimport { createOneofUnionResolverCode } from \"./fieldResolver/oneofUnionResolver\";\nimport { type PothosPrinterOptions, fieldTypeRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * t.expose(\"name\", {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * })\n * ```\n * ```ts\n * t.field({\n * type: \"Boolean\",\n * nullable: true,\n * description: \"...\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createFieldRefCode(\n field: ObjectField<any> | ObjectOneofField | InputObjectField<any>,\n registry: ReturnType<typeof createRegistry>,\n opts: PothosPrinterOptions,\n): Code {\n const isInput = field instanceof InputObjectField;\n const baseType =\n field.type instanceof ScalarType\n ? literalOf(field.type.typeName)\n : fieldTypeRef(field, opts);\n\n const sourceExpr = code`source`;\n let resolverCode: Code | undefined;\n if (!isInput) {\n if (field instanceof ObjectOneofField) {\n resolverCode = createOneofUnionResolverCode(sourceExpr, field, opts);\n } else {\n const valueExpr = createGetFieldValueCode(sourceExpr, field.proto, opts);\n const nullableInProto =\n field.type instanceof ObjectType ||\n (field.type instanceof ScalarType &&\n !field.type.isPrimitive() &&\n !field.type.isWrapperType());\n if (nullableInProto && !field.isNullable()) {\n resolverCode = createNonNullResolverCode(valueExpr);\n }\n if (field.type instanceof EnumType && field instanceof ObjectField) {\n resolverCode = createEnumResolverCode(valueExpr, field, opts);\n }\n if (\n field.type instanceof SquashedOneofUnionType &&\n field instanceof ObjectField\n ) {\n resolverCode = createOneofUnionResolverCode(valueExpr, field, opts);\n }\n if (field.type instanceof ScalarType && field.type.isBytes()) {\n if (field.isList()) {\n resolverCode = code`return ${valueExpr}.map(v => Buffer.from(v));`;\n } else if (field.isNullable()) {\n resolverCode = code`return ${valueExpr} == null ? null : Buffer.from(${valueExpr});`;\n } else {\n resolverCode = code`return Buffer.from(${valueExpr});`;\n }\n }\n }\n }\n\n const nullableValue = isInput !== field.isNullable(); /* Logical XOR */\n const fieldOpts = {\n type: field.isList() ? code`[${baseType}]` : baseType,\n [isInput ? \"required\" : \"nullable\"]: field.isList()\n ? { list: nullableValue, items: isInput /* always non-null */ }\n : nullableValue,\n description: field.description,\n deprecationReason: field.deprecationReason,\n resolve: resolverCode ? code`${sourceExpr} => {${resolverCode}}` : null,\n extensions: protobufGraphQLExtensions(field, registry),\n };\n\n const shouldUseFieldFunc = isInput || resolverCode != null;\n return shouldUseFieldFunc\n ? code`t.field(${literalOf(compact(fieldOpts))})`\n : code`t.expose(${literalOf(\n tsFieldName(field.proto as DescField, opts),\n )}, ${literalOf(compact(fieldOpts))})`;\n}\n\n/**\n * @example\n * ```ts\n * t.field( {\n * type: \"Boolean\",\n * nullable: true,\n * description: \"noop field\",\n * resolve() {\n * return true\n * }\n * })\n * ```\n */\nexport function createNoopFieldRefCode(opts: { input: boolean }): Code {\n return code`\n t.field({\n type: \"Boolean\",\n ${opts.input ? \"required: false\" : \"nullable: true\"},\n description: \"noop field\",\n ${opts.input ? \"\" : \"resolve: () => true,\"}\n })\n `;\n}\n","import { localName } from \"@bufbuild/protoplugin/ecmascript\";\nimport {\n type EnumType,\n type EnumTypeValue,\n type ObjectField,\n type PrinterOptions,\n protoType,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * return null\n * }\n * return root.myEnum\n * ```\n * @example notNull\n * ```ts\n * if (!root.myEnum || root.myEnum === _$enums.myEnum.MY_ENUM_UNSPECIFIED) {\n * throw new Error(\"Message.field is required field. but got null or unspecified.\")\n * }\n * return root.myEnum\n * ```\n */\nexport function createEnumResolverCode(\n valueExpr: Code,\n field: ObjectField<EnumType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCodes = (valueExpr: Code): Code[] => {\n const chunks: Code[] = [];\n\n if (field.type.unspecifiedValue != null) {\n const escapeCode =\n field.isNullable() && !field.isList()\n ? code`return null;`\n : code`throw new Error(\"${field.name} is required field. But got unspecified.\");`;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, field.type.unspecifiedValue, opts)}) {\n ${escapeCode}\n }\n `);\n }\n for (const ev of field.type.valuesWithIgnored) {\n if (!ev.isIgnored()) continue;\n chunks.push(code`\n if (${valueExpr} === ${protoType(\n field.type.proto,\n opts,\n )}.${enumValueJsName(field.type, ev, opts)}) {\n throw new Error(\"${ev.name} is ignored in GraphQL schema\");\n }\n `);\n }\n\n return chunks;\n };\n\n if (field.isList()) {\n const stmts = createBlockStmtCodes(code`item`);\n if (stmts.length === 0) {\n return code`return ${valueExpr}`;\n }\n return code`return ${valueExpr}.map(item => {\n ${stmts}\n return item;\n })`;\n }\n\n return code`\n ${createBlockStmtCodes(valueExpr)}\n return ${valueExpr};\n `;\n}\n\nfunction enumValueJsName(\n et: EnumType,\n ev: EnumTypeValue,\n opts: PrinterOptions,\n): string {\n switch (opts.protobuf) {\n case \"ts-proto\":\n return ev.proto.name;\n case \"protobuf-es\": {\n return localName(ev.proto);\n }\n case \"protobufjs\":\n case \"google-protobuf\":\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import { type Code, code } from \"ts-poet\";\n\nexport function createNonNullResolverCode(valueExpr: Code): Code {\n return code`\n return ${valueExpr}!;\n `;\n}\n","import {\n ObjectField,\n ObjectOneofField,\n type PrinterOptions,\n type SquashedOneofUnionType,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode } from \"ts-poet\";\n\n/**\n * @example nullable\n * ```ts\n * const value = source.v1 ?? source.v2 ?? source.v3;\n * if (value != null) {\n * throw new Error(\"...\");\n * }\n * return value\n * ```\n */\nexport function createOneofUnionResolverCode(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n): Code {\n const createBlockStmtCode = (\n sourceExpr: Code,\n { nullable, list }: { nullable: boolean; list: boolean },\n ): Code => {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return createBlockStmtCodeForTsProto(sourceExpr, field, opts, {\n nullable,\n });\n }\n case \"protobuf-es\": {\n return createBlockStmtCodeForProtobufEs(sourceExpr, field, opts, {\n nullable,\n list,\n });\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n };\n\n if (field instanceof ObjectField && field.isList()) {\n return code`\n return ${sourceExpr}.map(item => {\n ${createBlockStmtCode(code`item`, { nullable: false, list: true })}\n })\n `;\n }\n\n return createBlockStmtCode(sourceExpr, {\n nullable: field.isNullable(),\n list: false,\n });\n}\n\nfunction createBlockStmtCodeForTsProto(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable }: { nullable: boolean },\n): Code {\n const createFieldExpr = (memberField: ObjectField<any>) => {\n if (field instanceof ObjectOneofField) {\n return code`${sourceExpr}.${tsFieldName(memberField.proto, opts)}`;\n }\n return code`${sourceExpr}?.${tsFieldName(memberField.proto, opts)}`;\n };\n\n return code`\n const value = ${joinCode(field.type.fields.map(createFieldExpr), {\n on: \"??\",\n })};\n if (value == null) {\n ${\n nullable\n ? \"return null\"\n : `throw new Error(\"${field.name} should not be null\")`\n };\n }\n return value;\n `;\n}\n\nfunction createBlockStmtCodeForProtobufEs(\n sourceExpr: Code,\n field: ObjectOneofField | ObjectField<SquashedOneofUnionType>,\n opts: PrinterOptions,\n { nullable, list }: { nullable: boolean; list: boolean },\n): Code {\n let valueExpr: Code;\n switch (true) {\n case field instanceof ObjectOneofField: {\n valueExpr = code`${sourceExpr}.${tsFieldName(field.proto, opts)}.value`;\n break;\n }\n case field instanceof ObjectField: {\n valueExpr = code`${sourceExpr}${list ? \"\" : \"?\"}.${tsFieldName(\n field.type.oneofUnionType.proto,\n opts,\n )}.value`;\n break;\n }\n default: {\n field satisfies never;\n throw \"unreachable\";\n }\n }\n if (nullable) {\n return code`return ${valueExpr};`;\n }\n return code`\n const value = ${valueExpr};\n if (value == null) {\n throw new Error(\"${field.name} should not be null\");\n }\n return value;\n `;\n}\n","import type { DescField } from \"@bufbuild/protobuf\";\nimport {\n InterfaceType,\n type ObjectType,\n type Registry,\n compact,\n protoType,\n protobufGraphQLExtensions,\n tsFieldName,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, joinCode, literalOf } from \"ts-poet\";\n\nimport { createFieldRefCode, createNoopFieldRefCode } from \"./field\";\nimport { type PothosPrinterOptions, pothosBuilder, pothosRef } from \"./util\";\n\n/**\n * @example\n * ```ts\n * export const Hello$Ref = builder.objectRef<_$hello$hello_pb.Hello>(\"Hello\")\n * builder.objectType(Hello$Ref, {\n * name: \"Hello\",\n * // ...\n * })\n * ```\n */\nexport function createObjectTypeCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const isInterface = type instanceof InterfaceType;\n const typeOpts = {\n name: type.typeName,\n fields: code`t => ({${\n type.fields.length > 0\n ? joinCode(\n type.fields.map(\n (f) => code`${f.name}: ${createFieldRefCode(f, registry, opts)},`,\n ),\n )\n : code`_: ${createNoopFieldRefCode({ input: false })}`\n }})`,\n description: type.description,\n isTypeOf: isInterface\n ? undefined\n : createIsTypeOfFuncCode(type, registry, opts),\n extensions: protobufGraphQLExtensions(type, registry),\n };\n const buildRefFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Ref`;\n const buildTypeFunc = code`${pothosBuilder(type, opts)}.${\n isInterface ? \"interface\" : \"object\"\n }Type`;\n const refFuncTypeArg = isInterface\n ? code`\n Pick<\n ${protoType(type.proto, opts)},\n ${joinCode(\n type.fields.map(\n (f) =>\n code`${literalOf(tsFieldName(f.proto as DescField, opts))}`,\n ),\n { on: \"|\" },\n )}\n >`\n : protoType(type.proto, opts);\n\n return code`\n export const ${pothosRef(\n type,\n )} = ${buildRefFunc}<${refFuncTypeArg}>(${literalOf(type.typeName)});\n ${buildTypeFunc}(${pothosRef(type)}, ${literalOf(compact(typeOpts))});\n `;\n}\n\nfunction createIsTypeOfFuncCode(\n type: ObjectType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n switch (opts.protobuf) {\n case \"ts-proto\": {\n return code`\n (source) => {\n return (source as ${protoType(type.proto, opts)} | { $type: string & {} }).$type\n === ${literalOf(type.proto.typeName)};\n }\n `;\n }\n case \"protobuf-es\": {\n return code`\n (source) => {\n return source instanceof ${protoType(type.proto, opts)}\n }\n `;\n }\n case \"google-protobuf\":\n case \"protobufjs\": {\n throw new Error(`Unsupported protobuf lib: ${opts.protobuf}`);\n }\n default: {\n opts satisfies never;\n throw \"unreachable\";\n }\n }\n}\n","import {\n type OneofUnionType,\n type Registry,\n type SquashedOneofUnionType,\n compact,\n protobufGraphQLExtensions,\n} from \"@proto-graphql/codegen-core\";\nimport { type Code, code, literalOf } from \"ts-poet\";\n\nimport {\n type PothosPrinterOptions,\n fieldTypeRef,\n pothosBuilder,\n pothosRef,\n} from \"./util\";\n\n/**\n * @example\n * ```ts\n * export cosnt Oneof = builder.unionType(\"Oneof\", {\n * types: [...],\n * // ...\n * })\n * ```\n */\nexport function createOneofUnionTypeCode(\n type: OneofUnionType | SquashedOneofUnionType,\n registry: Registry,\n opts: PothosPrinterOptions,\n): Code {\n const typeOpts = {\n types: type.fields.map((f) => fieldTypeRef(f, opts)),\n description: type.description,\n extensions: protobufGraphQLExtensions(type, registry),\n };\n return code`\n export const ${pothosRef(type)} =\n ${pothosBuilder(type, opts)}.unionType(${literalOf(\n type.typeName,\n )}, ${literalOf(compact(typeOpts))});\n `;\n}\n"],"mappings":"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","names":["EnumType","InputObjectType","ObjectType","OneofUnionType","SquashedOneofUnionType","compact","protoType","protobufGraphQLExtensions","code","imp","joinCode","literalOf","path","filename","generatedGraphQLTypeImportPath","code","imp","pothosRef","type","code","pothosRefName","typeName","shapeType","shapeTypeName","fieldTypeRef","field","opts","importPath","generatedGraphQLTypeImportPath","imported","imp","symbol","fieldTypeShape","pothosBuilder","pothos","builderPath","startsWith","relative","dirname","filename","createEnumTypeCode","type","registry","opts","typeOpts","description","values","code","joinCode","filter","v","isIgnored","isUnespecified","map","ev","name","literalOf","compact","deprecationReason","value","number","extensions","protobufGraphQLExtensions","protoTypeExpr","protoType","proto","refTypeExpr","imp","pothosRef","pothosBuilder","typeName","EnumType","InputObjectType","ScalarType","compact","generatedGraphQLTypeImportPath","protoType","protobufGraphQLExtensions","tsFieldName","code","imp","joinCode","literalOf","EnumType","InputObjectField","ObjectField","ObjectOneofField","ObjectType","ScalarType","SquashedOneofUnionType","compact","createGetFieldValueCode","protobufGraphQLExtensions","tsFieldName","code","literalOf","localName","protoType","code","createEnumResolverCode","valueExpr","field","opts","createBlockStmtCodes","chunks","type","unspecifiedValue","escapeCode","isNullable","isList","code","name","push","protoType","proto","enumValueJsName","ev","valuesWithIgnored","isIgnored","stmts","length","et","protobuf","localName","Error","code","createNonNullResolverCode","valueExpr","code","ObjectField","ObjectOneofField","tsFieldName","code","joinCode","createOneofUnionResolverCode","sourceExpr","field","opts","createBlockStmtCode","nullable","list","protobuf","createBlockStmtCodeForTsProto","createBlockStmtCodeForProtobufEs","Error","ObjectField","isList","code","isNullable","createFieldExpr","memberField","ObjectOneofField","tsFieldName","proto","joinCode","type","fields","map","on","name","valueExpr","oneofUnionType","createFieldRefCode","field","registry","opts","isInput","InputObjectField","baseType","type","ScalarType","literalOf","typeName","fieldTypeRef","sourceExpr","code","resolverCode","ObjectOneofField","createOneofUnionResolverCode","valueExpr","createGetFieldValueCode","proto","nullableInProto","ObjectType","isPrimitive","isWrapperType","isNullable","createNonNullResolverCode","EnumType","ObjectField","createEnumResolverCode","SquashedOneofUnionType","isBytes","isList","nullableValue","fieldOpts","list","items","description","deprecationReason","resolve","extensions","protobufGraphQLExtensions","shouldUseFieldFunc","compact","tsFieldName","createNoopFieldRefCode","input","createInputObjectTypeCode","type","registry","opts","shapeTypeCode","code","shapeType","joinCode","fields","map","f","typeNode","InputObjectType","fieldTypeShape","isList","protoType","proto","literalOf","tsFieldName","isNullable","name","ScalarType","isCustomScalar","refCode","pothosRef","imp","pothosBuilder","typeName","compact","description","length","createFieldRefCode","createNoopFieldRefCode","input","extensions","protobufGraphQLExtensions","codes","protobuf","push","createToProtoFuncCode","oneofFields","oneof","Error","toProtoFuncName","filter","localName","toProtoFunc","fieldToProtoFunc","EnumType","Object","values","field","importPath","generatedGraphQLTypeImportPath","imported","symbol","InterfaceType","compact","protoType","protobufGraphQLExtensions","tsFieldName","code","joinCode","literalOf","createObjectTypeCode","type","registry","opts","isInterface","InterfaceType","typeOpts","name","typeName","fields","code","length","joinCode","map","f","createFieldRefCode","createNoopFieldRefCode","input","description","isTypeOf","undefined","createIsTypeOfFuncCode","extensions","protobufGraphQLExtensions","buildRefFunc","pothosBuilder","buildTypeFunc","refFuncTypeArg","protoType","proto","literalOf","tsFieldName","on","pothosRef","compact","protobuf","Error","compact","protobufGraphQLExtensions","code","literalOf","createOneofUnionTypeCode","type","registry","opts","typeOpts","types","fields","map","f","fieldTypeRef","description","extensions","protobufGraphQLExtensions","code","pothosRef","pothosBuilder","literalOf","typeName","compact","createTypeDslCodes","types","registry","opts","flatMap","type","ObjectType","createObjectTypeCode","InputObjectType","createInputObjectTypeCode","EnumType","createEnumTypeCode","OneofUnionType","SquashedOneofUnionType","createOneofUnionTypeCode","_exhaustiveCheck"]}
|
|
@@ -498,7 +498,7 @@ var import_codegen_core8 = require("@proto-graphql/codegen-core");
|
|
|
498
498
|
var import_ts_poet9 = require("ts-poet");
|
|
499
499
|
function createOneofUnionTypeCode(type, registry, opts) {
|
|
500
500
|
const typeOpts = {
|
|
501
|
-
types: type.fields.map((f) =>
|
|
501
|
+
types: type.fields.map((f) => fieldTypeRef(f, opts)),
|
|
502
502
|
description: type.description,
|
|
503
503
|
extensions: (0, import_codegen_core8.protobufGraphQLExtensions)(type, registry)
|
|
504
504
|
};
|