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