@shopify/hydrogen-react
Version:
React components, hooks, and utilities for creating custom Shopify storefronts
59 lines (58 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const analyticsConstants = require("./analytics-constants.js");
const analyticsUtils = require("./analytics-utils.js");
const cookiesUtils = require("./cookies-utils.js");
const SCHEMA_ID = "trekkie_storefront_page_view/1.4";
const OXYGEN_DOMAIN = "myshopify.dev";
function pageView(payload) {
const pageViewPayload = payload;
const { id, resource } = analyticsUtils.parseGid(pageViewPayload.resourceId);
const resourceType = resource ? resource.toLowerCase() : void 0;
return [
analyticsUtils.schemaWrapper(
SCHEMA_ID,
analyticsUtils.addDataIf(
{
pageType: pageViewPayload.pageType,
customerId: parseInt(analyticsUtils.parseGid(pageViewPayload.customerId).id || "0"),
resourceType,
resourceId: parseInt(id)
},
formatPayload(pageViewPayload)
)
)
];
}
function formatPayload(payload) {
return {
appClientId: payload.shopifySalesChannel ? analyticsConstants.ShopifyAppId[payload.shopifySalesChannel] : analyticsConstants.ShopifyAppId.headless,
isMerchantRequest: isMerchantRequest(payload.url),
hydrogenSubchannelId: payload.storefrontId || payload.hydrogenSubchannelId || "0",
isPersistentCookie: payload.hasUserConsent,
uniqToken: payload.uniqueToken,
visitToken: payload.visitToken,
microSessionId: cookiesUtils.buildUUID(),
microSessionCount: 1,
url: payload.url,
path: payload.path,
search: payload.search,
referrer: payload.referrer,
title: payload.title,
shopId: parseInt(analyticsUtils.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;
}
exports.pageView = pageView;
//# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.js.map