UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

191 lines (187 loc) 5.69 kB
import { b as __awaiter, c as __generator, a as __spreadArray } from './tslib.es6-096fffdd.js'; // eslint-disable-next-line @typescript-eslint/naming-convention var DEVICE_TYPE; (function (DEVICE_TYPE) { DEVICE_TYPE["PC"] = "PC"; DEVICE_TYPE["MOBILE_HOR"] = "MOBILE_HORPC"; DEVICE_TYPE["MOBILE_VERT"] = "MOBILE_VERT"; })(DEVICE_TYPE || (DEVICE_TYPE = {})); function initBrowser(_a) { var puppeteer = _a.puppeteer, _b = _a.args, args = _b === void 0 ? [] : _b, _c = _a.headless, headless = _c === void 0 ? true : _c, _d = _a.devtools, devtools = _d === void 0 ? true : _d; return __awaiter(this, void 0, void 0, function () { var defaultArgs, type, isLinux, launchArgs, browser; return __generator(this, function (_e) { switch (_e.label) { case 0: defaultArgs = ['--disable-setuid-sandbox']; type = require('os').type(); isLinux = type == 'Linux'; if (isLinux) { defaultArgs.push('--no-sandbox'); } launchArgs = { headless: headless, devtools: devtools, args: __spreadArray(__spreadArray([], defaultArgs, true), args, true) }; return [4 /*yield*/, puppeteer.launch(launchArgs)]; case 1: browser = _e.sent(); return [2 /*return*/, browser]; } }); }); } function getNewPage(browser, device) { return __awaiter(this, void 0, void 0, function () { var page; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, browser.newPage()]; case 1: page = _a.sent(); if (!(device === DEVICE_TYPE.MOBILE_VERT)) return [3 /*break*/, 3]; // await page.emulate(puppeteer.devices['iPhone 11']); return [4 /*yield*/, page.setViewport({ width: 414, height: 736, isMobile: true })]; case 2: // await page.emulate(puppeteer.devices['iPhone 11']); _a.sent(); return [3 /*break*/, 5]; case 3: if (!(device === DEVICE_TYPE.MOBILE_HOR)) return [3 /*break*/, 5]; return [4 /*yield*/, page.setViewport({ width: 736, height: 414, isMobile: true })]; case 4: _a.sent(); _a.label = 5; case 5: return [2 /*return*/, page]; } }); }); } var openedPageList = new Set(); function openOrFindPage(browser, href, device) { return __awaiter(this, void 0, void 0, function () { var page, target; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!openedPageList.has(href)) return [3 /*break*/, 5]; _a.label = 1; case 1: _a.trys.push([1, 4,, 5]); return [4 /*yield*/, browser.waitForTarget(function (t) { return t.url().includes(href); }, { timeout: 2000 })]; case 2: target = _a.sent(); return [4 /*yield*/, target.page()]; case 3: page = _a.sent(); return [2 /*return*/, page]; case 4: _a.sent(); return [3 /*break*/, 5]; case 5: return [4 /*yield*/, getNewPage(browser, device)]; case 6: page = _a.sent(); return [4 /*yield*/, page["goto"](href)]; case 7: _a.sent(); openedPageList.add(href); return [2 /*return*/, page]; } }); }); } function setUserAgent(useragent, page) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, page.setUserAgent(useragent)]; case 1: _a.sent(); return [4 /*yield*/, page.evaluate(function () { return location.reload(); })]; case 2: _a.sent(); return [4 /*yield*/, page.waitForNavigation()]; case 3: _a.sent(); return [2 /*return*/]; } }); }); } function setSessionStorage(key, value, page) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, page.evaluate(function (_a) { var key = _a.key, value = _a.value; sessionStorage.setItem(key, value); }, { key: key, value: value })]; case 1: _a.sent(); return [2 /*return*/]; } }); }); } function setRoute(page, route) { if (route === void 0) { route = '/'; } return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!page) return [2 /*return*/]; // @ts-ignore return [4 /*yield*/, page.evaluate(function (route) { return window.app.$router.push(route); }, route)]; case 1: // @ts-ignore _a.sent(); return [2 /*return*/]; } }); }); } var page = /*#__PURE__*/Object.freeze({ __proto__: null, get DEVICE_TYPE () { return DEVICE_TYPE; }, initBrowser: initBrowser, getNewPage: getNewPage, openOrFindPage: openOrFindPage, setUserAgent: setUserAgent, setSessionStorage: setSessionStorage, setRoute: setRoute }); export { DEVICE_TYPE as D, setSessionStorage as a, setRoute as b, getNewPage as g, initBrowser as i, openOrFindPage as o, page as p, setUserAgent as s };