@konkonam/nuxt-shopify
Version:
Easily integrate shopify with nuxt 3 and 4 🚀
32 lines (31 loc) • 1.21 kB
JavaScript
import { createStorefrontApiClient } from "@shopify/storefront-api-client";
import { createConsola } from "consola";
import { useNitroApp } from "nitropack/runtime";
import useErrors from "./useErrors.js";
import { useRuntimeConfig } from "#imports";
export function useStorefront() {
const { _shopify } = useRuntimeConfig();
if (!_shopify?.clients.storefront) {
throw new Error("Could not create storefront client");
}
const {
skipCodegen: _skipCodegen,
sandbox: _sandbox,
documents: _documents,
...options
} = _shopify.clients.storefront;
if (_shopify.logger) {
options.logger = createConsola(_shopify.logger).withTag("shopify").trace;
}
const nitroApp = useNitroApp();
nitroApp.hooks.callHook("storefront:client:configure", { options });
const { request, ...rest } = createStorefrontApiClient(options);
const wrappedRequest = async (...params) => {
const response = await request(...params);
if (response.errors) useErrors(nitroApp, response.errors, _shopify.errors?.throw ?? false);
return response;
};
const client = { request: wrappedRequest, ...rest };
nitroApp.hooks.callHook("storefront:client:create", { client });
return client;
}