UNPKG

@pothos/plugin-with-input

Version:

A Pothos plugin for defining fields with input objects

51 lines (50 loc) 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _core = require("@pothos/core"); const rootBuilderProto = _core.RootFieldBuilder.prototype; function capitalize(s) { return `${s.slice(0, 1).toUpperCase()}${s.slice(1)}`; } function defaultGetName({ parentTypeName, fieldName }) { return `${parentTypeName}${capitalize(fieldName)}Input`; } rootBuilderProto.fieldWithInput = function fieldWithInput({ typeOptions: { name: typeName, ...typeOptions } = {}, argOptions: { name: argName = 'input', ...argOptions } = {}, args, input, ...fieldOptions }) { var _this_builder_options_withInput; const inputRef = this.builder.inputRef(typeName !== null && typeName !== void 0 ? typeName : 'UnnamedWithInput'); const fieldRef = this.field({ args: { ...args, [argName]: this.arg({ required: true, ...(_this_builder_options_withInput = this.builder.options.withInput) === null || _this_builder_options_withInput === void 0 ? void 0 : _this_builder_options_withInput.argOptions, ...argOptions, type: inputRef }) }, ...fieldOptions }); fieldRef.onFirstUse((config)=>{ var _this_builder_options_withInput; var _this_builder_options_withInput_typeOptions; const { name: getTypeName = defaultGetName, ...defaultTypeOptions } = (_this_builder_options_withInput_typeOptions = (_this_builder_options_withInput = this.builder.options.withInput) === null || _this_builder_options_withInput === void 0 ? void 0 : _this_builder_options_withInput.typeOptions) !== null && _this_builder_options_withInput_typeOptions !== void 0 ? _this_builder_options_withInput_typeOptions : {}; const name = typeName !== null && typeName !== void 0 ? typeName : getTypeName({ parentTypeName: config.parentType, fieldName: config.name }); inputRef.name = name; this.builder.inputType(inputRef, { fields: ()=>input, ...defaultTypeOptions, ...typeOptions }); }); return fieldRef; }; Object.defineProperty(rootBuilderProto, 'input', { get: function getInputBuilder() { return new _core.InputFieldBuilder(this.builder, 'InputObject'); } }); //# sourceMappingURL=schema-builder.js.map