@ezbot-ai/javascript-sdk
Version:
The easiest way to interact with ezbot via JS (node and browser)
64 lines • 5.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPredictions = void 0;
const types_1 = require("./types");
const utils_1 = require("./utils");
function buildParams(projectId, sessionId, tracker) {
var _a;
const requiredParams = {
projectId: projectId.toString(),
sessionId,
};
try {
// TODO: should allow params to fail and fallback to "unknowns"
// one by one, not as a whole
//eslint-disable-next-line functional/no-let
let trackerToUse = tracker;
if (!trackerToUse) {
trackerToUse = (_a = window.ezbot) === null || _a === void 0 ? void 0 : _a.tracker;
}
if (!trackerToUse) {
(0, utils_1.logError)(new Error('Tracker is not available. Skipping optional params.'));
return requiredParams;
}
const urlParams = new URLSearchParams(window.location.search);
const optionalParams = {
pageUrlPath: window.location.pathname,
domainSessionIdx: trackerToUse.getDomainSessionIndex(),
utmContent: urlParams.get('utm_content') || 'unknown',
utmMedium: urlParams.get('utm_medium') || 'unknown',
utmSource: urlParams.get('utm_source') || 'unknown',
utmCampaign: urlParams.get('utm_campaign') || 'unknown',
utmTerm: urlParams.get('utm_term') || 'unknown',
referrer: document.referrer || 'unknown',
tz: Intl.DateTimeFormat().resolvedOptions().timeZone,
};
return Object.assign(Object.assign({}, requiredParams), optionalParams);
}
catch (e) {
(0, utils_1.logError)(e);
return requiredParams;
}
}
const buildQueryParams = (params) => {
return Object.entries(params)
.map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
.join('&');
};
async function getPredictions(projectId, sessionId, tracker) {
const basePredictionsURL = `https://${projectId}.api.ezbot.ai/predict`;
const params = buildParams(projectId, sessionId, tracker);
const queryParams = buildQueryParams(params);
const predictionsURL = `${basePredictionsURL}?${queryParams}`;
const response = await fetch(predictionsURL);
if (response.status === 402 || response.status === 410 || response.status === 403) {
throw (0, types_1.createEzbotPaymentError)(response.status, `Payment or subscription issue: ${response.status === 402 ? 'Payment Required' : 'Gone - Subscription Cancelled'}`);
}
if (response.status !== 200) {
throw new Error(`Failed to fetch predictions: Got a ${response.status} response`);
}
const responseJSON = (await response.json());
return responseJSON.predictions;
}
exports.getPredictions = getPredictions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3ByZWRpY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1DQUFtRjtBQUNuRixtQ0FBbUM7QUFhbkMsU0FBUyxXQUFXLENBQ2xCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLE9BQWtDOztJQUVsQyxNQUFNLGNBQWMsR0FBRztRQUNyQixTQUFTLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRTtRQUMvQixTQUFTO0tBQ1csQ0FBQztJQUN2QixJQUFJLENBQUM7UUFDSCwrREFBK0Q7UUFDL0QsNkJBQTZCO1FBRTdCLDRDQUE0QztRQUM1QyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLFlBQVksR0FBRyxNQUFBLE1BQU0sQ0FBQyxLQUFLLDBDQUFFLE9BQU8sQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLElBQUEsZ0JBQVEsRUFDTixJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUNqRSxDQUFDO1lBQ0YsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsTUFBTSxjQUFjLEdBQUc7WUFDckIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUNyQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMscUJBQXFCLEVBQUU7WUFDdEQsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksU0FBUztZQUNyRCxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxTQUFTO1lBQ25ELFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFNBQVM7WUFDbkQsV0FBVyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksU0FBUztZQUN2RCxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxTQUFTO1lBQy9DLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDeEMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRO1NBQ3JELENBQUM7UUFDRix1Q0FBWSxjQUFjLEdBQUssY0FBYyxFQUFHO0lBQ2xELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsSUFBQSxnQkFBUSxFQUFDLENBQVUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQXVDLEVBQVUsRUFBRTtJQUMzRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLEtBQUssVUFBVSxjQUFjLENBQzNCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLE9BQWtDO0lBRWxDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxTQUFTLHVCQUF1QixDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sY0FBYyxHQUFHLEdBQUcsa0JBQWtCLElBQUksV0FBVyxFQUFFLENBQUM7SUFFOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2xGLE1BQU0sSUFBQSwrQkFBdUIsRUFDM0IsUUFBUSxDQUFDLE1BQU0sRUFDZixrQ0FBa0MsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxRQUFRLENBQUMsTUFBTSxXQUFXLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBd0IsQ0FBQztJQUNwRSxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7QUFDbEMsQ0FBQztBQUVDLHdDQUFjIn0=