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