@pothos/core
Version:
Pothos (formerly GiraphQL) is a plugin based schema builder for creating code-first GraphQL schemas in typescript
87 lines (86 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "BaseFieldUtil", {
enumerable: true,
get: function() {
return BaseFieldUtil;
}
});
const _graphql = require("graphql");
const _field = require("../refs/field");
const _utils = require("../utils");
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;
}
class BaseFieldUtil {
createField(// biome-ignore lint/suspicious/noExplicitAny: this is fine
options) {
const ref = new _field.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 = _graphql.defaultFieldResolver;
}
const { subscribe } = options;
var _options_nullable;
return {
kind: this.kind,
graphqlKind: typeConfig.graphqlKind,
parentType: typeConfig.name,
name,
args,
argMappers: [],
type: (0, _utils.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