{"version":3,"file":"session.mjs","names":[],"sources":["../../src/renderer/session/index.ts"],"sourcesContent":["/**\n * Renderer process API for session module\n */\n\nimport type {\n  SessionClearStorageDataOptions,\n  SessionClearDataOptions,\n  SessionSetUserAgentOptions,\n  SessionWillDownloadEventData,\n  SessionDownloadProgressData,\n  SessionDownloadDoneData,\n} from \"@shared/session.types.js\";\n\n// ============================================================================\n// Download Management\n// ============================================================================\n\n/**\n * Set the download saving directory\n */\nexport async function setDownloadPath(path: string): Promise<void> {\n  await window.rpc.call(\"session.setDownloadPath\", path);\n}\n\n/**\n * Initiate a download of the resource at url\n * @returns The URL being downloaded\n */\nexport async function downloadURL(url: string): Promise<string> {\n  return (await window.rpc.call(\"session.downloadURL\", url)) as string;\n}\n\n/**\n * Download item operations\n */\nexport const item = {\n  /**\n   * Pause the download\n   */\n  pause: (id: string): Promise<void> => window.rpc.call(\"session.item.pause\", id) as Promise<void>,\n\n  /**\n   * Resume the download\n   */\n  resume: (id: string): Promise<void> =>\n    window.rpc.call(\"session.item.resume\", id) as Promise<void>,\n\n  /**\n   * Cancel the download\n   */\n  cancel: (id: string): Promise<void> =>\n    window.rpc.call(\"session.item.cancel\", id) as Promise<void>,\n\n  /**\n   * Set the save path for the download\n   */\n  setSavePath: (id: string, path: string): Promise<void> =>\n    window.rpc.call(\"session.item.setSavePath\", id, path) as Promise<void>,\n};\n\n/**\n * Listen for download start events\n * Note: Event name includes session hash for multi-instance support\n */\nexport function onWillDownload(\n  callback: (data: SessionWillDownloadEventData) => void,\n  sessionHash?: string,\n): () => void {\n  const event = sessionHash ? `session.${sessionHash}.will-download` : \"session.will-download\";\n  return window.rpc.on(event, (...args: unknown[]) => {\n    const [data] = args as [SessionWillDownloadEventData];\n    callback(data);\n  });\n}\n\n/**\n * Listen for download progress events\n */\nexport function onDownloadProgress(\n  callback: (data: SessionDownloadProgressData) => void,\n  sessionHash?: string,\n): () => void {\n  const event = sessionHash\n    ? `session.${sessionHash}.download-progress`\n    : \"session.download-progress\";\n  return window.rpc.on(event, (...args: unknown[]) => {\n    const [data] = args as [SessionDownloadProgressData];\n    callback(data);\n  });\n}\n\n/**\n * Listen for download completion events\n */\nexport function onDownloadDone(\n  callback: (data: SessionDownloadDoneData) => void,\n  sessionHash?: string,\n): () => void {\n  const event = sessionHash ? `session.${sessionHash}.download-done` : \"session.download-done\";\n  return window.rpc.on(event, (...args: unknown[]) => {\n    const [data] = args as [SessionDownloadDoneData];\n    callback(data);\n  });\n}\n\n// ============================================================================\n// Cache Management\n// ============================================================================\n\n/**\n * Get the session's current cache size in bytes\n */\nexport async function getCacheSize(): Promise<number> {\n  return (await window.rpc.call(\"session.getCacheSize\")) as number;\n}\n\n/**\n * Clear the session's HTTP cache\n */\nexport async function clearCache(): Promise<void> {\n  await window.rpc.call(\"session.clearCache\");\n}\n\n// ============================================================================\n// Storage Management\n// ============================================================================\n\n/**\n * Clears storage data for the session\n */\nexport async function clearStorageData(options?: SessionClearStorageDataOptions): Promise<void> {\n  await window.rpc.call(\"session.clearStorageData\", options);\n}\n\n/**\n * Clears various different types of data\n */\nexport async function clearData(options?: SessionClearDataOptions): Promise<void> {\n  await window.rpc.call(\"session.clearData\", options);\n}\n\n/**\n * Get the file system path where session data is persisted\n */\nexport async function getStoragePath(): Promise<string | null> {\n  return (await window.rpc.call(\"session.getStoragePath\")) as string | null;\n}\n\n/**\n * Check if the session is persistent\n */\nexport async function isPersistent(): Promise<boolean> {\n  return (await window.rpc.call(\"session.isPersistent\")) as boolean;\n}\n\n// ============================================================================\n// User Agent\n// ============================================================================\n\n/**\n * Get the user agent for this session\n */\nexport async function getUserAgent(): Promise<string> {\n  return (await window.rpc.call(\"session.getUserAgent\")) as string;\n}\n\n/**\n * Override the user agent for this session\n */\nexport async function setUserAgent(options: SessionSetUserAgentOptions): Promise<void> {\n  await window.rpc.call(\"session.setUserAgent\", options);\n}\n\n// ============================================================================\n// Session Identification\n// ============================================================================\n\n/**\n * Get the session hash used for event names\n */\nexport async function getSessionHash(): Promise<string> {\n  return (await window.rpc.call(\"session.getSessionHash\")) as string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoBA,eAAsB,gBAAgB,MAA6B;AACjE,OAAM,OAAO,IAAI,KAAK,2BAA2B,KAAK;;;;;;AAOxD,eAAsB,YAAY,KAA8B;AAC9D,QAAQ,MAAM,OAAO,IAAI,KAAK,uBAAuB,IAAI;;;;;AAM3D,MAAa,OAAO;CAIlB,QAAQ,OAA8B,OAAO,IAAI,KAAK,sBAAsB,GAAG;CAK/E,SAAS,OACP,OAAO,IAAI,KAAK,uBAAuB,GAAG;CAK5C,SAAS,OACP,OAAO,IAAI,KAAK,uBAAuB,GAAG;CAK5C,cAAc,IAAY,SACxB,OAAO,IAAI,KAAK,4BAA4B,IAAI,KAAK;CACxD;;;;;AAMD,SAAgB,eACd,UACA,aACY;CACZ,MAAM,QAAQ,cAAc,WAAW,YAAY,kBAAkB;AACrE,QAAO,OAAO,IAAI,GAAG,QAAQ,GAAG,SAAoB;EAClD,MAAM,CAAC,QAAQ;AACf,WAAS,KAAK;GACd;;;;;AAMJ,SAAgB,mBACd,UACA,aACY;CACZ,MAAM,QAAQ,cACV,WAAW,YAAY,sBACvB;AACJ,QAAO,OAAO,IAAI,GAAG,QAAQ,GAAG,SAAoB;EAClD,MAAM,CAAC,QAAQ;AACf,WAAS,KAAK;GACd;;;;;AAMJ,SAAgB,eACd,UACA,aACY;CACZ,MAAM,QAAQ,cAAc,WAAW,YAAY,kBAAkB;AACrE,QAAO,OAAO,IAAI,GAAG,QAAQ,GAAG,SAAoB;EAClD,MAAM,CAAC,QAAQ;AACf,WAAS,KAAK;GACd;;;;;AAUJ,eAAsB,eAAgC;AACpD,QAAQ,MAAM,OAAO,IAAI,KAAK,uBAAuB;;;;;AAMvD,eAAsB,aAA4B;AAChD,OAAM,OAAO,IAAI,KAAK,qBAAqB;;;;;AAU7C,eAAsB,iBAAiB,SAAyD;AAC9F,OAAM,OAAO,IAAI,KAAK,4BAA4B,QAAQ;;;;;AAM5D,eAAsB,UAAU,SAAkD;AAChF,OAAM,OAAO,IAAI,KAAK,qBAAqB,QAAQ;;;;;AAMrD,eAAsB,iBAAyC;AAC7D,QAAQ,MAAM,OAAO,IAAI,KAAK,yBAAyB;;;;;AAMzD,eAAsB,eAAiC;AACrD,QAAQ,MAAM,OAAO,IAAI,KAAK,uBAAuB;;;;;AAUvD,eAAsB,eAAgC;AACpD,QAAQ,MAAM,OAAO,IAAI,KAAK,uBAAuB;;;;;AAMvD,eAAsB,aAAa,SAAoD;AACrF,OAAM,OAAO,IAAI,KAAK,wBAAwB,QAAQ;;;;;AAUxD,eAAsB,iBAAkC;AACtD,QAAQ,MAAM,OAAO,IAAI,KAAK,yBAAyB"}