import {AuthScopes, Session} from '@shopify/shopify-api'; import {AdminApiContext} from '../../../clients'; import type {BasicParams} from '../../../types'; import {ScopesDetail} from './types'; import { FetchScopesDetailResponse, fetchScopeDetail, } from './client/fetch-scopes-details'; export function queryScopesFactory( params: BasicParams, session: Session, admin: AdminApiContext, ) { return async function queryScopes() { const {logger} = params; logger.debug('Querying scopes details: ', { shop: session.shop, }); const scopesDetail = await fetchScopeDetail(admin); return mapFetchScopeDetail(scopesDetail); }; } export function mapFetchScopeDetail( scopesDetailResponse: FetchScopesDetailResponse, ): ScopesDetail { const appInformation = scopesDetailResponse.app; const granted = new AuthScopes( appInformation.installation.accessScopes.map((scope) => scope.handle), ).toArray(true); const required = new AuthScopes( appInformation.requestedAccessScopes.map((scope) => scope.handle), ).toArray(true); const optional = new AuthScopes( appInformation.optionalAccessScopes.map((scope) => scope.handle), ).toArray(true); return { granted, required, optional, }; }