import { GraphQLFetchMethods } from '@forge/api'; import { APIResponse } from './types'; import * as PACKAGE_JSON from '../package.json'; const AGG_HEADERS = { 'Content-Type': 'application/json', 'X-ExperimentalApi': 'compass-beta, compass-prototype', }; export default class ForgeWrapper { static wrap(api: GraphQLFetchMethods): any { return new ForgeWrapper(api); } private api: GraphQLFetchMethods; constructor(api: GraphQLFetchMethods) { this.api = api; } public async requestGraph( query: string, variables?: V, api_method = 'unknown', headers = {} as Record, ): Promise> { const resp = await this.api.requestGraph(query, variables, { ...AGG_HEADERS, 'X-SDK-Version': PACKAGE_JSON.version, 'X-SDK-Method': api_method, 'X-SDK-Analytics': JSON.stringify(headers), }); if (process.env.FORGE_GRAPHQL_LOGGING) { console.log({ message: 'AGG request from Forge-graphql SDK', responseStatus: resp.status, }); } return resp as unknown as APIResponse; } }