UNPKG

@shopify/hydrogen-react

Version:

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

59 lines (58 loc) 2.11 kB
"use strict"; 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