UNPKG

@shopify/hydrogen-react

Version:

React components, hooks, and utilities for creating custom Shopify storefronts

59 lines (58 loc) 1.9 kB
import { ShopifyAppId } from "./analytics-constants.mjs"; import { parseGid, schemaWrapper, addDataIf } from "./analytics-utils.mjs"; import { buildUUID } from "./cookies-utils.mjs"; const SCHEMA_ID = "trekkie_storefront_page_view/1.4"; const OXYGEN_DOMAIN = "myshopify.dev"; function pageView(payload) { const pageViewPayload = payload; const { id, resource } = parseGid(pageViewPayload.resourceId); const resourceType = resource ? resource.toLowerCase() : void 0; return [ schemaWrapper( SCHEMA_ID, addDataIf( { pageType: pageViewPayload.pageType, customerId: parseInt(parseGid(pageViewPayload.customerId).id || "0"), resourceType, resourceId: parseInt(id) }, formatPayload(pageViewPayload) ) ) ]; } function formatPayload(payload) { return { appClientId: payload.shopifySalesChannel ? ShopifyAppId[payload.shopifySalesChannel] : ShopifyAppId.headless, isMerchantRequest: isMerchantRequest(payload.url), hydrogenSubchannelId: payload.storefrontId || payload.hydrogenSubchannelId || "0", isPersistentCookie: payload.hasUserConsent, uniqToken: payload.uniqueToken, visitToken: payload.visitToken, microSessionId: buildUUID(), microSessionCount: 1, url: payload.url, path: payload.path, search: payload.search, referrer: payload.referrer, title: payload.title, shopId: parseInt(parseGid(payload.shopId).id), currency: payload.currency, contentLanguage: payload.acceptedLanguage || "en" }; } function isMerchantRequest(url) { if (typeof url !== "string") { return false; } const hostname = new URL(url).hostname; if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === "localhost") { return true; } return false; } export { pageView }; //# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.mjs.map