UNPKG

@shopify/hydrogen-react

Version:

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

51 lines (50 loc) 1.42 kB
import { SHOPIFY_S, SHOPIFY_Y } from "./cart-constants.mjs"; import { getTrackingValues } from "./tracking-utils.mjs"; const tokenHash = "xxxx-4xxx-xxxx-xxxxxxxxxxxx"; function buildUUID() { let hash = ""; try { const crypto = window.crypto; const randomValuesArray = new Uint16Array(31); crypto.getRandomValues(randomValuesArray); let i = 0; hash = tokenHash.replace(/[x]/g, (c) => { const r = randomValuesArray[i] % 16; const v = c === "x" ? r : r & 3 | 8; i++; return v.toString(16); }).toUpperCase(); } catch (err) { hash = tokenHash.replace(/[x]/g, (c) => { const r = Math.random() * 16 | 0; const v = c === "x" ? r : r & 3 | 8; return v.toString(16); }).toUpperCase(); } return `${hexTime()}-${hash}`; } function hexTime() { let dateNumber = 0; let perfNumber = 0; dateNumber = (/* @__PURE__ */ new Date()).getTime() >>> 0; try { perfNumber = performance.now() >>> 0; } catch (err) { perfNumber = 0; } const output = Math.abs(dateNumber + perfNumber).toString(16).toLowerCase(); return output.padStart(8, "0"); } function getShopifyCookies(cookies) { const trackingValues = getTrackingValues(cookies); return { [SHOPIFY_Y]: trackingValues.uniqueToken, [SHOPIFY_S]: trackingValues.visitToken }; } export { buildUUID, getShopifyCookies, hexTime }; //# sourceMappingURL=cookies-utils.mjs.map