@rebuy/rebuy 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +774 -8
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +767 -7
- package/dist/index.mjs.map +4 -4
- package/package.json +3 -4
- package/dist/api.js +0 -131
- package/dist/api.js.map +0 -7
- package/dist/api.mjs +0 -111
- package/dist/api.mjs.map +0 -7
- package/dist/client.js +0 -145
- package/dist/client.js.map +0 -7
- package/dist/client.mjs +0 -115
- package/dist/client.mjs.map +0 -7
- package/dist/cookie.js +0 -139
- package/dist/cookie.js.map +0 -7
- package/dist/cookie.mjs +0 -119
- package/dist/cookie.mjs.map +0 -7
- package/dist/geolocation.js +0 -79
- package/dist/geolocation.js.map +0 -7
- package/dist/geolocation.mjs +0 -49
- package/dist/geolocation.mjs.map +0 -7
- package/dist/identity.js +0 -86
- package/dist/identity.js.map +0 -7
- package/dist/identity.mjs +0 -56
- package/dist/identity.mjs.map +0 -7
- package/dist/session.js +0 -72
- package/dist/session.js.map +0 -7
- package/dist/session.mjs +0 -42
- package/dist/session.mjs.map +0 -7
- package/dist/utilities.js +0 -321
- package/dist/utilities.js.map +0 -7
- package/dist/utilities.mjs +0 -301
- package/dist/utilities.mjs.map +0 -7
package/dist/utilities.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/utilities.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns true if the string is a valid base64 encoded string.\n *\n * @param {string} str - The string to check.\n *\n * @returns {boolean} True if the string is a valid base64 encoded string.\n */\nexport function isBase64Encoded(str: string): boolean {\n const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n\n return base64Regex.test(str) ? true : false;\n}\n\n/**\n * Returns a string as a JSON object.\n *\n * @param {string} data - The string to convert to a JSON object.\n * @param {boolean} decode - Whether to decode the string. *\n *\n * @returns {any} The JSON object.\n */\nexport function stringToData(data: string, decode: boolean): any {\n let response = data;\n\n // Base64 decode\n if (decode === true) {\n response = atob(response);\n }\n\n try {\n response = JSON.parse(response);\n } catch (e) {\n // failure to parse cookie\n response = data;\n }\n\n return response;\n}\n\n/**\n * Returns a JSON object as a string.\n *\n * @param {any} data - The JSON object to convert to a string.\n * @param {boolean} encode - Whether to encode the string. *\n *\n * @returns {string} The string.\n */\nexport function dataToString(data: any, encode: boolean): string {\n let response = data;\n\n if (typeof response != 'string') {\n response = JSON.stringify(response);\n }\n\n // Base64 encode\n if (encode === true) {\n response = btoa(response);\n }\n\n return response;\n}\n\n/**\n * Returns a string with HTML tags removed.\n *\n * @param {string} str - The string to strip HTML tags from.\n *\n * @returns {string} The string with HTML tags removed.\n */\nexport function stripHtml(str: string): string {\n return str?.replace(/<(.|\\n)*?>/g, '') ?? '';\n}\n\n/**\n * Returns the ID from a GraphQL URL.\n *\n * @param {string} graphId - The GraphQL URL.\n * @param {string} objectType - The object type.\n *\n * @returns {number | null} The ID.\n */\nexport function getIdFromGraphUrl(graphId: string, objectType: string): number | null {\n let id: number | null = null;\n\n const regex = new RegExp(`gid://shopify/${objectType}/(.*)`);\n const matches = graphId.match(regex);\n\n if (matches != null) {\n const matchedId = matches[1];\n\n if (!isNaN(Number(matchedId))) {\n id = Number(matchedId);\n }\n }\n\n return id;\n}\n\n/**\n * Returns true if the variant is available.\n *\n * @param {any} variant - The variant.\n *\n * @returns {boolean} True if the variant is available.\n */\nexport function variantAvailable(variant: any): boolean {\n return !(variant.inventory_management && variant.inventory_policy === 'deny' && variant.inventory_quantity <= 0);\n}\n\n/**\n * Returns the first available variant.\n *\n * @param {any} product - The product.\n *\n * @returns {any} The first available variant.\n */\nexport function firstAvailableVariant(product: any): any {\n // Select first variant\n let selectedVariant = product.variants[0];\n\n // Upgrade to first available\n for (let i = 0; i < product.variants.length; i++) {\n if (variantAvailable(product.variants[i])) {\n selectedVariant = product.variants[i];\n break;\n }\n }\n\n return selectedVariant;\n}\n\n/**\n * Returns a UUID.\n *\n * @returns {string} The UUID.\n */\nexport function uuid(): string {\n let d = new Date().getTime();\n let d2 = (performance && performance.now && performance.now() * 1000) || 0;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16;\n\n if (d > 0) {\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\n\n/**\n * Returns a session ID.\n *\n * @returns {string} The session ID.\n */\nexport function sessionId(): string {\n const config = {\n chars: '0123456789',\n length: 12,\n };\n\n let sessionId = '';\n const sessionStart = new Date().getTime();\n\n for (let i = config.length; i > 0; i--) {\n sessionId += config.chars[Math.floor(Math.random() * config.chars.length)];\n }\n\n return `REBUY.${sessionStart}.${sessionId}`;\n}\n\n/**\n * Converts a product to the storefront format.\n *\n * @param {any} product - The product.\n *\n * @returns {any} The product in the storefront format.\n */\nexport function convertProductToStorefrontFormat(product: any): any {\n const defaultVariant = firstAvailableVariant(product);\n const minVariantPrice = variantMinMaxPriceObject(product, 'price', 'min');\n const maxVariantPrice = variantMinMaxPriceObject(product, 'price', 'max');\n const minVariantCompareAtPrice = variantMinMaxPriceObject(product, 'compare_at_price', 'min');\n const maxVariantCompareAtPrice = variantMinMaxPriceObject(product, 'compare_at_price', 'max');\n const selectedOptions = selectedVariantOptions(product, defaultVariant);\n\n const variants = product.variants.map((variant: any) => convertVariantToStorefrontFormat(product, variant));\n\n return {\n collections: null,\n compareAtPriceRange: {\n maxVariantCompareAtPrice,\n minVariantCompareAtPrice,\n },\n description: stripHtml(product.body_html),\n descriptionHtml: product.body_html,\n featuredImage: productImageObject(product, null),\n handle: product.handle,\n id: `gid://shopify/Product/${product.id}`,\n images: null,\n media: [],\n metafields: [],\n options: [\n ...product.options.map((option: any) => {\n return { name: option.name, values: option.values };\n }),\n ],\n priceRange: {\n maxVariantPrice,\n minVariantPrice,\n },\n selectedOptions,\n selectedSellingPlan: null,\n selectedSellingPlanAllocation: null,\n sellingPlanGroups: [],\n seo: { description: null, title: null },\n title: product.title,\n variants: convertToNodes(variants),\n vendor: product.vendor,\n };\n}\n\n/**\n * Converts an array to a nodes object.\n *\n * @param {any} arr - The array to convert to a nodes object.\n *\n * @returns {any} The nodes object.\n */\nexport function convertToNodes(arr: any): any {\n return {\n edges: [\n ...arr.map((node: any) => {\n return { node };\n }),\n ],\n };\n}\n\n/**\n * Converts a variant to the storefront format.\n *\n * @param {any} product - The product.\n * @param {any} variant - The variant.\n *\n * @returns {any} The variant in the storefront format.\n */\nexport function convertVariantToStorefrontFormat(product: any, variant: any): any {\n const selectedOptions = selectedVariantOptions(product, variant);\n const image = productImageObject(product, variant.image_id);\n\n return {\n availableForSale: variantAvailable(variant),\n compareAtPriceV2: variantPriceObject(variant, 'compare_at_price'),\n id: `gid://shopify/ProductVariant/${variant.id}`,\n image: image,\n priceV2: variantPriceObject(variant, 'price'),\n product: {\n handle: product.handle,\n id: product.id,\n title: product.title,\n vendor: product.vendor,\n },\n selectedOptions: [selectedOptions],\n sku: variant.sku,\n title: variant.title,\n };\n}\n\n/**\n * Returns the minimum or maximum price object for a variant.\n *\n * @param {any} product - The product.\n * @param {string} key - The key to get the price object for.\n * @param {string} operator - The operator to use. *\n *\n * @returns {any} The price object.\n */\nexport function variantMinMaxPriceObject(product: any, key: string = 'price', operator: string = 'min'): any {\n let priceObject = variantPriceObject(product.variants[0], key);\n\n for (let i = 0; i < product.variants.length; i++) {\n const variantPrice = variantPriceObject(product.variants[i], key);\n\n if (variantPrice != null) {\n const variantPriceAmount = Number(variantPrice.amount);\n const currentPriceAmount = priceObject != null ? Number(priceObject.amount) : null;\n\n if (\n currentPriceAmount == null ||\n (operator === 'min' && variantPriceAmount < currentPriceAmount) ||\n (operator === 'max' && variantPriceAmount > currentPriceAmount)\n ) {\n priceObject = variantPrice;\n }\n }\n }\n\n return priceObject;\n}\n\n/**\n * Returns the price object for a variant.\n *\n * @param {any} variant - The variant.\n * @param {string} key - The key to get the price object for.\n *\n * @returns {any} The price object.\n */\nexport function variantPriceObject(variant: any, key: string = 'price'): any {\n if (variant[key] != null) {\n return {\n amount: variant[key],\n currencyCode: 'USD',\n };\n }\n\n return null;\n}\n\n/**\n * Returns the selected variant options.\n *\n * @param {any} product - The product.\n * @param {any} variant - The variant.\n *\n * @returns {any} The selected variant options.\n */\nexport function selectedVariantOptions(product: any, variant: any): any {\n const selectedOptions: Record<string, any> = {};\n\n if (variant.option1 != null) {\n selectedOptions[product.options[0].name] = variant.option1;\n }\n\n if (variant.option2 != null) {\n selectedOptions[product.options[1].name] = variant.option2;\n }\n\n if (variant.option3 != null) {\n selectedOptions[product.options[2].name] = variant.option3;\n }\n\n return selectedOptions;\n}\n\n/**\n * Returns the product image object.\n *\n * @param {any} product - The product.\n * @param {number | null} id - The ID of the image. *\n *\n * @returns {any} The product image object.\n */\nexport function productImageObject(product: any, id: number | null): any {\n let image = null;\n\n if (product.image) {\n image = {\n altText: product.image.alt,\n height: product.image.height,\n id: `gid://shopify/ProductImage/${product.image.id}`,\n url: product.image.src,\n width: product.image.width,\n };\n }\n\n if (product.images && product.images.length > 0 && id != null) {\n const matchingImage = product.images.find((i: any) => i.id === id);\n\n if (matchingImage) {\n image = {\n altText: matchingImage.alt,\n height: matchingImage.height,\n id: `gid://shopify/ProductImage/${matchingImage.id}`,\n url: matchingImage.src,\n width: matchingImage.width,\n };\n }\n }\n\n return image;\n}\n\n/**\n * Returns a query string as an object.\n *\n * @param {string} str - The query string to convert to an object.\n *\n * @returns {any} The object.\n */\nexport function queryStringToObject(str: string): any {\n const params = new URLSearchParams(str);\n\n return Object.fromEntries(params.entries());\n}\n\n/**\n * Returns a UTM object from a string.\n *\n * @param {string} str - The string to convert to a UTM object.\n *\n * @returns {any} The UTM object.\n */\nexport function utmObjectFromString(str: string): any {\n const utmKeys = ['utm_campaign', 'utm_medium', 'utm_source', 'utm_term', 'utm_content'];\n\n const matches: Record<string, any> = {};\n\n const url = new URL(str);\n const queryObject = queryStringToObject(url.search);\n\n for (const [key, value] of Object.entries(queryObject)) {\n if (utmKeys.includes(key)) {\n matches[key] = value;\n }\n }\n\n return Object.keys(matches).length > 0 ? matches : null;\n}\n\n/**\n * Returns the amount in cents.\n *\n * @param {number} amount - The amount to convert to cents.\n *\n * @returns {number} The amount in cents.\n */\nexport function amountToCents(amount: number | string): number {\n let normalizedAmount: number = 0;\n\n if (typeof amount === 'string') {\n if (amount.indexOf('.') !== -1) {\n normalizedAmount = Math.round(parseFloat(amount) * 100);\n } else {\n normalizedAmount = parseInt(amount, 10);\n }\n } else if (typeof amount === 'number') {\n normalizedAmount = Math.round(amount * 100);\n }\n\n if (isNaN(normalizedAmount)) {\n normalizedAmount = 0;\n }\n\n return normalizedAmount;\n}\n\n/**\n * Serializes an object.\n *\n * @param {Record<string, unknown>} obj - The object to serialize.\n *\n * @returns {string} The serialized object.\n */\nexport function serialize(obj: Record<string, unknown>): string {\n const serialized: string[] = [];\n\n const add = (key: string, value: any) => {\n value = typeof value === 'function' ? value() : value;\n value = value === null ? '' : value === undefined ? '' : value;\n serialized[serialized.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n };\n\n const buildParameters = (prefix: string, obj: any) => {\n let i, key, len;\n\n if (prefix) {\n if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n buildParameters(prefix + '[' + (typeof obj[i] === 'object' && obj[i] ? i : '') + ']', obj[i]);\n }\n } else if (Object.prototype.toString.call(obj) === '[object Object]') {\n for (key in obj) {\n buildParameters(prefix + '[' + key + ']', obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParameters(key, obj[key]);\n }\n }\n\n return serialized;\n };\n\n return buildParameters('', obj).join('&');\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["sessionId", "obj"]
|
|
7
|
-
}
|
package/dist/utilities.mjs
DELETED
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
function isBase64Encoded(str) {
|
|
2
|
-
const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
3
|
-
return base64Regex.test(str) ? true : false;
|
|
4
|
-
}
|
|
5
|
-
function stringToData(data, decode) {
|
|
6
|
-
let response = data;
|
|
7
|
-
if (decode === true) {
|
|
8
|
-
response = atob(response);
|
|
9
|
-
}
|
|
10
|
-
try {
|
|
11
|
-
response = JSON.parse(response);
|
|
12
|
-
} catch (e) {
|
|
13
|
-
response = data;
|
|
14
|
-
}
|
|
15
|
-
return response;
|
|
16
|
-
}
|
|
17
|
-
function dataToString(data, encode) {
|
|
18
|
-
let response = data;
|
|
19
|
-
if (typeof response != "string") {
|
|
20
|
-
response = JSON.stringify(response);
|
|
21
|
-
}
|
|
22
|
-
if (encode === true) {
|
|
23
|
-
response = btoa(response);
|
|
24
|
-
}
|
|
25
|
-
return response;
|
|
26
|
-
}
|
|
27
|
-
function stripHtml(str) {
|
|
28
|
-
return str?.replace(/<(.|\n)*?>/g, "") ?? "";
|
|
29
|
-
}
|
|
30
|
-
function getIdFromGraphUrl(graphId, objectType) {
|
|
31
|
-
let id = null;
|
|
32
|
-
const regex = new RegExp(`gid://shopify/${objectType}/(.*)`);
|
|
33
|
-
const matches = graphId.match(regex);
|
|
34
|
-
if (matches != null) {
|
|
35
|
-
const matchedId = matches[1];
|
|
36
|
-
if (!isNaN(Number(matchedId))) {
|
|
37
|
-
id = Number(matchedId);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return id;
|
|
41
|
-
}
|
|
42
|
-
function variantAvailable(variant) {
|
|
43
|
-
return !(variant.inventory_management && variant.inventory_policy === "deny" && variant.inventory_quantity <= 0);
|
|
44
|
-
}
|
|
45
|
-
function firstAvailableVariant(product) {
|
|
46
|
-
let selectedVariant = product.variants[0];
|
|
47
|
-
for (let i = 0; i < product.variants.length; i++) {
|
|
48
|
-
if (variantAvailable(product.variants[i])) {
|
|
49
|
-
selectedVariant = product.variants[i];
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return selectedVariant;
|
|
54
|
-
}
|
|
55
|
-
function uuid() {
|
|
56
|
-
let d = (/* @__PURE__ */ new Date()).getTime();
|
|
57
|
-
let d2 = performance && performance.now && performance.now() * 1e3 || 0;
|
|
58
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
59
|
-
let r = Math.random() * 16;
|
|
60
|
-
if (d > 0) {
|
|
61
|
-
r = (d + r) % 16 | 0;
|
|
62
|
-
d = Math.floor(d / 16);
|
|
63
|
-
} else {
|
|
64
|
-
r = (d2 + r) % 16 | 0;
|
|
65
|
-
d2 = Math.floor(d2 / 16);
|
|
66
|
-
}
|
|
67
|
-
return (c === "x" ? r : r & 3 | 8).toString(16);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
function sessionId() {
|
|
71
|
-
const config = {
|
|
72
|
-
chars: "0123456789",
|
|
73
|
-
length: 12
|
|
74
|
-
};
|
|
75
|
-
let sessionId2 = "";
|
|
76
|
-
const sessionStart = (/* @__PURE__ */ new Date()).getTime();
|
|
77
|
-
for (let i = config.length; i > 0; i--) {
|
|
78
|
-
sessionId2 += config.chars[Math.floor(Math.random() * config.chars.length)];
|
|
79
|
-
}
|
|
80
|
-
return `REBUY.${sessionStart}.${sessionId2}`;
|
|
81
|
-
}
|
|
82
|
-
function convertProductToStorefrontFormat(product) {
|
|
83
|
-
const defaultVariant = firstAvailableVariant(product);
|
|
84
|
-
const minVariantPrice = variantMinMaxPriceObject(product, "price", "min");
|
|
85
|
-
const maxVariantPrice = variantMinMaxPriceObject(product, "price", "max");
|
|
86
|
-
const minVariantCompareAtPrice = variantMinMaxPriceObject(product, "compare_at_price", "min");
|
|
87
|
-
const maxVariantCompareAtPrice = variantMinMaxPriceObject(product, "compare_at_price", "max");
|
|
88
|
-
const selectedOptions = selectedVariantOptions(product, defaultVariant);
|
|
89
|
-
const variants = product.variants.map((variant) => convertVariantToStorefrontFormat(product, variant));
|
|
90
|
-
return {
|
|
91
|
-
collections: null,
|
|
92
|
-
compareAtPriceRange: {
|
|
93
|
-
maxVariantCompareAtPrice,
|
|
94
|
-
minVariantCompareAtPrice
|
|
95
|
-
},
|
|
96
|
-
description: stripHtml(product.body_html),
|
|
97
|
-
descriptionHtml: product.body_html,
|
|
98
|
-
featuredImage: productImageObject(product, null),
|
|
99
|
-
handle: product.handle,
|
|
100
|
-
id: `gid://shopify/Product/${product.id}`,
|
|
101
|
-
images: null,
|
|
102
|
-
media: [],
|
|
103
|
-
metafields: [],
|
|
104
|
-
options: [
|
|
105
|
-
...product.options.map((option) => {
|
|
106
|
-
return { name: option.name, values: option.values };
|
|
107
|
-
})
|
|
108
|
-
],
|
|
109
|
-
priceRange: {
|
|
110
|
-
maxVariantPrice,
|
|
111
|
-
minVariantPrice
|
|
112
|
-
},
|
|
113
|
-
selectedOptions,
|
|
114
|
-
selectedSellingPlan: null,
|
|
115
|
-
selectedSellingPlanAllocation: null,
|
|
116
|
-
sellingPlanGroups: [],
|
|
117
|
-
seo: { description: null, title: null },
|
|
118
|
-
title: product.title,
|
|
119
|
-
variants: convertToNodes(variants),
|
|
120
|
-
vendor: product.vendor
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
function convertToNodes(arr) {
|
|
124
|
-
return {
|
|
125
|
-
edges: [
|
|
126
|
-
...arr.map((node) => {
|
|
127
|
-
return { node };
|
|
128
|
-
})
|
|
129
|
-
]
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
function convertVariantToStorefrontFormat(product, variant) {
|
|
133
|
-
const selectedOptions = selectedVariantOptions(product, variant);
|
|
134
|
-
const image = productImageObject(product, variant.image_id);
|
|
135
|
-
return {
|
|
136
|
-
availableForSale: variantAvailable(variant),
|
|
137
|
-
compareAtPriceV2: variantPriceObject(variant, "compare_at_price"),
|
|
138
|
-
id: `gid://shopify/ProductVariant/${variant.id}`,
|
|
139
|
-
image,
|
|
140
|
-
priceV2: variantPriceObject(variant, "price"),
|
|
141
|
-
product: {
|
|
142
|
-
handle: product.handle,
|
|
143
|
-
id: product.id,
|
|
144
|
-
title: product.title,
|
|
145
|
-
vendor: product.vendor
|
|
146
|
-
},
|
|
147
|
-
selectedOptions: [selectedOptions],
|
|
148
|
-
sku: variant.sku,
|
|
149
|
-
title: variant.title
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
function variantMinMaxPriceObject(product, key = "price", operator = "min") {
|
|
153
|
-
let priceObject = variantPriceObject(product.variants[0], key);
|
|
154
|
-
for (let i = 0; i < product.variants.length; i++) {
|
|
155
|
-
const variantPrice = variantPriceObject(product.variants[i], key);
|
|
156
|
-
if (variantPrice != null) {
|
|
157
|
-
const variantPriceAmount = Number(variantPrice.amount);
|
|
158
|
-
const currentPriceAmount = priceObject != null ? Number(priceObject.amount) : null;
|
|
159
|
-
if (currentPriceAmount == null || operator === "min" && variantPriceAmount < currentPriceAmount || operator === "max" && variantPriceAmount > currentPriceAmount) {
|
|
160
|
-
priceObject = variantPrice;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return priceObject;
|
|
165
|
-
}
|
|
166
|
-
function variantPriceObject(variant, key = "price") {
|
|
167
|
-
if (variant[key] != null) {
|
|
168
|
-
return {
|
|
169
|
-
amount: variant[key],
|
|
170
|
-
currencyCode: "USD"
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
return null;
|
|
174
|
-
}
|
|
175
|
-
function selectedVariantOptions(product, variant) {
|
|
176
|
-
const selectedOptions = {};
|
|
177
|
-
if (variant.option1 != null) {
|
|
178
|
-
selectedOptions[product.options[0].name] = variant.option1;
|
|
179
|
-
}
|
|
180
|
-
if (variant.option2 != null) {
|
|
181
|
-
selectedOptions[product.options[1].name] = variant.option2;
|
|
182
|
-
}
|
|
183
|
-
if (variant.option3 != null) {
|
|
184
|
-
selectedOptions[product.options[2].name] = variant.option3;
|
|
185
|
-
}
|
|
186
|
-
return selectedOptions;
|
|
187
|
-
}
|
|
188
|
-
function productImageObject(product, id) {
|
|
189
|
-
let image = null;
|
|
190
|
-
if (product.image) {
|
|
191
|
-
image = {
|
|
192
|
-
altText: product.image.alt,
|
|
193
|
-
height: product.image.height,
|
|
194
|
-
id: `gid://shopify/ProductImage/${product.image.id}`,
|
|
195
|
-
url: product.image.src,
|
|
196
|
-
width: product.image.width
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
if (product.images && product.images.length > 0 && id != null) {
|
|
200
|
-
const matchingImage = product.images.find((i) => i.id === id);
|
|
201
|
-
if (matchingImage) {
|
|
202
|
-
image = {
|
|
203
|
-
altText: matchingImage.alt,
|
|
204
|
-
height: matchingImage.height,
|
|
205
|
-
id: `gid://shopify/ProductImage/${matchingImage.id}`,
|
|
206
|
-
url: matchingImage.src,
|
|
207
|
-
width: matchingImage.width
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return image;
|
|
212
|
-
}
|
|
213
|
-
function queryStringToObject(str) {
|
|
214
|
-
const params = new URLSearchParams(str);
|
|
215
|
-
return Object.fromEntries(params.entries());
|
|
216
|
-
}
|
|
217
|
-
function utmObjectFromString(str) {
|
|
218
|
-
const utmKeys = ["utm_campaign", "utm_medium", "utm_source", "utm_term", "utm_content"];
|
|
219
|
-
const matches = {};
|
|
220
|
-
const url = new URL(str);
|
|
221
|
-
const queryObject = queryStringToObject(url.search);
|
|
222
|
-
for (const [key, value] of Object.entries(queryObject)) {
|
|
223
|
-
if (utmKeys.includes(key)) {
|
|
224
|
-
matches[key] = value;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return Object.keys(matches).length > 0 ? matches : null;
|
|
228
|
-
}
|
|
229
|
-
function amountToCents(amount) {
|
|
230
|
-
let normalizedAmount = 0;
|
|
231
|
-
if (typeof amount === "string") {
|
|
232
|
-
if (amount.indexOf(".") !== -1) {
|
|
233
|
-
normalizedAmount = Math.round(parseFloat(amount) * 100);
|
|
234
|
-
} else {
|
|
235
|
-
normalizedAmount = parseInt(amount, 10);
|
|
236
|
-
}
|
|
237
|
-
} else if (typeof amount === "number") {
|
|
238
|
-
normalizedAmount = Math.round(amount * 100);
|
|
239
|
-
}
|
|
240
|
-
if (isNaN(normalizedAmount)) {
|
|
241
|
-
normalizedAmount = 0;
|
|
242
|
-
}
|
|
243
|
-
return normalizedAmount;
|
|
244
|
-
}
|
|
245
|
-
function serialize(obj) {
|
|
246
|
-
const serialized = [];
|
|
247
|
-
const add = (key, value) => {
|
|
248
|
-
value = typeof value === "function" ? value() : value;
|
|
249
|
-
value = value === null ? "" : value === void 0 ? "" : value;
|
|
250
|
-
serialized[serialized.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
251
|
-
};
|
|
252
|
-
const buildParameters = (prefix, obj2) => {
|
|
253
|
-
let i, key, len;
|
|
254
|
-
if (prefix) {
|
|
255
|
-
if (Array.isArray(obj2)) {
|
|
256
|
-
for (i = 0, len = obj2.length; i < len; i++) {
|
|
257
|
-
buildParameters(prefix + "[" + (typeof obj2[i] === "object" && obj2[i] ? i : "") + "]", obj2[i]);
|
|
258
|
-
}
|
|
259
|
-
} else if (Object.prototype.toString.call(obj2) === "[object Object]") {
|
|
260
|
-
for (key in obj2) {
|
|
261
|
-
buildParameters(prefix + "[" + key + "]", obj2[key]);
|
|
262
|
-
}
|
|
263
|
-
} else {
|
|
264
|
-
add(prefix, obj2);
|
|
265
|
-
}
|
|
266
|
-
} else if (Array.isArray(obj2)) {
|
|
267
|
-
for (i = 0, len = obj2.length; i < len; i++) {
|
|
268
|
-
add(obj2[i].name, obj2[i].value);
|
|
269
|
-
}
|
|
270
|
-
} else {
|
|
271
|
-
for (key in obj2) {
|
|
272
|
-
buildParameters(key, obj2[key]);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return serialized;
|
|
276
|
-
};
|
|
277
|
-
return buildParameters("", obj).join("&");
|
|
278
|
-
}
|
|
279
|
-
export {
|
|
280
|
-
amountToCents,
|
|
281
|
-
convertProductToStorefrontFormat,
|
|
282
|
-
convertToNodes,
|
|
283
|
-
convertVariantToStorefrontFormat,
|
|
284
|
-
dataToString,
|
|
285
|
-
firstAvailableVariant,
|
|
286
|
-
getIdFromGraphUrl,
|
|
287
|
-
isBase64Encoded,
|
|
288
|
-
productImageObject,
|
|
289
|
-
queryStringToObject,
|
|
290
|
-
selectedVariantOptions,
|
|
291
|
-
serialize,
|
|
292
|
-
sessionId,
|
|
293
|
-
stringToData,
|
|
294
|
-
stripHtml,
|
|
295
|
-
utmObjectFromString,
|
|
296
|
-
uuid,
|
|
297
|
-
variantAvailable,
|
|
298
|
-
variantMinMaxPriceObject,
|
|
299
|
-
variantPriceObject
|
|
300
|
-
};
|
|
301
|
-
//# sourceMappingURL=utilities.mjs.map
|
package/dist/utilities.mjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/utilities.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns true if the string is a valid base64 encoded string.\n *\n * @param {string} str - The string to check.\n *\n * @returns {boolean} True if the string is a valid base64 encoded string.\n */\nexport function isBase64Encoded(str: string): boolean {\n const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n\n return base64Regex.test(str) ? true : false;\n}\n\n/**\n * Returns a string as a JSON object.\n *\n * @param {string} data - The string to convert to a JSON object.\n * @param {boolean} decode - Whether to decode the string. *\n *\n * @returns {any} The JSON object.\n */\nexport function stringToData(data: string, decode: boolean): any {\n let response = data;\n\n // Base64 decode\n if (decode === true) {\n response = atob(response);\n }\n\n try {\n response = JSON.parse(response);\n } catch (e) {\n // failure to parse cookie\n response = data;\n }\n\n return response;\n}\n\n/**\n * Returns a JSON object as a string.\n *\n * @param {any} data - The JSON object to convert to a string.\n * @param {boolean} encode - Whether to encode the string. *\n *\n * @returns {string} The string.\n */\nexport function dataToString(data: any, encode: boolean): string {\n let response = data;\n\n if (typeof response != 'string') {\n response = JSON.stringify(response);\n }\n\n // Base64 encode\n if (encode === true) {\n response = btoa(response);\n }\n\n return response;\n}\n\n/**\n * Returns a string with HTML tags removed.\n *\n * @param {string} str - The string to strip HTML tags from.\n *\n * @returns {string} The string with HTML tags removed.\n */\nexport function stripHtml(str: string): string {\n return str?.replace(/<(.|\\n)*?>/g, '') ?? '';\n}\n\n/**\n * Returns the ID from a GraphQL URL.\n *\n * @param {string} graphId - The GraphQL URL.\n * @param {string} objectType - The object type.\n *\n * @returns {number | null} The ID.\n */\nexport function getIdFromGraphUrl(graphId: string, objectType: string): number | null {\n let id: number | null = null;\n\n const regex = new RegExp(`gid://shopify/${objectType}/(.*)`);\n const matches = graphId.match(regex);\n\n if (matches != null) {\n const matchedId = matches[1];\n\n if (!isNaN(Number(matchedId))) {\n id = Number(matchedId);\n }\n }\n\n return id;\n}\n\n/**\n * Returns true if the variant is available.\n *\n * @param {any} variant - The variant.\n *\n * @returns {boolean} True if the variant is available.\n */\nexport function variantAvailable(variant: any): boolean {\n return !(variant.inventory_management && variant.inventory_policy === 'deny' && variant.inventory_quantity <= 0);\n}\n\n/**\n * Returns the first available variant.\n *\n * @param {any} product - The product.\n *\n * @returns {any} The first available variant.\n */\nexport function firstAvailableVariant(product: any): any {\n // Select first variant\n let selectedVariant = product.variants[0];\n\n // Upgrade to first available\n for (let i = 0; i < product.variants.length; i++) {\n if (variantAvailable(product.variants[i])) {\n selectedVariant = product.variants[i];\n break;\n }\n }\n\n return selectedVariant;\n}\n\n/**\n * Returns a UUID.\n *\n * @returns {string} The UUID.\n */\nexport function uuid(): string {\n let d = new Date().getTime();\n let d2 = (performance && performance.now && performance.now() * 1000) || 0;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16;\n\n if (d > 0) {\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\n\n/**\n * Returns a session ID.\n *\n * @returns {string} The session ID.\n */\nexport function sessionId(): string {\n const config = {\n chars: '0123456789',\n length: 12,\n };\n\n let sessionId = '';\n const sessionStart = new Date().getTime();\n\n for (let i = config.length; i > 0; i--) {\n sessionId += config.chars[Math.floor(Math.random() * config.chars.length)];\n }\n\n return `REBUY.${sessionStart}.${sessionId}`;\n}\n\n/**\n * Converts a product to the storefront format.\n *\n * @param {any} product - The product.\n *\n * @returns {any} The product in the storefront format.\n */\nexport function convertProductToStorefrontFormat(product: any): any {\n const defaultVariant = firstAvailableVariant(product);\n const minVariantPrice = variantMinMaxPriceObject(product, 'price', 'min');\n const maxVariantPrice = variantMinMaxPriceObject(product, 'price', 'max');\n const minVariantCompareAtPrice = variantMinMaxPriceObject(product, 'compare_at_price', 'min');\n const maxVariantCompareAtPrice = variantMinMaxPriceObject(product, 'compare_at_price', 'max');\n const selectedOptions = selectedVariantOptions(product, defaultVariant);\n\n const variants = product.variants.map((variant: any) => convertVariantToStorefrontFormat(product, variant));\n\n return {\n collections: null,\n compareAtPriceRange: {\n maxVariantCompareAtPrice,\n minVariantCompareAtPrice,\n },\n description: stripHtml(product.body_html),\n descriptionHtml: product.body_html,\n featuredImage: productImageObject(product, null),\n handle: product.handle,\n id: `gid://shopify/Product/${product.id}`,\n images: null,\n media: [],\n metafields: [],\n options: [\n ...product.options.map((option: any) => {\n return { name: option.name, values: option.values };\n }),\n ],\n priceRange: {\n maxVariantPrice,\n minVariantPrice,\n },\n selectedOptions,\n selectedSellingPlan: null,\n selectedSellingPlanAllocation: null,\n sellingPlanGroups: [],\n seo: { description: null, title: null },\n title: product.title,\n variants: convertToNodes(variants),\n vendor: product.vendor,\n };\n}\n\n/**\n * Converts an array to a nodes object.\n *\n * @param {any} arr - The array to convert to a nodes object.\n *\n * @returns {any} The nodes object.\n */\nexport function convertToNodes(arr: any): any {\n return {\n edges: [\n ...arr.map((node: any) => {\n return { node };\n }),\n ],\n };\n}\n\n/**\n * Converts a variant to the storefront format.\n *\n * @param {any} product - The product.\n * @param {any} variant - The variant.\n *\n * @returns {any} The variant in the storefront format.\n */\nexport function convertVariantToStorefrontFormat(product: any, variant: any): any {\n const selectedOptions = selectedVariantOptions(product, variant);\n const image = productImageObject(product, variant.image_id);\n\n return {\n availableForSale: variantAvailable(variant),\n compareAtPriceV2: variantPriceObject(variant, 'compare_at_price'),\n id: `gid://shopify/ProductVariant/${variant.id}`,\n image: image,\n priceV2: variantPriceObject(variant, 'price'),\n product: {\n handle: product.handle,\n id: product.id,\n title: product.title,\n vendor: product.vendor,\n },\n selectedOptions: [selectedOptions],\n sku: variant.sku,\n title: variant.title,\n };\n}\n\n/**\n * Returns the minimum or maximum price object for a variant.\n *\n * @param {any} product - The product.\n * @param {string} key - The key to get the price object for.\n * @param {string} operator - The operator to use. *\n *\n * @returns {any} The price object.\n */\nexport function variantMinMaxPriceObject(product: any, key: string = 'price', operator: string = 'min'): any {\n let priceObject = variantPriceObject(product.variants[0], key);\n\n for (let i = 0; i < product.variants.length; i++) {\n const variantPrice = variantPriceObject(product.variants[i], key);\n\n if (variantPrice != null) {\n const variantPriceAmount = Number(variantPrice.amount);\n const currentPriceAmount = priceObject != null ? Number(priceObject.amount) : null;\n\n if (\n currentPriceAmount == null ||\n (operator === 'min' && variantPriceAmount < currentPriceAmount) ||\n (operator === 'max' && variantPriceAmount > currentPriceAmount)\n ) {\n priceObject = variantPrice;\n }\n }\n }\n\n return priceObject;\n}\n\n/**\n * Returns the price object for a variant.\n *\n * @param {any} variant - The variant.\n * @param {string} key - The key to get the price object for.\n *\n * @returns {any} The price object.\n */\nexport function variantPriceObject(variant: any, key: string = 'price'): any {\n if (variant[key] != null) {\n return {\n amount: variant[key],\n currencyCode: 'USD',\n };\n }\n\n return null;\n}\n\n/**\n * Returns the selected variant options.\n *\n * @param {any} product - The product.\n * @param {any} variant - The variant.\n *\n * @returns {any} The selected variant options.\n */\nexport function selectedVariantOptions(product: any, variant: any): any {\n const selectedOptions: Record<string, any> = {};\n\n if (variant.option1 != null) {\n selectedOptions[product.options[0].name] = variant.option1;\n }\n\n if (variant.option2 != null) {\n selectedOptions[product.options[1].name] = variant.option2;\n }\n\n if (variant.option3 != null) {\n selectedOptions[product.options[2].name] = variant.option3;\n }\n\n return selectedOptions;\n}\n\n/**\n * Returns the product image object.\n *\n * @param {any} product - The product.\n * @param {number | null} id - The ID of the image. *\n *\n * @returns {any} The product image object.\n */\nexport function productImageObject(product: any, id: number | null): any {\n let image = null;\n\n if (product.image) {\n image = {\n altText: product.image.alt,\n height: product.image.height,\n id: `gid://shopify/ProductImage/${product.image.id}`,\n url: product.image.src,\n width: product.image.width,\n };\n }\n\n if (product.images && product.images.length > 0 && id != null) {\n const matchingImage = product.images.find((i: any) => i.id === id);\n\n if (matchingImage) {\n image = {\n altText: matchingImage.alt,\n height: matchingImage.height,\n id: `gid://shopify/ProductImage/${matchingImage.id}`,\n url: matchingImage.src,\n width: matchingImage.width,\n };\n }\n }\n\n return image;\n}\n\n/**\n * Returns a query string as an object.\n *\n * @param {string} str - The query string to convert to an object.\n *\n * @returns {any} The object.\n */\nexport function queryStringToObject(str: string): any {\n const params = new URLSearchParams(str);\n\n return Object.fromEntries(params.entries());\n}\n\n/**\n * Returns a UTM object from a string.\n *\n * @param {string} str - The string to convert to a UTM object.\n *\n * @returns {any} The UTM object.\n */\nexport function utmObjectFromString(str: string): any {\n const utmKeys = ['utm_campaign', 'utm_medium', 'utm_source', 'utm_term', 'utm_content'];\n\n const matches: Record<string, any> = {};\n\n const url = new URL(str);\n const queryObject = queryStringToObject(url.search);\n\n for (const [key, value] of Object.entries(queryObject)) {\n if (utmKeys.includes(key)) {\n matches[key] = value;\n }\n }\n\n return Object.keys(matches).length > 0 ? matches : null;\n}\n\n/**\n * Returns the amount in cents.\n *\n * @param {number} amount - The amount to convert to cents.\n *\n * @returns {number} The amount in cents.\n */\nexport function amountToCents(amount: number | string): number {\n let normalizedAmount: number = 0;\n\n if (typeof amount === 'string') {\n if (amount.indexOf('.') !== -1) {\n normalizedAmount = Math.round(parseFloat(amount) * 100);\n } else {\n normalizedAmount = parseInt(amount, 10);\n }\n } else if (typeof amount === 'number') {\n normalizedAmount = Math.round(amount * 100);\n }\n\n if (isNaN(normalizedAmount)) {\n normalizedAmount = 0;\n }\n\n return normalizedAmount;\n}\n\n/**\n * Serializes an object.\n *\n * @param {Record<string, unknown>} obj - The object to serialize.\n *\n * @returns {string} The serialized object.\n */\nexport function serialize(obj: Record<string, unknown>): string {\n const serialized: string[] = [];\n\n const add = (key: string, value: any) => {\n value = typeof value === 'function' ? value() : value;\n value = value === null ? '' : value === undefined ? '' : value;\n serialized[serialized.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n };\n\n const buildParameters = (prefix: string, obj: any) => {\n let i, key, len;\n\n if (prefix) {\n if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n buildParameters(prefix + '[' + (typeof obj[i] === 'object' && obj[i] ? i : '') + ']', obj[i]);\n }\n } else if (Object.prototype.toString.call(obj) === '[object Object]') {\n for (key in obj) {\n buildParameters(prefix + '[' + key + ']', obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParameters(key, obj[key]);\n }\n }\n\n return serialized;\n };\n\n return buildParameters('', obj).join('&');\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["sessionId", "obj"]
|
|
7
|
-
}
|