@rebuy/rebuy 1.6.0-alpha.2 → 1.6.0-alpha.3
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.js +131 -0
- package/dist/api.js.map +7 -0
- package/dist/api.mjs +111 -0
- package/dist/api.mjs.map +7 -0
- package/dist/client.js +145 -0
- package/dist/client.js.map +7 -0
- package/dist/client.mjs +115 -0
- package/dist/client.mjs.map +7 -0
- package/dist/cookie.js +139 -0
- package/dist/cookie.js.map +7 -0
- package/dist/cookie.mjs +119 -0
- package/dist/cookie.mjs.map +7 -0
- package/dist/geolocation.js +79 -0
- package/dist/geolocation.js.map +7 -0
- package/dist/geolocation.mjs +49 -0
- package/dist/geolocation.mjs.map +7 -0
- package/dist/identity.js +85 -0
- package/dist/identity.js.map +7 -0
- package/dist/identity.mjs +55 -0
- package/dist/identity.mjs.map +7 -0
- package/dist/index.js +8 -773
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +7 -766
- package/dist/index.mjs.map +4 -4
- package/dist/session.js +72 -0
- package/dist/session.js.map +7 -0
- package/dist/session.mjs +42 -0
- package/dist/session.mjs.map +7 -0
- package/dist/utilities.js +321 -0
- package/dist/utilities.js.map +7 -0
- package/dist/utilities.mjs +301 -0
- package/dist/utilities.mjs.map +7 -0
- package/package.json +14 -1
package/dist/api.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var api_exports = {};
|
|
20
|
+
__export(api_exports, {
|
|
21
|
+
Api: () => Api,
|
|
22
|
+
default: () => api_default
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(api_exports);
|
|
25
|
+
var import_utilities = require("~/utilities");
|
|
26
|
+
const config = {
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated
|
|
29
|
+
*/
|
|
30
|
+
cdnDomain: "https://cdn.rebuyengine.com",
|
|
31
|
+
domain: "https://rebuyengine.com",
|
|
32
|
+
eventDomain: "https://rebuyengine.com",
|
|
33
|
+
geoDomain: "https://geo.rebuyengine.com",
|
|
34
|
+
key: null,
|
|
35
|
+
shieldDomain: "https://cached.rebuyengine.com",
|
|
36
|
+
shop: null,
|
|
37
|
+
staticDomain: "https://cdn.rebuyengine.com"
|
|
38
|
+
};
|
|
39
|
+
const staging = {
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated
|
|
42
|
+
*/
|
|
43
|
+
cdnDomain: "https://cdn.enigneyuber.com",
|
|
44
|
+
domain: "https://enigneyuber.com",
|
|
45
|
+
eventDomain: "https://enigneyuber.com",
|
|
46
|
+
geoDomain: "https://geo.enigneyuber.com",
|
|
47
|
+
shieldDomain: "https://cached.enigneyuber.com",
|
|
48
|
+
staticDomain: "https://cdn.enigneyuber.com"
|
|
49
|
+
};
|
|
50
|
+
const stagingDomains = [
|
|
51
|
+
"enigneyuber.com",
|
|
52
|
+
"rebuy-engine-regression.myshopify.com",
|
|
53
|
+
"rebuy-stage-currency-test.myshopify.com",
|
|
54
|
+
"rebuy-staging-automation.myshopify.com",
|
|
55
|
+
"rebuy-staging-regression.myshopify.com",
|
|
56
|
+
"rebuy-uat.myshopify.com",
|
|
57
|
+
"rebuy-regression-qa.myshopify.com",
|
|
58
|
+
"senator-staging.myshopify.com",
|
|
59
|
+
"mike-reids-test-store.myshopify.com",
|
|
60
|
+
"dash-ext-hoke.myshopify.com"
|
|
61
|
+
];
|
|
62
|
+
const makeCall = async (method, path, data, origin, options = {}) => {
|
|
63
|
+
const url = `${origin}${path}`;
|
|
64
|
+
const requestUrl = new URL(url);
|
|
65
|
+
const fetchOptions = options?.fetch ?? {};
|
|
66
|
+
const requestData = {};
|
|
67
|
+
if (typeof data == "object" && data != null) {
|
|
68
|
+
Object.assign(requestData, data);
|
|
69
|
+
}
|
|
70
|
+
if (typeof config.key == "string" && config.key.length > 0) {
|
|
71
|
+
Object.assign(requestData, { key: config.key });
|
|
72
|
+
}
|
|
73
|
+
const requestObject = {
|
|
74
|
+
method,
|
|
75
|
+
...fetchOptions
|
|
76
|
+
};
|
|
77
|
+
if (method === "GET") {
|
|
78
|
+
requestUrl.search = (0, import_utilities.serialize)(requestData);
|
|
79
|
+
} else if (method === "POST") {
|
|
80
|
+
requestObject.headers = {
|
|
81
|
+
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
|
|
82
|
+
};
|
|
83
|
+
requestObject.body = new URLSearchParams(requestData);
|
|
84
|
+
}
|
|
85
|
+
const request = await fetch(requestUrl.toString(), requestObject);
|
|
86
|
+
const response = await request.json();
|
|
87
|
+
if (!request.ok && fetchOptions.strictErrors === true) {
|
|
88
|
+
const message = `An error has occurred: ${request.status}`;
|
|
89
|
+
throw new Error(message, { cause: response });
|
|
90
|
+
}
|
|
91
|
+
return response;
|
|
92
|
+
};
|
|
93
|
+
class Api {
|
|
94
|
+
constructor(options) {
|
|
95
|
+
if (typeof options == "string") {
|
|
96
|
+
config.key = options;
|
|
97
|
+
} else if (typeof options == "object" && options != null) {
|
|
98
|
+
Object.assign(config, options);
|
|
99
|
+
}
|
|
100
|
+
for (const domain of stagingDomains) {
|
|
101
|
+
if (typeof location === "object" && location?.host?.includes(domain)) {
|
|
102
|
+
Object.assign(config, staging);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
if (typeof config.shop === "string" && config.shop.includes(domain)) {
|
|
106
|
+
Object.assign(config, staging);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async callEvent(method, path, data, options) {
|
|
112
|
+
return await makeCall(method, path, data, config.eventDomain, options);
|
|
113
|
+
}
|
|
114
|
+
async callShield(method, path, data, options) {
|
|
115
|
+
return await makeCall(method, path, data, config.shieldDomain, options);
|
|
116
|
+
}
|
|
117
|
+
async callStatic(method, path, data, options) {
|
|
118
|
+
return await makeCall(method, path, data, config.staticDomain, options);
|
|
119
|
+
}
|
|
120
|
+
async callGeo(method, path, data, options) {
|
|
121
|
+
return await makeCall(method, path, data, config.geoDomain, options);
|
|
122
|
+
}
|
|
123
|
+
async callCdn(method, path, data, options) {
|
|
124
|
+
return await makeCall(method, path, data, config.cdnDomain, options);
|
|
125
|
+
}
|
|
126
|
+
async callApi(method, path, data, options) {
|
|
127
|
+
return await makeCall(method, path, data, config.domain, options);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
var api_default = Api;
|
|
131
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api.ts"],
|
|
4
|
+
"sourcesContent": ["/* 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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/api.mjs
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { serialize } from "~/utilities";
|
|
2
|
+
const config = {
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated
|
|
5
|
+
*/
|
|
6
|
+
cdnDomain: "https://cdn.rebuyengine.com",
|
|
7
|
+
domain: "https://rebuyengine.com",
|
|
8
|
+
eventDomain: "https://rebuyengine.com",
|
|
9
|
+
geoDomain: "https://geo.rebuyengine.com",
|
|
10
|
+
key: null,
|
|
11
|
+
shieldDomain: "https://cached.rebuyengine.com",
|
|
12
|
+
shop: null,
|
|
13
|
+
staticDomain: "https://cdn.rebuyengine.com"
|
|
14
|
+
};
|
|
15
|
+
const staging = {
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated
|
|
18
|
+
*/
|
|
19
|
+
cdnDomain: "https://cdn.enigneyuber.com",
|
|
20
|
+
domain: "https://enigneyuber.com",
|
|
21
|
+
eventDomain: "https://enigneyuber.com",
|
|
22
|
+
geoDomain: "https://geo.enigneyuber.com",
|
|
23
|
+
shieldDomain: "https://cached.enigneyuber.com",
|
|
24
|
+
staticDomain: "https://cdn.enigneyuber.com"
|
|
25
|
+
};
|
|
26
|
+
const stagingDomains = [
|
|
27
|
+
"enigneyuber.com",
|
|
28
|
+
"rebuy-engine-regression.myshopify.com",
|
|
29
|
+
"rebuy-stage-currency-test.myshopify.com",
|
|
30
|
+
"rebuy-staging-automation.myshopify.com",
|
|
31
|
+
"rebuy-staging-regression.myshopify.com",
|
|
32
|
+
"rebuy-uat.myshopify.com",
|
|
33
|
+
"rebuy-regression-qa.myshopify.com",
|
|
34
|
+
"senator-staging.myshopify.com",
|
|
35
|
+
"mike-reids-test-store.myshopify.com",
|
|
36
|
+
"dash-ext-hoke.myshopify.com"
|
|
37
|
+
];
|
|
38
|
+
const makeCall = async (method, path, data, origin, options = {}) => {
|
|
39
|
+
const url = `${origin}${path}`;
|
|
40
|
+
const requestUrl = new URL(url);
|
|
41
|
+
const fetchOptions = options?.fetch ?? {};
|
|
42
|
+
const requestData = {};
|
|
43
|
+
if (typeof data == "object" && data != null) {
|
|
44
|
+
Object.assign(requestData, data);
|
|
45
|
+
}
|
|
46
|
+
if (typeof config.key == "string" && config.key.length > 0) {
|
|
47
|
+
Object.assign(requestData, { key: config.key });
|
|
48
|
+
}
|
|
49
|
+
const requestObject = {
|
|
50
|
+
method,
|
|
51
|
+
...fetchOptions
|
|
52
|
+
};
|
|
53
|
+
if (method === "GET") {
|
|
54
|
+
requestUrl.search = serialize(requestData);
|
|
55
|
+
} else if (method === "POST") {
|
|
56
|
+
requestObject.headers = {
|
|
57
|
+
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
|
|
58
|
+
};
|
|
59
|
+
requestObject.body = new URLSearchParams(requestData);
|
|
60
|
+
}
|
|
61
|
+
const request = await fetch(requestUrl.toString(), requestObject);
|
|
62
|
+
const response = await request.json();
|
|
63
|
+
if (!request.ok && fetchOptions.strictErrors === true) {
|
|
64
|
+
const message = `An error has occurred: ${request.status}`;
|
|
65
|
+
throw new Error(message, { cause: response });
|
|
66
|
+
}
|
|
67
|
+
return response;
|
|
68
|
+
};
|
|
69
|
+
class Api {
|
|
70
|
+
constructor(options) {
|
|
71
|
+
if (typeof options == "string") {
|
|
72
|
+
config.key = options;
|
|
73
|
+
} else if (typeof options == "object" && options != null) {
|
|
74
|
+
Object.assign(config, options);
|
|
75
|
+
}
|
|
76
|
+
for (const domain of stagingDomains) {
|
|
77
|
+
if (typeof location === "object" && location?.host?.includes(domain)) {
|
|
78
|
+
Object.assign(config, staging);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
if (typeof config.shop === "string" && config.shop.includes(domain)) {
|
|
82
|
+
Object.assign(config, staging);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async callEvent(method, path, data, options) {
|
|
88
|
+
return await makeCall(method, path, data, config.eventDomain, options);
|
|
89
|
+
}
|
|
90
|
+
async callShield(method, path, data, options) {
|
|
91
|
+
return await makeCall(method, path, data, config.shieldDomain, options);
|
|
92
|
+
}
|
|
93
|
+
async callStatic(method, path, data, options) {
|
|
94
|
+
return await makeCall(method, path, data, config.staticDomain, options);
|
|
95
|
+
}
|
|
96
|
+
async callGeo(method, path, data, options) {
|
|
97
|
+
return await makeCall(method, path, data, config.geoDomain, options);
|
|
98
|
+
}
|
|
99
|
+
async callCdn(method, path, data, options) {
|
|
100
|
+
return await makeCall(method, path, data, config.cdnDomain, options);
|
|
101
|
+
}
|
|
102
|
+
async callApi(method, path, data, options) {
|
|
103
|
+
return await makeCall(method, path, data, config.domain, options);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
var api_default = Api;
|
|
107
|
+
export {
|
|
108
|
+
Api,
|
|
109
|
+
api_default as default
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=api.mjs.map
|
package/dist/api.mjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api.ts"],
|
|
4
|
+
"sourcesContent": ["/* 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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var client_exports = {};
|
|
30
|
+
__export(client_exports, {
|
|
31
|
+
RebuyClient: () => RebuyClient,
|
|
32
|
+
default: () => client_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(client_exports);
|
|
35
|
+
var import_api = __toESM(require("~/api"), 1);
|
|
36
|
+
var import_identity = __toESM(require("~/identity"), 1);
|
|
37
|
+
var import_utilities = require("~/utilities");
|
|
38
|
+
const config = {
|
|
39
|
+
api: null,
|
|
40
|
+
contextParameters: null,
|
|
41
|
+
defaultParameters: null,
|
|
42
|
+
identity: null,
|
|
43
|
+
key: null,
|
|
44
|
+
shop: null
|
|
45
|
+
};
|
|
46
|
+
const trackEvent = async (eventData) => {
|
|
47
|
+
if (config.identity && config.identity.visitorId()) {
|
|
48
|
+
eventData.uuid = config.identity.visitorId();
|
|
49
|
+
}
|
|
50
|
+
return await config.api.callEvent("POST", "/api/v1/analytics/event", eventData);
|
|
51
|
+
};
|
|
52
|
+
const makeShieldCall = async (endpoint, params, format, options = {}) => {
|
|
53
|
+
return await makeCall(endpoint, params, format, { ...options, shield: true });
|
|
54
|
+
};
|
|
55
|
+
const makeStaticCall = async (endpoint, params, format, options = {}) => {
|
|
56
|
+
return await makeCall(endpoint, params, format, { ...options, static: true });
|
|
57
|
+
};
|
|
58
|
+
const makeCDNCall = async (endpoint, params, format, options = {}) => {
|
|
59
|
+
return await makeCall(endpoint, params, format, { ...options, cdn: true });
|
|
60
|
+
};
|
|
61
|
+
const makeCall = async (endpoint, params, format, options = {}) => {
|
|
62
|
+
const query = {};
|
|
63
|
+
if (config.defaultParameters != null) {
|
|
64
|
+
Object.assign(query, config.defaultParameters);
|
|
65
|
+
}
|
|
66
|
+
if (config.contextParameters != null) {
|
|
67
|
+
Object.assign(query, config.contextParameters);
|
|
68
|
+
}
|
|
69
|
+
if (typeof params == "object" && params != null) {
|
|
70
|
+
Object.assign(query, params);
|
|
71
|
+
}
|
|
72
|
+
if (typeof options != "object" || options == null) {
|
|
73
|
+
console.warn("Unsupported fetch options provided.", options);
|
|
74
|
+
options = {};
|
|
75
|
+
}
|
|
76
|
+
if (config.identity && config.identity.visitorId()) {
|
|
77
|
+
query.uuid = config.identity.visitorId();
|
|
78
|
+
}
|
|
79
|
+
const source = options.cdn ? "callCdn" : options.shield ? "callShield" : options.static ? "callStatic" : "callApi";
|
|
80
|
+
const response = await config.api[source]("GET", endpoint, query, options);
|
|
81
|
+
if (response.data && format === "storefront") {
|
|
82
|
+
for (let i = 0; i < response.data.length; i++) {
|
|
83
|
+
response.data[i] = (0, import_utilities.convertProductToStorefrontFormat)(response.data[i]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return response;
|
|
87
|
+
};
|
|
88
|
+
class RebuyClient {
|
|
89
|
+
constructor(key, defaultParameters, shop) {
|
|
90
|
+
if (typeof key == "string") {
|
|
91
|
+
config.key = key;
|
|
92
|
+
}
|
|
93
|
+
if (typeof defaultParameters == "object" && defaultParameters != null) {
|
|
94
|
+
config.defaultParameters = defaultParameters;
|
|
95
|
+
}
|
|
96
|
+
if (typeof shop == "string" && shop.endsWith(".myshopify.com")) {
|
|
97
|
+
config.shop = shop;
|
|
98
|
+
}
|
|
99
|
+
config.api = new import_api.default({ key: config.key, shop: config.shop });
|
|
100
|
+
config.identity = new import_identity.default(config.key);
|
|
101
|
+
}
|
|
102
|
+
setDefaultParameters(defaultParameters) {
|
|
103
|
+
if (typeof defaultParameters == "object" && defaultParameters != null) {
|
|
104
|
+
config.defaultParameters = defaultParameters;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
setContextParameters(contextParameters) {
|
|
108
|
+
if (typeof contextParameters == "object" && contextParameters != null) {
|
|
109
|
+
config.contextParameters = contextParameters;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async getData(endpoint, params, options = {}) {
|
|
113
|
+
return await makeCall(endpoint, params, null, options);
|
|
114
|
+
}
|
|
115
|
+
async getDataFromCDN(endpoint, params, options = {}) {
|
|
116
|
+
return await makeCDNCall(endpoint, params, null, options);
|
|
117
|
+
}
|
|
118
|
+
async getShieldedAsset(endpoint, params, options = {}) {
|
|
119
|
+
return await makeShieldCall(endpoint, params, null, options);
|
|
120
|
+
}
|
|
121
|
+
async getStaticAsset(endpoint, params, options = {}) {
|
|
122
|
+
return await makeStaticCall(endpoint, params, null, options);
|
|
123
|
+
}
|
|
124
|
+
async getStorefrontData(endpoint, params, options = {}) {
|
|
125
|
+
return await makeCall(endpoint, params, "storefront", options);
|
|
126
|
+
}
|
|
127
|
+
async trackProductViewed(data) {
|
|
128
|
+
const requiredKeys = ["shopify_product_id", "shopify_product_handle"];
|
|
129
|
+
const defaultData = {
|
|
130
|
+
noun: "product",
|
|
131
|
+
subject: "user",
|
|
132
|
+
verb: "viewed"
|
|
133
|
+
};
|
|
134
|
+
if (typeof data != "undefined" && data != null) {
|
|
135
|
+
const dataKeys = Object.keys(data);
|
|
136
|
+
if (dataKeys.some((key) => requiredKeys.includes(key))) {
|
|
137
|
+
const payload = Object.assign(data, defaultData);
|
|
138
|
+
return await trackEvent(payload);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
var client_default = RebuyClient;
|
|
145
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/client.ts"],
|
|
4
|
+
"sourcesContent": ["/* 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": ["Api", "Identity"]
|
|
7
|
+
}
|
package/dist/client.mjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import Api from "~/api";
|
|
2
|
+
import Identity from "~/identity";
|
|
3
|
+
import { convertProductToStorefrontFormat } from "~/utilities";
|
|
4
|
+
const config = {
|
|
5
|
+
api: null,
|
|
6
|
+
contextParameters: null,
|
|
7
|
+
defaultParameters: null,
|
|
8
|
+
identity: null,
|
|
9
|
+
key: null,
|
|
10
|
+
shop: null
|
|
11
|
+
};
|
|
12
|
+
const trackEvent = async (eventData) => {
|
|
13
|
+
if (config.identity && config.identity.visitorId()) {
|
|
14
|
+
eventData.uuid = config.identity.visitorId();
|
|
15
|
+
}
|
|
16
|
+
return await config.api.callEvent("POST", "/api/v1/analytics/event", eventData);
|
|
17
|
+
};
|
|
18
|
+
const makeShieldCall = async (endpoint, params, format, options = {}) => {
|
|
19
|
+
return await makeCall(endpoint, params, format, { ...options, shield: true });
|
|
20
|
+
};
|
|
21
|
+
const makeStaticCall = async (endpoint, params, format, options = {}) => {
|
|
22
|
+
return await makeCall(endpoint, params, format, { ...options, static: true });
|
|
23
|
+
};
|
|
24
|
+
const makeCDNCall = async (endpoint, params, format, options = {}) => {
|
|
25
|
+
return await makeCall(endpoint, params, format, { ...options, cdn: true });
|
|
26
|
+
};
|
|
27
|
+
const makeCall = async (endpoint, params, format, options = {}) => {
|
|
28
|
+
const query = {};
|
|
29
|
+
if (config.defaultParameters != null) {
|
|
30
|
+
Object.assign(query, config.defaultParameters);
|
|
31
|
+
}
|
|
32
|
+
if (config.contextParameters != null) {
|
|
33
|
+
Object.assign(query, config.contextParameters);
|
|
34
|
+
}
|
|
35
|
+
if (typeof params == "object" && params != null) {
|
|
36
|
+
Object.assign(query, params);
|
|
37
|
+
}
|
|
38
|
+
if (typeof options != "object" || options == null) {
|
|
39
|
+
console.warn("Unsupported fetch options provided.", options);
|
|
40
|
+
options = {};
|
|
41
|
+
}
|
|
42
|
+
if (config.identity && config.identity.visitorId()) {
|
|
43
|
+
query.uuid = config.identity.visitorId();
|
|
44
|
+
}
|
|
45
|
+
const source = options.cdn ? "callCdn" : options.shield ? "callShield" : options.static ? "callStatic" : "callApi";
|
|
46
|
+
const response = await config.api[source]("GET", endpoint, query, options);
|
|
47
|
+
if (response.data && format === "storefront") {
|
|
48
|
+
for (let i = 0; i < response.data.length; i++) {
|
|
49
|
+
response.data[i] = convertProductToStorefrontFormat(response.data[i]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return response;
|
|
53
|
+
};
|
|
54
|
+
class RebuyClient {
|
|
55
|
+
constructor(key, defaultParameters, shop) {
|
|
56
|
+
if (typeof key == "string") {
|
|
57
|
+
config.key = key;
|
|
58
|
+
}
|
|
59
|
+
if (typeof defaultParameters == "object" && defaultParameters != null) {
|
|
60
|
+
config.defaultParameters = defaultParameters;
|
|
61
|
+
}
|
|
62
|
+
if (typeof shop == "string" && shop.endsWith(".myshopify.com")) {
|
|
63
|
+
config.shop = shop;
|
|
64
|
+
}
|
|
65
|
+
config.api = new Api({ key: config.key, shop: config.shop });
|
|
66
|
+
config.identity = new Identity(config.key);
|
|
67
|
+
}
|
|
68
|
+
setDefaultParameters(defaultParameters) {
|
|
69
|
+
if (typeof defaultParameters == "object" && defaultParameters != null) {
|
|
70
|
+
config.defaultParameters = defaultParameters;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
setContextParameters(contextParameters) {
|
|
74
|
+
if (typeof contextParameters == "object" && contextParameters != null) {
|
|
75
|
+
config.contextParameters = contextParameters;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async getData(endpoint, params, options = {}) {
|
|
79
|
+
return await makeCall(endpoint, params, null, options);
|
|
80
|
+
}
|
|
81
|
+
async getDataFromCDN(endpoint, params, options = {}) {
|
|
82
|
+
return await makeCDNCall(endpoint, params, null, options);
|
|
83
|
+
}
|
|
84
|
+
async getShieldedAsset(endpoint, params, options = {}) {
|
|
85
|
+
return await makeShieldCall(endpoint, params, null, options);
|
|
86
|
+
}
|
|
87
|
+
async getStaticAsset(endpoint, params, options = {}) {
|
|
88
|
+
return await makeStaticCall(endpoint, params, null, options);
|
|
89
|
+
}
|
|
90
|
+
async getStorefrontData(endpoint, params, options = {}) {
|
|
91
|
+
return await makeCall(endpoint, params, "storefront", options);
|
|
92
|
+
}
|
|
93
|
+
async trackProductViewed(data) {
|
|
94
|
+
const requiredKeys = ["shopify_product_id", "shopify_product_handle"];
|
|
95
|
+
const defaultData = {
|
|
96
|
+
noun: "product",
|
|
97
|
+
subject: "user",
|
|
98
|
+
verb: "viewed"
|
|
99
|
+
};
|
|
100
|
+
if (typeof data != "undefined" && data != null) {
|
|
101
|
+
const dataKeys = Object.keys(data);
|
|
102
|
+
if (dataKeys.some((key) => requiredKeys.includes(key))) {
|
|
103
|
+
const payload = Object.assign(data, defaultData);
|
|
104
|
+
return await trackEvent(payload);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
var client_default = RebuyClient;
|
|
111
|
+
export {
|
|
112
|
+
RebuyClient,
|
|
113
|
+
client_default as default
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=client.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/client.ts"],
|
|
4
|
+
"sourcesContent": ["/* 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": []
|
|
7
|
+
}
|