@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
JavaScript
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