UNPKG

@konkonam/nuxt-shopify

Version:

Easily integrate shopify with nuxt 3 and 4 🚀

27 lines (26 loc) • 1.38 kB
import { joinURL } from "ufo"; import { useRuntimeConfig, useNuxtApp, useRequestURL } from "#imports"; import { createClient } from "../utils/client.js"; import { createStorefrontConfig } from "../utils/storefront.js"; import useErrors from "../utils/errors.js"; export function useStorefront() { const { _shopify } = useRuntimeConfig().public; const config = createStorefrontConfig(_shopify); const nuxtApp = useNuxtApp(); if (_shopify?.clients.storefront?.proxy) { const proxyUrl = typeof _shopify.clients.storefront.proxy === "string" ? _shopify.clients.storefront.proxy : "_proxy/storefront"; config.apiUrl = joinURL(useRequestURL().origin, proxyUrl); } nuxtApp.hooks.callHook("storefront:client:configure", { config }); const originalClient = createClient(config); const request = async (operation, options) => { nuxtApp.hooks.callHook("storefront:client:request", { operation, options }); const response = await originalClient.request(operation, options); if (response.errors) useErrors(nuxtApp.hooks, "storefront:client:errors", response.errors, _shopify?.errors?.throw ?? false); nuxtApp.hooks.callHook("storefront:client:response", { response, operation, options }); return response; }; const client = { ...originalClient, request }; nuxtApp.hooks.callHook("storefront:client:create", { client }); return client; }