@shopify/storefront-api-client
Version:
Shopify Storefront API Client - A lightweight JS client to interact with Shopify's Storefront API
1 lines • 6.42 kB
Source Map (JSON)
{"version":3,"file":"storefront-api-client.mjs","sources":["../src/storefront-api-client.ts"],"sourcesContent":["import {\n createGraphQLClient,\n getCurrentSupportedApiVersions,\n validateDomainAndGetStoreUrl,\n validateApiVersion,\n generateGetGQLClientParams,\n generateGetHeaders,\n} from '@shopify/graphql-client';\n\nimport {\n StorefrontApiClientOptions,\n StorefrontApiClient,\n StorefrontApiClientConfig,\n StorefrontOperations,\n} from './types';\nimport {\n DEFAULT_SDK_VARIANT,\n DEFAULT_CLIENT_VERSION,\n SDK_VARIANT_HEADER,\n SDK_VARIANT_SOURCE_HEADER,\n SDK_VERSION_HEADER,\n DEFAULT_CONTENT_TYPE,\n PUBLIC_ACCESS_TOKEN_HEADER,\n PRIVATE_ACCESS_TOKEN_HEADER,\n CLIENT,\n} from './constants';\nimport {\n validateRequiredAccessTokens,\n validatePrivateAccessTokenUsage,\n} from './validations';\n\nexport function createStorefrontApiClient({\n storeDomain,\n apiVersion,\n publicAccessToken,\n privateAccessToken,\n clientName,\n retries = 0,\n customFetchApi,\n logger,\n}: StorefrontApiClientOptions): StorefrontApiClient {\n const currentSupportedApiVersions = getCurrentSupportedApiVersions();\n\n const storeUrl = validateDomainAndGetStoreUrl({\n client: CLIENT,\n storeDomain,\n });\n\n const baseApiVersionValidationParams = {\n client: CLIENT,\n currentSupportedApiVersions,\n logger,\n };\n\n validateApiVersion({...baseApiVersionValidationParams, apiVersion});\n validateRequiredAccessTokens(publicAccessToken, privateAccessToken);\n validatePrivateAccessTokenUsage(privateAccessToken);\n\n const apiUrlFormatter = generateApiUrlFormatter(\n storeUrl,\n apiVersion,\n baseApiVersionValidationParams,\n );\n\n const config: StorefrontApiClientConfig = {\n storeDomain: storeUrl,\n apiVersion,\n ...(publicAccessToken\n ? {publicAccessToken}\n : {\n privateAccessToken: privateAccessToken!,\n }),\n headers: {\n 'Content-Type': DEFAULT_CONTENT_TYPE,\n Accept: DEFAULT_CONTENT_TYPE,\n [SDK_VARIANT_HEADER]: DEFAULT_SDK_VARIANT,\n [SDK_VERSION_HEADER]: DEFAULT_CLIENT_VERSION,\n ...(clientName ? {[SDK_VARIANT_SOURCE_HEADER]: clientName} : {}),\n ...(publicAccessToken\n ? {[PUBLIC_ACCESS_TOKEN_HEADER]: publicAccessToken}\n : {[PRIVATE_ACCESS_TOKEN_HEADER]: privateAccessToken!}),\n },\n apiUrl: apiUrlFormatter(),\n clientName,\n };\n\n const graphqlClient = createGraphQLClient({\n headers: config.headers,\n url: config.apiUrl,\n retries,\n customFetchApi,\n logger,\n });\n\n const getHeaders = generateGetHeaders(config);\n const getApiUrl = generateGetApiUrl(config, apiUrlFormatter);\n\n const getGQLClientParams = generateGetGQLClientParams<StorefrontOperations>({\n getHeaders,\n getApiUrl,\n });\n\n const client: StorefrontApiClient = {\n config,\n getHeaders,\n getApiUrl,\n fetch: (...props) => {\n return graphqlClient.fetch(...getGQLClientParams(...props));\n },\n request: (...props) => {\n return graphqlClient.request(...getGQLClientParams(...props));\n },\n requestStream: (...props) => {\n return graphqlClient.requestStream(...getGQLClientParams(...props));\n },\n };\n\n return Object.freeze(client);\n}\n\nfunction generateApiUrlFormatter(\n storeUrl: string,\n defaultApiVersion: string,\n baseApiVersionValidationParams: Omit<\n Parameters<typeof validateApiVersion>[0],\n 'apiVersion'\n >,\n) {\n return (apiVersion?: string) => {\n if (apiVersion) {\n validateApiVersion({\n ...baseApiVersionValidationParams,\n apiVersion,\n });\n }\n\n const urlApiVersion = (apiVersion ?? defaultApiVersion).trim();\n\n return `${storeUrl}/api/${urlApiVersion}/graphql.json`;\n };\n}\n\nfunction generateGetApiUrl(\n config: StorefrontApiClientConfig,\n apiUrlFormatter: (version?: string) => string,\n): StorefrontApiClient['getApiUrl'] {\n return (propApiVersion?: string) => {\n return propApiVersion ? apiUrlFormatter(propApiVersion) : config.apiUrl;\n };\n}\n"],"names":[],"mappings":"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"}