UNPKG

@swrve/smarttv-sdk

Version:

Swrve marketing engagement platform SDK for SmartTV OTT devices

46 lines (38 loc) 1.07 kB
import MD5 from 'crypto-js/md5'; import MD5Worker from 'worker-loader?inline=true&fallback=false!./md5.worker'; let globalMsgId = 0; const resolves: { [index: string]: (result: string) => void } = {}; let worker: Worker; if ("Worker" in window) { worker = new MD5Worker(); worker.onmessage = handleMessage; } function handleMessage(ev: MessageEvent): void { const {id, payload} = ev.data; const resolve = resolves[id]; if (resolve) { resolve(payload); } delete resolves[id]; } function sendMessage(payload: string): Promise<string> { const msgId = globalMsgId++; const msg = { id: msgId, payload, }; return new Promise((resolve, reject) => { resolves[msgId] = resolve; worker.postMessage(msg); }); } export function md5Sync(payload: string): string { return MD5(payload).toString(); } export function md5Async(payload: string): Promise<string> { if (worker) { return sendMessage(payload); } else { return Promise.resolve(md5Sync(payload)); } }