{"version":3,"sources":["../src/serviceWorker.ts"],"sourcesContent":["export type ServiceWorkerOptions = {\n  firebaseConfig: Record<string, any>;\n  scope?: string;\n  updateViaCache?: 'imports' | 'all' | 'none';\n  domain?: string;\n  isTernSecureDev?: boolean;\n  localPort?: string;\n};\n\nconst getUrlEndpoint = (): string => {\n    const isLocalhost = window.location.hostname === 'localhost';\n    return isLocalhost ? 'http://localhost:3000' : `${window.location.origin}`;\n  }\n\nconst getServiceWorkerUrl = (options: ServiceWorkerOptions): string => {\n  const { firebaseConfig, domain, isTernSecureDev, localPort } = options;\n  const serializedConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n  \n  let baseUrl: string;\n  \n  if (isTernSecureDev) {\n    const localHost = process.env.TERN_UI_HOST || 'localhost';\n    const port = localPort || process.env.TERN_UI_PORT || '3000';\n    baseUrl = `http://${localHost}:${port}`;\n  } else {\n    baseUrl = domain || getUrlEndpoint();\n  }\n  \n  return `${baseUrl}/service-worker.js?firebaseConfig=${serializedConfig}`;\n};\n\nexport const reg = (opt: ServiceWorkerOptions) => {\n  const { firebaseConfig } = opt;\n  if (\"serviceWorker\" in navigator) {\n    encodeURIComponent(JSON.stringify(firebaseConfig));\n    const serviceWorkerUrl = getServiceWorkerUrl(opt);\n    \n    navigator.serviceWorker\n    .register(serviceWorkerUrl)\n    .then((registration) => console.log(\"scope is: \", registration.scope));\n  }\n}\n\nexport const registerServiceWorker = async (options: ServiceWorkerOptions): Promise<ServiceWorkerRegistration | null> => {\n  if (!('serviceWorker' in navigator)) {\n    console.warn('[ServiceWorker] Service workers are not supported');\n    return null;\n  }\n\n  const { scope = '/', updateViaCache = 'imports' } = options;\n\n  try {\n    const serviceWorkerUrl = getServiceWorkerUrl(options);\n    \n    const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n      scope,\n      updateViaCache,\n    });\n\n    console.log('[ServiceWorker] Registration successful:', registration);\n    return registration;\n  } catch (error) {\n    console.error('[ServiceWorker] Registration failed:', error);\n    throw new Error(`Failed to register service worker: ${error}`);\n  }\n};\n\nexport const unregisterServiceWorker = async (): Promise<boolean> => {\n  if (!('serviceWorker' in navigator)) {\n    return false;\n  }\n\n  try {\n    const registrations = await navigator.serviceWorker.getRegistrations();\n    const unregisterPromises = registrations.map(registration => registration.unregister());\n    \n    await Promise.all(unregisterPromises);\n    console.log('[ServiceWorker] All service workers unregistered');\n    return true;\n  } catch (error) {\n    console.error('[ServiceWorker] Failed to unregister service workers:', error);\n    return false;\n  }\n};"],"mappings":";AASA,IAAM,iBAAiB,MAAc;AACjC,QAAM,cAAc,OAAO,SAAS,aAAa;AACjD,SAAO,cAAc,0BAA0B,GAAG,OAAO,SAAS,MAAM;AAC1E;AAEF,IAAM,sBAAsB,CAAC,YAA0C;AACrE,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,UAAU,IAAI;AAC/D,QAAM,mBAAmB,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAE1E,MAAI;AAEJ,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,OAAO,aAAa,QAAQ,IAAI,gBAAgB;AACtD,cAAU,UAAU,SAAS,IAAI,IAAI;AAAA,EACvC,OAAO;AACL,cAAU,UAAU,eAAe;AAAA,EACrC;AAEA,SAAO,GAAG,OAAO,qCAAqC,gBAAgB;AACxE;AAEO,IAAM,MAAM,CAAC,QAA8B;AAChD,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,mBAAmB,WAAW;AAChC,uBAAmB,KAAK,UAAU,cAAc,CAAC;AACjD,UAAM,mBAAmB,oBAAoB,GAAG;AAEhD,cAAU,cACT,SAAS,gBAAgB,EACzB,KAAK,CAAC,iBAAiB,QAAQ,IAAI,cAAc,aAAa,KAAK,CAAC;AAAA,EACvE;AACF;AAEO,IAAM,wBAAwB,OAAO,YAA6E;AACvH,MAAI,EAAE,mBAAmB,YAAY;AACnC,YAAQ,KAAK,mDAAmD;AAChE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,KAAK,iBAAiB,UAAU,IAAI;AAEpD,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,kBAAkB;AAAA,MAC5E;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,4CAA4C,YAAY;AACpE,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,wCAAwC,KAAK;AAC3D,UAAM,IAAI,MAAM,sCAAsC,KAAK,EAAE;AAAA,EAC/D;AACF;AAEO,IAAM,0BAA0B,YAA8B;AACnE,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,iBAAiB;AACrE,UAAM,qBAAqB,cAAc,IAAI,kBAAgB,aAAa,WAAW,CAAC;AAEtF,UAAM,QAAQ,IAAI,kBAAkB;AACpC,YAAQ,IAAI,kDAAkD;AAC9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAC5E,WAAO;AAAA,EACT;AACF;","names":[]}