import { Storage } from "@plasmohq/storage"; import type { WebHistory } from "./interfaces"; export const emptyArr: any[] = []; export const initQueues = async (tabId: number) => { const storage = new Storage({ area: "local" }); const urlQueueListObj: any = await storage.get("urlQueueList"); const timeQueueListObj: any = await storage.get("timeQueueList"); if (!urlQueueListObj && !timeQueueListObj) { await storage.set("urlQueueList", { urlQueueList: [{ tabsessionId: tabId, urlQueue: [] }], }); await storage.set("timeQueueList", { timeQueueList: [{ tabsessionId: tabId, timeQueue: [] }], }); return; } if (urlQueueListObj.urlQueueList && timeQueueListObj.timeQueueList) { const isUrlQueueThere = urlQueueListObj.urlQueueList.find( (data: WebHistory) => data.tabsessionId === tabId ); const isTimeQueueThere = timeQueueListObj.timeQueueList.find( (data: WebHistory) => data.tabsessionId === tabId ); if (!isUrlQueueThere) { urlQueueListObj.urlQueueList.push({ tabsessionId: tabId, urlQueue: [] }); await storage.set("urlQueueList", { urlQueueList: urlQueueListObj.urlQueueList, }); } if (!isTimeQueueThere) { timeQueueListObj.timeQueueList.push({ tabsessionId: tabId, timeQueue: [], }); await storage.set("timeQueueList", { timeQueueList: timeQueueListObj.timeQueueList, }); } return; } }; export function getRenderedHtml() { return { url: window.location.href, entryTime: Date.now(), title: document.title, renderedHtml: document.documentElement.outerHTML, }; } export const initWebHistory = async (tabId: number) => { const storage = new Storage({ area: "local" }); const result: any = await storage.get("webhistory"); if (result === undefined) { await storage.set("webhistory", { webhistory: emptyArr }); return; } const ifIdExists = result.webhistory.find((data: WebHistory) => data.tabsessionId === tabId); if (ifIdExists === undefined) { const webHistory = result.webhistory; const initData = { tabsessionId: tabId, tabHistory: emptyArr, }; webHistory.push(initData); try { await storage.set("webhistory", { webhistory: webHistory }); return; } catch (error) { console.log(error); } } else { return; } }; export function toIsoString(date: Date) { var tzo = -date.getTimezoneOffset(), dif = tzo >= 0 ? "+" : "-", pad = (num: number) => (num < 10 ? "0" : "") + num; return ( date.getFullYear() + "-" + pad(date.getMonth() + 1) + "-" + pad(date.getDate()) + "T" + pad(date.getHours()) + ":" + pad(date.getMinutes()) + ":" + pad(date.getSeconds()) + dif + pad(Math.floor(Math.abs(tzo) / 60)) + ":" + pad(Math.abs(tzo) % 60) ); } export const webhistoryToLangChainDocument = (tabId: number, tabHistory: any[]) => { const toSaveFinally = []; for (let j = 0; j < tabHistory.length; j++) { const mtadata = { BrowsingSessionId: `${tabId}`, VisitedWebPageURL: `${tabHistory[j].url}`, VisitedWebPageTitle: `${tabHistory[j].title}`, VisitedWebPageDateWithTimeInISOString: `${toIsoString(new Date(tabHistory[j].entryTime))}`, VisitedWebPageReffererURL: `${tabHistory[j].reffererUrl}`, VisitedWebPageVisitDurationInMilliseconds: tabHistory[j].duration, }; toSaveFinally.push({ metadata: mtadata, pageContent: tabHistory[j].pageContentMarkdown, }); } return toSaveFinally; };