import { generateSuite, getSuite, planSuite } from '../src/api/client'; // Background Service Worker —— 唯一出网口(生成 / 规划 / 轮询任务,绕 CORS) export default defineBackground(() => { console.log('[电商套图工作台] background started'); // 点击扩展图标 → 开关当前商品页的悬浮面板(页面无 content script 时忽略) chrome.action.onClicked.addListener(async (tab) => { if (tab.id == null) return; try { await chrome.tabs.sendMessage(tab.id, { action: 'toggle-suite-panel' }); } catch { // 非四站点页面,未注入面板 } }); chrome.runtime.onMessage.addListener((msg, _sender, sendResponse) => { if (msg?.action === 'generateSuite') { generateSuite(msg.baseUrl, msg.token, msg.payload) .then((data) => sendResponse({ ok: true, data })) .catch((err) => sendResponse({ ok: false, error: err instanceof Error ? err.message : String(err) })); return true; } if (msg?.action === 'planSuite') { planSuite(msg.baseUrl, msg.token, msg.payload) .then((data) => sendResponse({ ok: true, data })) .catch((err) => sendResponse({ ok: false, error: err instanceof Error ? err.message : String(err) })); return true; } if (msg?.action === 'getSuite') { getSuite(msg.baseUrl, msg.token, msg.suiteId) .then((data) => sendResponse({ ok: true, data })) .catch((err) => sendResponse({ ok: false, error: err instanceof Error ? err.message : String(err) })); return true; } // 通用文本代理:采集引擎拉跨域资源(1688 详情 CDN / mtop API) if (msg?.action === 'fetchText') { const headers: Record = {}; if (msg.referer) headers['Referer'] = msg.referer; fetch(msg.url, { headers, credentials: msg.credentials ? 'include' : 'omit', }) .then(async (res) => { if (!res.ok) throw new Error(`HTTP ${res.status}`); sendResponse({ ok: true, text: await res.text() }); }) .catch((err) => sendResponse({ ok: false, error: err instanceof Error ? err.message : String(err) })); return true; } return false; }); });