import forgeApi, { FetchAPI } from '@forge/api'; import { CompassRequests } from './compass-requests'; import { ConfigAsCodeAPI } from './config-as-code-api'; import ForgeWrapper from './forge_wrapper'; /** * Forge api class, scoped to Compass graphQL requests. */ export class CompassApi { api: FetchAPI; configAsCode: ConfigAsCodeAPI; private asUserRequests: CompassRequests; private asAppRequests: CompassRequests; constructor(api: FetchAPI = forgeApi) { this.api = api; this.asUserRequests = new CompassRequests( ForgeWrapper.wrap(this.api.asUser()), ); this.asAppRequests = new CompassRequests( ForgeWrapper.wrap(this.api.asApp()), ); this.configAsCode = new ConfigAsCodeAPI( api, this.asUserRequests, this.asAppRequests, ); } /** * Authenticates with Atlassian GraphQL Gateway as user. */ public asUser(): CompassRequests { return this.asUserRequests; } /** * Authenticates with Atlassian GraphQL Gateway as your Forge app. */ public asApp(): CompassRequests { return this.asAppRequests; } }