UNPKG

@pothos/core

Version:

Pothos (formerly GiraphQL) is a plugin based schema builder for creating code-first GraphQL schemas in typescript

78 lines (77 loc) 2.83 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { defaultFieldResolver } from 'graphql'; import { FieldRef } from '../refs/field.js'; import { typeFromParam } from '../utils/index.js'; export class BaseFieldUtil { createField(// biome-ignore lint/suspicious/noExplicitAny: this is fine options) { const ref = new FieldRef(this.kind, (name, typeConfig) => { var _options_extensions; const args = {}; if (options.args) { for (const [argName, arg] of Object.entries(options.args)) { args[argName] = arg.getConfig(argName, name, typeConfig); } } let { resolve } = options; if (((_options_extensions = options.extensions) === null || _options_extensions === void 0 ? void 0 : _options_extensions.pothosExposedField) === name) { resolve = defaultFieldResolver; } const { subscribe } = options; var _options_nullable; return { kind: this.kind, graphqlKind: typeConfig.graphqlKind, parentType: typeConfig.name, name, args, argMappers: [], type: typeFromParam(options.type, this.builder.configStore, (_options_nullable = options.nullable) !== null && _options_nullable !== void 0 ? _options_nullable : this.builder.defaultFieldNullability), pothosOptions: options, extensions: { pothosOriginalResolve: resolve, pothosOriginalSubscribe: subscribe, ...options.extensions }, description: options.description, deprecationReason: options.deprecationReason, resolve, subscribe, astNode: options.astNode }; }); return ref; } exposeField(name, { extensions, ...options }) { return this.createField({ ...options, extensions: { pothosExposedField: name, ...extensions }, resolve: (parent) => parent[name] }); } constructor(builder, kind, graphqlKind) { _define_property(this, "kind", void 0); _define_property(this, "graphqlKind", void 0); _define_property(this, "builder", void 0); this.builder = builder; this.kind = kind; this.graphqlKind = graphqlKind; } } //# sourceMappingURL=base.js.map