UNPKG

@nacelle/compatibility-connector

Version:

Connect @nacelle/client-js-sdk to Nacelle's v2 back end with minimal code changes

34 lines (28 loc) 993 B
import type { StorefrontResponse } from '@nacelle/storefront-sdk'; import type { StorefrontInstanceV2 } from '../connector/index'; import { StorefrontInstance } from 'storefrontSdkV1'; const isV2SdkResponse = ( response: unknown ): response is StorefrontResponse<unknown> => typeof (response as StorefrontResponse<unknown>).data !== 'undefined' || typeof (response as StorefrontResponse<unknown>).error !== 'undefined'; export async function graphqlQuery<ResponseData>( query: string, variables: string | Record<string, unknown>, client: StorefrontInstanceV2 | StorefrontInstance ): Promise<ResponseData> { const response = await client.query({ query, variables: typeof variables === 'object' ? JSON.stringify(variables) : variables }); if (isV2SdkResponse(response)) { const { data, error } = response; if (error) { throw new Error(error.message); } return data as ResponseData; } else { return response as ResponseData; } }