@rebuy/rebuy 1.5.1 → 1.6.0-alpha.1
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/api.d.ts +30 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/client.d.ts +13 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/cookie.d.ts +57 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/geolocation.d.ts +6 -0
- package/dist/geolocation.d.ts.map +1 -0
- package/dist/identity.d.ts +10 -0
- package/dist/identity.d.ts.map +1 -0
- package/{index.js → dist/index.d.ts} +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +790 -0
- package/dist/index.js.map +7 -0
- package/dist/index.mjs +767 -0
- package/dist/index.mjs.map +7 -0
- package/dist/session.d.ts +8 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/utilities.d.ts +166 -0
- package/dist/utilities.d.ts.map +1 -0
- package/package.json +50 -16
- package/.git/logs/refs/heads/REB-2426/add-index.js +0 -2
- package/.git/refs/heads/REB-2426/add-index.js +0 -1
- package/api.js +0 -130
- package/client.js +0 -148
- package/cookie.js +0 -153
- package/geolocation.js +0 -63
- package/identity.js +0 -72
- package/session.js +0 -52
- package/utilities.js +0 -348
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utilities.ts", "../src/api.ts", "../src/cookie.ts", "../src/geolocation.ts", "../src/session.ts", "../src/identity.ts", "../src/client.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", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { serialize } from '~/utilities';\n\n// Type definitions\n\ntype Config = {\n /**\n * @deprecated\n */\n cdnDomain: string;\n domain: string;\n eventDomain: string;\n geoDomain: string;\n key: string | null;\n shieldDomain: string;\n shop: string | null;\n staticDomain: string;\n};\n\ntype Staging = Omit<Config, 'key' | 'shop'>;\n\ntype FetchOptions = {\n fetch?: RequestInit & { strictErrors?: boolean };\n};\n\ntype RequestData = Record<string, any> | null;\n\nconst config: Config = {\n /**\n * @deprecated\n */\n cdnDomain: 'https://cdn.rebuyengine.com',\n domain: 'https://rebuyengine.com',\n eventDomain: 'https://rebuyengine.com',\n geoDomain: 'https://geo.rebuyengine.com',\n key: null,\n shieldDomain: 'https://cached.rebuyengine.com',\n shop: null,\n staticDomain: 'https://cdn.rebuyengine.com',\n};\n\nconst staging: Staging = {\n /**\n * @deprecated\n */\n cdnDomain: 'https://cdn.enigneyuber.com',\n domain: 'https://enigneyuber.com',\n eventDomain: 'https://enigneyuber.com',\n geoDomain: 'https://geo.enigneyuber.com',\n shieldDomain: 'https://cached.enigneyuber.com',\n staticDomain: 'https://cdn.enigneyuber.com',\n};\n\nconst stagingDomains: string[] = [\n 'enigneyuber.com',\n 'rebuy-engine-regression.myshopify.com',\n 'rebuy-stage-currency-test.myshopify.com',\n 'rebuy-staging-automation.myshopify.com',\n 'rebuy-staging-regression.myshopify.com',\n 'rebuy-uat.myshopify.com',\n 'rebuy-regression-qa.myshopify.com',\n 'senator-staging.myshopify.com',\n 'mike-reids-test-store.myshopify.com',\n 'dash-ext-hoke.myshopify.com',\n];\n\nconst makeCall = async (\n method: string,\n path: string,\n data: RequestData,\n origin: string,\n options: FetchOptions = {}\n): Promise<any> => {\n const url = `${origin}${path}`;\n const requestUrl = new URL(url);\n const fetchOptions = options?.fetch ?? {};\n\n const requestData: RequestData = {};\n\n if (typeof data == 'object' && data != null) {\n Object.assign(requestData, data);\n }\n\n if (typeof config.key == 'string' && config.key.length > 0) {\n Object.assign(requestData, { key: config.key });\n }\n\n const requestObject: RequestInit & { strictErrors?: boolean } = {\n method,\n ...fetchOptions,\n };\n\n if (method === 'GET') {\n requestUrl.search = serialize(requestData);\n } else if (method === 'POST') {\n requestObject.headers = {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n };\n requestObject.body = new URLSearchParams(requestData) as any;\n }\n\n const request = await fetch(requestUrl.toString(), requestObject);\n const response = await request.json();\n\n if (!request.ok && fetchOptions.strictErrors === true) {\n const message = `An error has occurred: ${request.status}`;\n throw new Error(message, { cause: response });\n }\n\n return response;\n};\n\nexport class Api {\n constructor(options: string | Partial<Config> | null) {\n if (typeof options == 'string') {\n config.key = options;\n } else if (typeof options == 'object' && options != null) {\n Object.assign(config, options);\n }\n\n for (const domain of stagingDomains) {\n if (typeof location === 'object' && (location as any)?.host?.includes(domain)) {\n Object.assign(config, staging);\n break;\n }\n\n if (typeof config.shop === 'string' && config.shop.includes(domain)) {\n Object.assign(config, staging);\n break;\n }\n }\n }\n\n async callEvent(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.eventDomain, options);\n }\n\n async callShield(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.shieldDomain, options);\n }\n\n async callStatic(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.staticDomain, options);\n }\n\n async callGeo(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.geoDomain, options);\n }\n\n async callCdn(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.cdnDomain, options);\n }\n\n async callApi(method: string, path: string, data: RequestData, options?: FetchOptions): Promise<any> {\n return await makeCall(method, path, data, config.domain, options);\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default Api;\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { dataToString, isBase64Encoded, stringToData } from '~/utilities';\n\n/**\n * Get a cookie by name\n *\n * @param {string} name - The name of the cookie to get\n *\n * @returns {any} The value of the cookie or null if the cookie is not found\n */\nexport function get(name: string): any | null {\n if (typeof document == 'undefined' || !document.cookie) {\n return null;\n }\n\n // Get cookie\n const cookie = document.cookie.match('(^|;) ?' + decodeURIComponent(name) + '=([^;]*)(;|$)');\n\n let value: any = null;\n\n if (cookie != null) {\n // Get data\n const data = decodeURIComponent(cookie[2]);\n\n // Auto decode\n const decode = isBase64Encoded(data) ? true : false;\n\n // Convert to data object\n value = stringToData(data, decode);\n }\n\n return value;\n}\n\n/**\n * Get all cookies\n *\n * @returns {Record<string, any>} All cookies\n */\nexport function getAll(): Record<string, any> {\n const cookies: Record<string, any> = {};\n\n if (document && document.cookie && document.cookie !== '') {\n const split = document.cookie.split(';');\n\n for (let i = 0; i < split.length; i++) {\n const pairs = split[i].split('=');\n\n pairs[0] = pairs[0].replace(/^ /, '');\n\n const key = decodeURIComponent(pairs[0]);\n const value = decodeURIComponent(pairs[1]);\n\n // Auto decode\n const decode = isBase64Encoded(value) ? true : false;\n\n cookies[key] = stringToData(value, decode);\n }\n }\n\n return cookies;\n}\n\n/**\n * Set a cookie\n *\n * @param {string} name - The name of the cookie\n * @param {any} value - The value of the cookie\n * @param {any} config - The configuration of the cookie\n *\n * @returns {void}\n */\nexport function set(name: string, value: any, config: any): void {\n if (typeof document == 'undefined' || !document.cookie) {\n return;\n }\n\n const attributes = ['path', 'domain', 'maxAge', 'expires', 'secure', 'sameSite'];\n const convenienceTimes = ['seconds', 'minutes', 'hours', 'days', 'weeks', 'months', 'years'];\n\n const cookieAttributes: Record<string, any> = {\n path: '/',\n };\n\n if (typeof config != 'undefined' && Number.isInteger(config)) {\n cookieAttributes['max-age'] = config;\n } else if (typeof config === 'object' && config !== null) {\n for (const key in config) {\n if (attributes.includes(key)) {\n if (key === 'maxAge') {\n cookieAttributes['max-age'] = config[key];\n } else if (key === 'sameSite') {\n cookieAttributes['samesite'] = config[key];\n } else if (key === 'expires') {\n cookieAttributes[key] = new Date(config[key]).toUTCString();\n } else {\n cookieAttributes[key] = config[key];\n }\n } else if (convenienceTimes.includes(key)) {\n let duration = config[key];\n\n if (key === 'seconds') {\n duration = duration * 1;\n } else if (key === 'minutes') {\n duration = duration * 60;\n } else if (key === 'hours') {\n duration = duration * 60 * 60;\n } else if (key === 'days') {\n duration = duration * 60 * 60 * 24;\n } else if (key === 'weeks') {\n duration = duration * 60 * 60 * 24 * 7;\n } else if (key === 'months') {\n duration = duration * 60 * 60 * 24 * 30;\n } else if (key === 'years') {\n duration = duration * 60 * 60 * 24 * 365;\n }\n\n cookieAttributes['max-age'] = duration;\n }\n }\n }\n\n // Convert data to string\n value = dataToString(value, config?.encode);\n\n // Define cookie\n let cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n\n // Add optional cookie attributes\n for (const key in cookieAttributes) {\n cookie += ';' + key + '=' + cookieAttributes[key];\n }\n\n // Write cookie\n document.cookie = cookie;\n}\n\n/**\n * Find all cookies that match a name\n *\n * @param {string} name - The name of the cookie to find\n *\n * @returns {Array<{ name: string; value: any }>} All cookies that match the name\n */\nexport function find(name: string): { name: string; value: any }[] {\n const matches: { name: string; value: any }[] = [];\n const cookies = getAll();\n\n for (const key in cookies) {\n if (key.includes(name)) {\n matches.push({\n name: key,\n value: cookies[key],\n });\n }\n }\n\n return matches;\n}\n\n/**\n * Destroy a cookie\n *\n * @param {string} name - The name of the cookie to destroy\n */\nexport function destroy(name: string): void {\n set(name, '', { encode: false, seconds: 0 });\n}\n\n/**\n * Check if cookies are enabled\n *\n * @returns {boolean} True if cookies are enabled, false otherwise\n */\nexport function enabled(): boolean {\n const test = {\n key: '__cookie_test',\n value: 1,\n };\n\n set(test.key, test.value, { encode: false });\n\n const enabled = get(test.key) === test.value ? true : false;\n\n if (enabled) {\n destroy(test.key);\n }\n\n return enabled;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default { destroy, enabled, find, get, getAll, set };\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport Api from '~/api';\nimport Cookie from '~/cookie';\n\ntype Config = {\n geolocation: any;\n geolocationCookie: string;\n geolocationDuration: {\n minutes: number;\n };\n key: string | null;\n};\n\nconst config: Config = {\n geolocation: null,\n geolocationCookie: '_rebuyGeolocation',\n geolocationDuration: {\n minutes: 30,\n },\n key: null,\n};\n\nconst getGeolocation = async (): Promise<any> => {\n const api = new Api(config.key);\n const response = await api.callGeo('GET', '/', null);\n\n if (response.data) {\n // Update config with geolocation\n config.geolocation = response.data;\n\n // Write cookie with geolocation\n const cookieOptions: Record<string, any> = {\n secure: true,\n };\n\n // Merge cookie options with geolocation config\n Object.assign(cookieOptions, config.geolocationDuration);\n\n // Write cookie with geolocation\n Cookie.set(config.geolocationCookie, config.geolocation, { ...cookieOptions, encode: false });\n }\n\n return config.geolocation;\n};\n\nexport class Geolocation {\n constructor(key: string | null) {\n if (typeof document == 'undefined' || !document.cookie) {\n return;\n }\n\n if (typeof key == 'string') {\n config.key = key;\n }\n\n config.geolocation = Cookie.get(config.geolocationCookie);\n\n // Create a new geolocation (if needed)\n if (config.geolocation === null) {\n getGeolocation();\n }\n }\n\n async geolocation(): Promise<any> {\n if (config.geolocation == null) {\n await getGeolocation();\n }\n\n return config.geolocation;\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default Geolocation;\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport Cookie from '~/cookie';\nimport { sessionId } from '~/utilities';\n\ntype Config = {\n now: number | null;\n sessionDuration: {\n minutes: number;\n };\n sessionId: string | null;\n sessionIdCookie: string;\n};\n\nconst config: Config = {\n now: null,\n sessionDuration: {\n minutes: 30,\n },\n sessionId: null,\n sessionIdCookie: '_rebuySessionId',\n};\n\nexport class Session {\n constructor() {\n if (typeof document == 'undefined' || !document.cookie) {\n return;\n }\n\n config.now = new Date().getTime();\n config.sessionId = Cookie.get(config.sessionIdCookie);\n\n // Create a new session (if needed)\n if (config.sessionId === null) {\n config.sessionId = sessionId();\n }\n\n // Write cookie with session ID\n const cookieOptions: Record<string, any> = {\n secure: true,\n };\n\n // Merge cookie options with session config\n Object.assign(cookieOptions, config.sessionDuration);\n\n // Write cookie with session ID\n Cookie.set(config.sessionIdCookie, config.sessionId, cookieOptions);\n }\n\n sessionId(): string | null {\n return config.sessionId;\n }\n\n sessionStart(): number {\n return config.sessionId ? Number(config.sessionId.split('.')[1]) : 0;\n }\n\n sessionDuration(): number {\n return config.now !== null ? parseInt(((config.now - this.sessionStart()) / 1000 / 60).toString()) : 0;\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default Session;\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport Cookie from '~/cookie';\nimport Geolocation from '~/geolocation';\nimport Session from '~/session';\nimport { uuid } from '~/utilities';\n\ntype Config = {\n geolocation?: any;\n key: string | null;\n session: any;\n visitorDuration: {\n years: number;\n };\n visitorId: string | null;\n visitorIdCookie: string;\n};\n\nconst config: Config = {\n key: null,\n session: null,\n visitorDuration: {\n years: 1,\n },\n visitorId: null,\n visitorIdCookie: '_rebuyVisitorId',\n};\n\nexport class Identity {\n constructor(key: string | null) {\n if (typeof document == 'undefined' || !document.cookie) {\n return;\n }\n\n if (typeof key == 'string') {\n config.key = key;\n }\n\n config.visitorId = Cookie.get(config.visitorIdCookie);\n\n // Create a new identifier (if needed)\n if (config.visitorId === null) {\n config.visitorId = uuid();\n }\n\n // Write cookie with visitor ID\n const cookieOptions: Record<string, any> = {\n secure: true,\n };\n\n // Merge cookie options with visitor config\n Object.assign(cookieOptions, config.visitorDuration);\n\n // Write cookie with session ID\n Cookie.set(config.visitorIdCookie, config.visitorId, cookieOptions);\n\n // Create visitor session\n config.session = new Session();\n\n // Create visitor geolocation\n config.geolocation = new Geolocation(config.key);\n }\n\n visitorId(): string | null {\n return config.visitorId;\n }\n\n sessionId(): string {\n return config.session.sessionId();\n }\n\n sessionStart(): string {\n return config.session.sessionStart();\n }\n\n sessionDuration(): string {\n return config.session.sessionDuration();\n }\n\n async geolocation(): Promise<any> {\n return await config.geolocation.geolocation();\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default Identity;\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport Api from '~/api';\nimport Identity from '~/identity';\nimport { convertProductToStorefrontFormat } from '~/utilities';\n\ntype Config = {\n api: any;\n contextParameters: Record<string, any> | null;\n defaultParameters: Record<string, any> | null;\n identity: any;\n key: string | null;\n shop: string | null;\n};\n\nconst config: Config = {\n api: null,\n contextParameters: null,\n defaultParameters: null,\n identity: null,\n key: null,\n shop: null,\n};\n\nconst trackEvent = async (eventData: Record<string, any>): Promise<any> => {\n if (config.identity && config.identity.visitorId()) {\n eventData.uuid = config.identity.visitorId();\n }\n\n return await config.api.callEvent('POST', '/api/v1/analytics/event', eventData);\n};\n\nconst makeShieldCall = async (\n endpoint: string,\n params: Record<string, any>,\n format: string | null,\n options: Record<string, any> = {}\n): Promise<any> => {\n return await makeCall(endpoint, params, format, { ...options, shield: true });\n};\n\nconst makeStaticCall = async (\n endpoint: string,\n params: Record<string, any>,\n format: string | null,\n options: Record<string, any> = {}\n): Promise<any> => {\n return await makeCall(endpoint, params, format, { ...options, static: true });\n};\n\nconst makeCDNCall = async (\n endpoint: string,\n params: Record<string, any>,\n format: string | null,\n options: Record<string, any> = {}\n): Promise<any> => {\n return await makeCall(endpoint, params, format, { ...options, cdn: true });\n};\n\nconst makeCall = async (\n endpoint: string,\n params: Record<string, any>,\n format: string | null,\n options: Record<string, any> = {}\n): Promise<any> => {\n const query: Record<string, any> = {};\n\n if (config.defaultParameters != null) {\n Object.assign(query, config.defaultParameters);\n }\n\n if (config.contextParameters != null) {\n Object.assign(query, config.contextParameters);\n }\n\n if (typeof params == 'object' && params != null) {\n Object.assign(query, params);\n }\n\n if (typeof options != 'object' || options == null) {\n console.warn('Unsupported fetch options provided.', options);\n options = {};\n }\n\n if (config.identity && config.identity.visitorId()) {\n query.uuid = config.identity.visitorId();\n }\n\n // Origin or dedicated edge?\n const source = options.cdn ? 'callCdn' : options.shield ? 'callShield' : options.static ? 'callStatic' : 'callApi';\n const response = await config.api[source]('GET', endpoint, query, options);\n\n if (response.data && format === 'storefront') {\n for (let i = 0; i < response.data.length; i++) {\n response.data[i] = convertProductToStorefrontFormat(response.data[i]);\n }\n }\n\n return response;\n};\n\nexport class RebuyClient {\n constructor(key: string, defaultParameters?: Record<string, any>, shop?: string) {\n if (typeof key == 'string') {\n config.key = key;\n }\n\n if (typeof defaultParameters == 'object' && defaultParameters != null) {\n config.defaultParameters = defaultParameters;\n }\n\n if (typeof shop == 'string' && shop.endsWith('.myshopify.com')) {\n config.shop = shop;\n }\n\n config.api = new Api({ key: config.key, shop: config.shop });\n config.identity = new Identity(config.key);\n }\n\n setDefaultParameters(defaultParameters: Record<string, any>): void {\n if (typeof defaultParameters == 'object' && defaultParameters != null) {\n config.defaultParameters = defaultParameters;\n }\n }\n\n setContextParameters(contextParameters: Record<string, any>): void {\n if (typeof contextParameters == 'object' && contextParameters != null) {\n config.contextParameters = contextParameters;\n }\n }\n\n async getData(endpoint: string, params: Record<string, any>, options: Record<string, any> = {}): Promise<any> {\n return await makeCall(endpoint, params, null, options);\n }\n\n async getDataFromCDN(\n endpoint: string,\n params: Record<string, any>,\n options: Record<string, any> = {}\n ): Promise<any> {\n return await makeCDNCall(endpoint, params, null, options);\n }\n\n async getShieldedAsset(\n endpoint: string,\n params: Record<string, any>,\n options: Record<string, any> = {}\n ): Promise<any> {\n return await makeShieldCall(endpoint, params, null, options);\n }\n\n async getStaticAsset(\n endpoint: string,\n params: Record<string, any>,\n options: Record<string, any> = {}\n ): Promise<any> {\n return await makeStaticCall(endpoint, params, null, options);\n }\n\n async getStorefrontData(\n endpoint: string,\n params: Record<string, any>,\n options: Record<string, any> = {}\n ): Promise<any> {\n return await makeCall(endpoint, params, 'storefront', options);\n }\n\n async trackProductViewed(data: Record<string, any>): Promise<any> {\n const requiredKeys = ['shopify_product_id', 'shopify_product_handle'];\n\n const defaultData = {\n noun: 'product',\n subject: 'user',\n verb: 'viewed',\n };\n\n if (typeof data != 'undefined' && data != null) {\n const dataKeys = Object.keys(data);\n\n if (dataKeys.some((key) => requiredKeys.includes(key))) {\n const payload = Object.assign(data, defaultData);\n\n return await trackEvent(payload);\n }\n }\n\n return null;\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default RebuyClient;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["config", "sessionId", "obj", "config", "enabled", "config", "config", "config", "config", "makeCall"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAuBA,qBAAa,OAAO;;IA0BhB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,YAAY,IAAI,MAAM;IAItB,eAAe,IAAI,MAAM;CAG5B;AAGD,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the string is a valid base64 encoded string.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} str - The string to check.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} True if the string is a valid base64 encoded string.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isBase64Encoded(str: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Returns a string as a JSON object.
|
|
11
|
+
*
|
|
12
|
+
* @param {string} data - The string to convert to a JSON object.
|
|
13
|
+
* @param {boolean} decode - Whether to decode the string. *
|
|
14
|
+
*
|
|
15
|
+
* @returns {any} The JSON object.
|
|
16
|
+
*/
|
|
17
|
+
export declare function stringToData(data: string, decode: boolean): any;
|
|
18
|
+
/**
|
|
19
|
+
* Returns a JSON object as a string.
|
|
20
|
+
*
|
|
21
|
+
* @param {any} data - The JSON object to convert to a string.
|
|
22
|
+
* @param {boolean} encode - Whether to encode the string. *
|
|
23
|
+
*
|
|
24
|
+
* @returns {string} The string.
|
|
25
|
+
*/
|
|
26
|
+
export declare function dataToString(data: any, encode: boolean): string;
|
|
27
|
+
/**
|
|
28
|
+
* Returns a string with HTML tags removed.
|
|
29
|
+
*
|
|
30
|
+
* @param {string} str - The string to strip HTML tags from.
|
|
31
|
+
*
|
|
32
|
+
* @returns {string} The string with HTML tags removed.
|
|
33
|
+
*/
|
|
34
|
+
export declare function stripHtml(str: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Returns the ID from a GraphQL URL.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} graphId - The GraphQL URL.
|
|
39
|
+
* @param {string} objectType - The object type.
|
|
40
|
+
*
|
|
41
|
+
* @returns {number | null} The ID.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getIdFromGraphUrl(graphId: string, objectType: string): number | null;
|
|
44
|
+
/**
|
|
45
|
+
* Returns true if the variant is available.
|
|
46
|
+
*
|
|
47
|
+
* @param {any} variant - The variant.
|
|
48
|
+
*
|
|
49
|
+
* @returns {boolean} True if the variant is available.
|
|
50
|
+
*/
|
|
51
|
+
export declare function variantAvailable(variant: any): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the first available variant.
|
|
54
|
+
*
|
|
55
|
+
* @param {any} product - The product.
|
|
56
|
+
*
|
|
57
|
+
* @returns {any} The first available variant.
|
|
58
|
+
*/
|
|
59
|
+
export declare function firstAvailableVariant(product: any): any;
|
|
60
|
+
/**
|
|
61
|
+
* Returns a UUID.
|
|
62
|
+
*
|
|
63
|
+
* @returns {string} The UUID.
|
|
64
|
+
*/
|
|
65
|
+
export declare function uuid(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Returns a session ID.
|
|
68
|
+
*
|
|
69
|
+
* @returns {string} The session ID.
|
|
70
|
+
*/
|
|
71
|
+
export declare function sessionId(): string;
|
|
72
|
+
/**
|
|
73
|
+
* Converts a product to the storefront format.
|
|
74
|
+
*
|
|
75
|
+
* @param {any} product - The product.
|
|
76
|
+
*
|
|
77
|
+
* @returns {any} The product in the storefront format.
|
|
78
|
+
*/
|
|
79
|
+
export declare function convertProductToStorefrontFormat(product: any): any;
|
|
80
|
+
/**
|
|
81
|
+
* Converts an array to a nodes object.
|
|
82
|
+
*
|
|
83
|
+
* @param {any} arr - The array to convert to a nodes object.
|
|
84
|
+
*
|
|
85
|
+
* @returns {any} The nodes object.
|
|
86
|
+
*/
|
|
87
|
+
export declare function convertToNodes(arr: any): any;
|
|
88
|
+
/**
|
|
89
|
+
* Converts a variant to the storefront format.
|
|
90
|
+
*
|
|
91
|
+
* @param {any} product - The product.
|
|
92
|
+
* @param {any} variant - The variant.
|
|
93
|
+
*
|
|
94
|
+
* @returns {any} The variant in the storefront format.
|
|
95
|
+
*/
|
|
96
|
+
export declare function convertVariantToStorefrontFormat(product: any, variant: any): any;
|
|
97
|
+
/**
|
|
98
|
+
* Returns the minimum or maximum price object for a variant.
|
|
99
|
+
*
|
|
100
|
+
* @param {any} product - The product.
|
|
101
|
+
* @param {string} key - The key to get the price object for.
|
|
102
|
+
* @param {string} operator - The operator to use. *
|
|
103
|
+
*
|
|
104
|
+
* @returns {any} The price object.
|
|
105
|
+
*/
|
|
106
|
+
export declare function variantMinMaxPriceObject(product: any, key?: string, operator?: string): any;
|
|
107
|
+
/**
|
|
108
|
+
* Returns the price object for a variant.
|
|
109
|
+
*
|
|
110
|
+
* @param {any} variant - The variant.
|
|
111
|
+
* @param {string} key - The key to get the price object for.
|
|
112
|
+
*
|
|
113
|
+
* @returns {any} The price object.
|
|
114
|
+
*/
|
|
115
|
+
export declare function variantPriceObject(variant: any, key?: string): any;
|
|
116
|
+
/**
|
|
117
|
+
* Returns the selected variant options.
|
|
118
|
+
*
|
|
119
|
+
* @param {any} product - The product.
|
|
120
|
+
* @param {any} variant - The variant.
|
|
121
|
+
*
|
|
122
|
+
* @returns {any} The selected variant options.
|
|
123
|
+
*/
|
|
124
|
+
export declare function selectedVariantOptions(product: any, variant: any): any;
|
|
125
|
+
/**
|
|
126
|
+
* Returns the product image object.
|
|
127
|
+
*
|
|
128
|
+
* @param {any} product - The product.
|
|
129
|
+
* @param {number | null} id - The ID of the image. *
|
|
130
|
+
*
|
|
131
|
+
* @returns {any} The product image object.
|
|
132
|
+
*/
|
|
133
|
+
export declare function productImageObject(product: any, id: number | null): any;
|
|
134
|
+
/**
|
|
135
|
+
* Returns a query string as an object.
|
|
136
|
+
*
|
|
137
|
+
* @param {string} str - The query string to convert to an object.
|
|
138
|
+
*
|
|
139
|
+
* @returns {any} The object.
|
|
140
|
+
*/
|
|
141
|
+
export declare function queryStringToObject(str: string): any;
|
|
142
|
+
/**
|
|
143
|
+
* Returns a UTM object from a string.
|
|
144
|
+
*
|
|
145
|
+
* @param {string} str - The string to convert to a UTM object.
|
|
146
|
+
*
|
|
147
|
+
* @returns {any} The UTM object.
|
|
148
|
+
*/
|
|
149
|
+
export declare function utmObjectFromString(str: string): any;
|
|
150
|
+
/**
|
|
151
|
+
* Returns the amount in cents.
|
|
152
|
+
*
|
|
153
|
+
* @param {number} amount - The amount to convert to cents.
|
|
154
|
+
*
|
|
155
|
+
* @returns {number} The amount in cents.
|
|
156
|
+
*/
|
|
157
|
+
export declare function amountToCents(amount: number | string): number;
|
|
158
|
+
/**
|
|
159
|
+
* Serializes an object.
|
|
160
|
+
*
|
|
161
|
+
* @param {Record<string, unknown>} obj - The object to serialize.
|
|
162
|
+
*
|
|
163
|
+
* @returns {string} The serialized object.
|
|
164
|
+
*/
|
|
165
|
+
export declare function serialize(obj: Record<string, unknown>): string;
|
|
166
|
+
//# sourceMappingURL=utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,GAAG,CAgB/D;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAa/D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAepF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAavD;AAED;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAiB7B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAclC;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CA0ClE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAQ5C;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAoBhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,MAAgB,EAAE,QAAQ,GAAE,MAAc,GAAG,GAAG,CAqB3G;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAE,MAAgB,GAAG,GAAG,CAS3E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAgBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CA4BvE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAIpD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAepD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAkB7D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAsC9D"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rebuy/rebuy",
|
|
3
3
|
"description": "This is the default library for Rebuy",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.6.0-alpha.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Rebuy, Inc.",
|
|
7
7
|
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
8
11
|
"publishConfig": {
|
|
9
12
|
"access": "public"
|
|
10
13
|
},
|
|
11
14
|
"files": [
|
|
12
|
-
"
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
13
17
|
],
|
|
14
18
|
"scripts": {
|
|
15
|
-
"
|
|
19
|
+
"build": "npm run clean && npm run build:types && npm run build:code",
|
|
20
|
+
"build:code": "node esbuild.config.mjs",
|
|
21
|
+
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
22
|
+
"build:watch": "npm run clean && npm run build:types && node esbuild.config.mjs --watch",
|
|
23
|
+
"check-types": "tsc --noEmit",
|
|
24
|
+
"clean": "rm -rf dist",
|
|
25
|
+
"deploy": "npm run build && npx semantic-release --debug --no-ci",
|
|
26
|
+
"deploy:dryrun": "npm run deploy -- --dry-run",
|
|
27
|
+
"dev": "npm run clean && concurrently \"npm run types:watch\" \"npm run build:watch\"",
|
|
28
|
+
"format": "npm run lint -- --fix",
|
|
29
|
+
"lint": "eslint --ext .js,.jsx,.json,.mjs,.ts,.tsx ./src",
|
|
30
|
+
"lint:skip-warn": "npm run lint -- --quiet",
|
|
16
31
|
"prepare": "husky install",
|
|
17
|
-
"
|
|
32
|
+
"sort-package": "sort-package-json",
|
|
33
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
34
|
+
"types:watch": "tsc --emitDeclarationOnly --outDir dist --watch"
|
|
18
35
|
},
|
|
19
36
|
"config": {
|
|
20
37
|
"commitizen": {
|
|
@@ -33,18 +50,35 @@
|
|
|
33
50
|
},
|
|
34
51
|
"homepage": "https://bitbucket.org/rebuyengine/npm-rebuy#readme",
|
|
35
52
|
"devDependencies": {
|
|
36
|
-
"@commitlint/cli": "^
|
|
37
|
-
"@commitlint/config-conventional": "^
|
|
38
|
-
"@semantic-release/changelog": "^6.0.
|
|
39
|
-
"@semantic-release/commit-analyzer": "^
|
|
40
|
-
"@semantic-release/
|
|
41
|
-
"@semantic-release/
|
|
42
|
-
"@
|
|
43
|
-
"
|
|
53
|
+
"@commitlint/cli": "^19.8.1",
|
|
54
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
55
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
56
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
57
|
+
"@semantic-release/exec": "^7.1.0",
|
|
58
|
+
"@semantic-release/release-notes-generator": "^14.0.3",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^8.33.1",
|
|
60
|
+
"@typescript-eslint/parser": "^8.33.1",
|
|
61
|
+
"concurrently": "^9.1.2",
|
|
62
|
+
"conventional-changelog-eslint": "^6.0.0",
|
|
44
63
|
"cz-conventional-changelog": "^3.3.0",
|
|
45
|
-
"cz-customizable": "^
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
64
|
+
"cz-customizable": "^7.4.0",
|
|
65
|
+
"esbuild": "^0.25.5",
|
|
66
|
+
"eslint": "^8.57.0",
|
|
67
|
+
"eslint-config-prettier": "^10.1.5",
|
|
68
|
+
"eslint-import-resolver-typescript": "^4.4.3",
|
|
69
|
+
"eslint-plugin-import": "^2.31.0",
|
|
70
|
+
"eslint-plugin-jsdoc": "^50.7.1",
|
|
71
|
+
"eslint-plugin-json": "^4.0.1",
|
|
72
|
+
"eslint-plugin-prettier": "^5.4.1",
|
|
73
|
+
"eslint-plugin-sort-destructure-keys": "^2.0.0",
|
|
74
|
+
"eslint-plugin-sort-keys": "^2.3.5",
|
|
75
|
+
"eslint-plugin-typescript-sort-keys": "^3.3.0",
|
|
76
|
+
"eslint-plugin-unused-imports": "^4.1.4",
|
|
77
|
+
"husky": "^9.1.7",
|
|
78
|
+
"lint-staged": "^15.5.0",
|
|
79
|
+
"prettier": "^3.5.3",
|
|
80
|
+
"semantic-release": "^24.2.5",
|
|
81
|
+
"sort-package-json": "^3.2.1",
|
|
82
|
+
"typescript": "^5.8.3"
|
|
49
83
|
}
|
|
50
84
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
0000000000000000000000000000000000000000 145cb0c967aef90450c887bbaf2a9bf61a00577d Mike Reid <mike.reid@rebuyengine.com> 1658876468 -0600 branch: Created from HEAD
|
|
2
|
-
145cb0c967aef90450c887bbaf2a9bf61a00577d f5fedc7d3aea2600d58bfde5527d49f2b99d5abc Mike Reid <mike.reid@rebuyengine.com> 1658876497 -0600 commit: Fix: Include both named + default exports (for BC)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
f5fedc7d3aea2600d58bfde5527d49f2b99d5abc
|
package/api.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { serialize } from './utilities.js';
|
|
2
|
-
|
|
3
|
-
const config = {
|
|
4
|
-
key: null,
|
|
5
|
-
domain: 'https://rebuyengine.com',
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated
|
|
8
|
-
*/
|
|
9
|
-
cdnDomain: 'https://cdn.rebuyengine.com',
|
|
10
|
-
eventDomain: 'https://rebuyengine.com',
|
|
11
|
-
geoDomain: 'https://geo.rebuyengine.com',
|
|
12
|
-
shieldDomain: 'https://cached.rebuyengine.com',
|
|
13
|
-
staticDomain: 'https://cdn.rebuyengine.com',
|
|
14
|
-
shop: null,
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const staging = {
|
|
18
|
-
domain: 'https://enigneyuber.com',
|
|
19
|
-
/**
|
|
20
|
-
* @deprecated
|
|
21
|
-
*/
|
|
22
|
-
cdnDomain: 'https://cdn.enigneyuber.com',
|
|
23
|
-
eventDomain: 'https://enigneyuber.com',
|
|
24
|
-
geoDomain: 'https://geo.enigneyuber.com',
|
|
25
|
-
shieldDomain: 'https://cached.enigneyuber.com',
|
|
26
|
-
staticDomain: 'https://cdn.enigneyuber.com',
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const stagingDomains = [
|
|
30
|
-
'enigneyuber.com',
|
|
31
|
-
'rebuy-engine-regression.myshopify.com',
|
|
32
|
-
'rebuy-stage-currency-test.myshopify.com',
|
|
33
|
-
'rebuy-staging-automation.myshopify.com',
|
|
34
|
-
'rebuy-staging-regression.myshopify.com',
|
|
35
|
-
'rebuy-uat.myshopify.com',
|
|
36
|
-
'rebuy-regression-qa.myshopify.com',
|
|
37
|
-
'senator-staging.myshopify.com',
|
|
38
|
-
'mike-reids-test-store.myshopify.com',
|
|
39
|
-
'dash-ext-hoke.myshopify.com',
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
const makeCall = async (method, path, data, origin, options = {}) => {
|
|
43
|
-
const url = `${origin}${path}`;
|
|
44
|
-
const requestUrl = new URL(url);
|
|
45
|
-
const fetchOptions = options?.fetch ?? {};
|
|
46
|
-
|
|
47
|
-
const requestData = {};
|
|
48
|
-
|
|
49
|
-
if (typeof data == 'object' && data != null) {
|
|
50
|
-
Object.assign(requestData, data);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (typeof config.key == 'string' && config.key.length > 0) {
|
|
54
|
-
Object.assign(requestData, { key: config.key });
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const requestObject = {
|
|
58
|
-
method,
|
|
59
|
-
...fetchOptions,
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
if (method == 'GET') {
|
|
63
|
-
requestUrl.search = serialize(requestData);
|
|
64
|
-
} else if (method == 'POST') {
|
|
65
|
-
requestObject.headers = {
|
|
66
|
-
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
|
67
|
-
};
|
|
68
|
-
requestObject.body = new URLSearchParams(requestData);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const request = await fetch(requestUrl, requestObject);
|
|
72
|
-
const response = await request.json();
|
|
73
|
-
|
|
74
|
-
if (!request.ok && fetchOptions.strictErrors === true) {
|
|
75
|
-
const message = `An error has occurred: ${request.status}`;
|
|
76
|
-
throw new Error(message, { cause: response });
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return response;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
export class Api {
|
|
83
|
-
constructor(options) {
|
|
84
|
-
if (typeof options == 'string') {
|
|
85
|
-
config.key = options;
|
|
86
|
-
} else if (typeof options == 'object' && options != null) {
|
|
87
|
-
Object.assign(config, options);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
for (const domain of stagingDomains) {
|
|
91
|
-
if (typeof location === 'object' && location?.host?.includes(domain)) {
|
|
92
|
-
Object.assign(config, staging);
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
if (typeof config.shop === 'string' && config.shop.includes(domain)) {
|
|
96
|
-
Object.assign(config, staging);
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
async callEvent(method, path, data, options = {}) {
|
|
103
|
-
return await makeCall(method, path, data, config.eventDomain, options);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async callShield(method, path, data, options = {}) {
|
|
107
|
-
return await makeCall(method, path, data, config.shieldDomain, options);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
async callStatic(method, path, data, options = {}) {
|
|
111
|
-
return await makeCall(method, path, data, config.staticDomain, options);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async callGeo(method, path, data, options = {}) {
|
|
115
|
-
return await makeCall(method, path, data, config.geoDomain, options);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* @deprecated
|
|
120
|
-
*/
|
|
121
|
-
async callCdn(method, path, data, options = {}) {
|
|
122
|
-
return await makeCall(method, path, data, config.cdnDomain, options);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
async callApi(method, path, data, options = {}) {
|
|
126
|
-
return await makeCall(method, path, data, config.domain, options);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export default Api;
|