t-comm
Version:
专业、稳定、纯粹的工具库
191 lines (187 loc) • 5.69 kB
JavaScript
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 };