/// import { ApiPayload, CompassCreateCustomFieldDefinitionInput, CompassCustomFieldDefinition, CreateCustomFieldDefinition, CustomFieldDefinitionPayload, SdkError, } from '@atlassian/forge-graphql-types'; import { CompassRequests } from '../../compass-requests'; import { mapGqlErrors, mapMutationErrors, parsingResponseError, } from '../../helpers'; declare module '../../compass-requests' { interface CompassRequests { /** * Creates a new compass custom field definition. * * **Required Oauth Scopes:** `write:component:compass` */ createCustomFieldDefinition( input: CompassCreateCustomFieldDefinitionInput, ): Promise>; } } CompassRequests.prototype.createCustomFieldDefinition = async function createCustomFieldDefinition( this: CompassRequests, input: CompassCreateCustomFieldDefinitionInput, ) { let customFieldDefinition: CompassCustomFieldDefinition | null = null; let errorsResp: Array = []; try { const resp = await this.api.requestGraph( CreateCustomFieldDefinition, { input }, 'createCustomFieldDefinition', ); const { errors: gqlErrors, data } = await resp.json(); errorsResp = errorsResp.concat(mapGqlErrors(gqlErrors)); const mutationErrors = data.compass.createCustomFieldDefinition.errors; customFieldDefinition = data.compass.createCustomFieldDefinition.customFieldDefinition; errorsResp = errorsResp.concat(mapMutationErrors(mutationErrors)); } catch (e) { if (errorsResp.length === 0) { errorsResp.push(parsingResponseError(e)); } } return { errors: errorsResp, success: errorsResp.length === 0, data: { customFieldDefinition }, }; };