/// import { ApiPayload, CompassCreateEventInput, GqlError, SdkError, } from '@atlassian/forge-graphql-types'; import { CompassRequests } from '../../compass-requests'; import { COMPOUND_MUTATION_NAME, concatGqlSegments, mapGqlErrors, parseCompoundMutationErrors, parsingResponseError, prefixMutation, } from '../../helpers'; import createBuildEventSegment from '../../helpers/gql-segments/createEventSegment'; declare module '../../compass-requests' { interface CompassRequests { /** * Creates a new compass event. **Note: This method is unstable.** * * #### Required Oauth Scopes * * write:event:compass */ createEvent( input: CompassCreateEventInput | CompassCreateEventInput[], ): Promise; } } CompassRequests.prototype.createEvent = async function ( this: CompassRequests, input, ) { let gqlErrors: Array; let errorsResp: Array = []; let data; const inputAsArray = Array.isArray(input) ? input : new Array(input); const { mutation, parameters, variables } = concatGqlSegments( inputAsArray.map(createBuildEventSegment), ); const prefixedMutation = prefixMutation( mutation, COMPOUND_MUTATION_NAME, parameters, ); try { const resp = await this.api.requestGraph( prefixedMutation, variables, 'createCompassEvent', ); ({ errors: gqlErrors, data } = await resp.json()); errorsResp = errorsResp.concat(mapGqlErrors(gqlErrors)); errorsResp = errorsResp.concat( parseCompoundMutationErrors(data, variables), ); } catch (e) { if (errorsResp.length === 0) { errorsResp.push(parsingResponseError(e)); } } return { errors: errorsResp, success: errorsResp.length === 0, }; };