@klevu/core
Version:
Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.
53 lines (52 loc) • 2.38 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { KlevuConfig } from "../index.js";
import { isBrowser } from "../utils/isBrowser.js";
import { get } from "./fetch.js";
import { KlevuStorage } from "../utils/storage.js";
const url = "https://js.klevu.com/klevu-js-v1/klevu-js-api/";
export const STORAGE_KEY = "klevu-kmc-data";
export const STORAGE_TS_KEY = "klevu-kmc-data-ts";
const ONE_DAY = 86400000;
/**
* Fetches KMC settings from server. Caches data for a day.
*
* @category KlevuFetch
* @param ignoreCache If true, will ignore cache and fetch data from server
* @param cacheLength How long to cache data in milliseconds
* @returns
*/
export function KlevuKMCSettings(ignoreCache, cacheLength = ONE_DAY, overrideUrl = "") {
return __awaiter(this, void 0, void 0, function* () {
if (isBrowser() && window.localStorage && ignoreCache !== true) {
const ts = KlevuStorage.getItem(STORAGE_TS_KEY);
const res = KlevuStorage.getItem(STORAGE_KEY);
if (res && ts && new Date().getTime() - parseInt(ts, 10) < cacheLength) {
return JSON.parse(res);
}
}
const start = `${overrideUrl || url}${KlevuConfig.getDefault().apiKey}`;
const res = yield Promise.all([
get(`${start}.json`),
get(`${start}-banner.json`),
get(`${start}-maps.json`),
]);
const data = {
root: res[0],
banner: res[1],
maps: res[2],
};
if (isBrowser() && window.localStorage) {
KlevuStorage.setItem(STORAGE_KEY, JSON.stringify(data));
KlevuStorage.setItem(STORAGE_TS_KEY, new Date().getTime().toString());
}
return data;
});
}