/// import { ApiPayload, ComponentPayload, CreateCompassComponent, CreateCompassComponentInput, CreateComponentOptions, GqlError, MutationError, SdkError, } from '@atlassian/forge-graphql-types'; import { CompassRequests } from '../../compass-requests'; import { mapGqlErrors, mapMutationErrors, parsingResponseError, } from '../../helpers'; declare module '../../compass-requests' { interface CompassRequests { createBaseComponent( cloudId: string, input: CreateCompassComponentInput & { options?: CreateComponentOptions }, ): Promise>; } } CompassRequests.prototype.createBaseComponent = async function ( this: CompassRequests, cloudId, { options, ...createBaseComponentInput }, ) { let component = null; let gqlErrors: Array; let mutationErrors: Array; let errorsResp: Array = []; let data; try { const analyticHeaders = { createdFromFile: (!!options?.createdFromFile).toString(), }; const resp = await this.api.requestGraph( CreateCompassComponent, { cloudId, input: createBaseComponentInput }, 'createBaseComponent', analyticHeaders, ); ({ errors: gqlErrors, data } = await resp.json()); errorsResp = errorsResp.concat(mapGqlErrors(gqlErrors)); ({ createComponent: { componentDetails: component, errors: mutationErrors }, } = data.compass); errorsResp = errorsResp.concat(mapMutationErrors(mutationErrors)); } catch (e) { if (errorsResp.length === 0) { errorsResp.push(parsingResponseError(e)); } } return { errors: errorsResp, success: errorsResp.length === 0, data: { component }, }; };