@shopify/hydrogen-react
Version:
React components, hooks, and utilities for creating custom Shopify storefronts
59 lines (58 loc) • 1.9 kB
JavaScript
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