UNPKG

@shangxueink/koishi-plugin-puppeteer-without-canvas

Version:
91 lines (90 loc) 4.89 kB
import puppeteer, { Browser, ConnectOptions, ElementHandle, GoToOptions, Page } from 'puppeteer-core'; import { Context, Schema, Service } from 'koishi'; import { SVG, SVGOptions } from './svg'; export * from './svg'; declare module 'koishi' { interface Context { puppeteer: Puppeteer; } } type RenderCallback = (page: Page, next: (handle?: ElementHandle) => Promise<string>) => Promise<string>; export declare function injectDefaultFont(page: Page, ctx: Context, config: Puppeteer.Config, fontDataUrl?: string): Promise<void>; declare class Puppeteer extends Service { config: Puppeteer.Config; static [Service.provide]: string; static inject: { required: string[]; optional: string[]; }; browser: Browser; executable: string; private browserWSEndpoint; private activePageCount; private activeContextCount; private isRestarting; private disposeKeepAlive; private originalBrowserMethods; private patchedBrowsers; private trackedPages; private trackedContexts; constructor(ctx: Context, config: Puppeteer.Config); private patchBrowser; private trackBrowserContext; private trackPage; private getFontCacheDir; private registerHtmlComponent; start(): Promise<void>; private startBrowser; stop(): Promise<void>; private stopBrowser; private startKeepAlive; private stopKeepAlive; private checkBrowserHealth; private restartBrowserSafely; private checkAndCloseBrowser; private ensureConnected; private getFontDataUrl; page: (options?: Puppeteer.PageOptions) => Promise<Page>; svg: (options?: SVGOptions) => Promise<SVG>; render: (content: string, callback?: RenderCallback) => Promise<string>; } declare namespace Puppeteer { export interface PageOptions { beforeGotoPage?: (page: Page) => Promise<void>; url: string; gotoOptions?: GoToOptions; content?: string; } export const filter = false; export const usage = "\n---\n\n\u672C\u63D2\u4EF6\u63D0\u4F9B\u6D4F\u89C8\u5668 API \u670D\u52A1\uFF0C\u4E3B\u8981\u7528\u4E8E\u7F51\u9875\u622A\u56FE\u3001\u751F\u6210\u56FE\u7247\u7B49\u529F\u80FD\u3002\n\n**\u91CD\u8981\u63D0\u793A\uFF1A**\n\n1. **\u6D4F\u89C8\u5668\u73AF\u5883\u8981\u6C42\uFF1A** \u4E3A\u786E\u4FDD\u63D2\u4EF6\u6B63\u5E38\u8FD0\u884C\uFF0C\u8BF7\u786E\u4FDD\u60A8\u7684\u7CFB\u7EDF\u5DF2\u5B89\u88C5 Chromium \u6D4F\u89C8\u5668\uFF0C\u6216\u5DF2\u914D\u7F6E\u8FDC\u7A0B\u6D4F\u89C8\u5668\u670D\u52A1\u3002\n2. **\u7248\u672C\u5339\u914D\uFF1A** \u5EFA\u8BAE\u4FDD\u6301 Chromium/Chrome \u6D4F\u89C8\u5668\u4E0E\u672C\u63D2\u4EF6\u540C\u6B65\u66F4\u65B0\uFF0C\u4EE5\u907F\u514D\u56E0\u7248\u672C\u4E0D\u5339\u914D\u5BFC\u81F4\u7684\u529F\u80FD\u5F02\u5E38\u3002\n3. **Windows \u7CFB\u7EDF\u517C\u5BB9\u6027\uFF1A** \u5982\u679C\u60A8\u5728 Windows \u670D\u52A1\u5668\u4E0A\u8FD0\u884C\uFF0C\u4E3A\u652F\u6301\u6700\u65B0\u7248 Puppeteer \u53CA\u5176\u6346\u7ED1\u7684 Chromium\uFF0C\u60A8\u7684\u64CD\u4F5C\u7CFB\u7EDF\u81F3\u5C11\u9700\u8981\u662F **Windows Server 2016 \u6216\u66F4\u9AD8\u7248\u672C**\u3002\n\n\u6CE8\u610F\uFF1A Windows Server 2012 R2 \u53CA\u66F4\u65E9\u7248\u672C\u5DF2\u65E0\u6CD5\u6EE1\u8DB3\u6700\u65B0 Chrome \u7684\u8FD0\u884C\u8981\u6C42\u3002\n\n---\n\n\n**\u670D\u52A1\u4F9D\u8D56\uFF1A**\n\n- **\u5FC5\u9700\u670D\u52A1\uFF1A** http\uFF08\u81EA\u5E26\u670D\u52A1\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\uFF09\n- **\u53EF\u9009\u670D\u52A1\uFF1A** [glyph](/market?keyword=glyph) - \u7528\u4E8E\u5B57\u4F53\u6CE8\u5165\u529F\u80FD\uFF08\u542F\u7528\u5B57\u4F53\u6CE8\u5165\u65F6\u9700\u8981\uFF09\n\n---\n\n<p>\u27A3 <a href=\"https://github.com/shangxueink/koishi-plugin-puppeteer-without-canvas\" target=\"_blank\">\u70B9\u6211\u524D\u5F80\u9879\u76EE\u5730\u5740</a></p>\n\n---\n "; type LaunchOptions = Parameters<typeof puppeteer.launch>[0] & {}; export type ImageType = 'png' | 'jpeg' | 'webp'; export interface Config extends LaunchOptions, ConnectOptions { enablePuppeteer?: boolean; enableCanvas?: boolean; registerHtmlComponent?: boolean; enableRestartCommand?: boolean; remote?: boolean; endpoint?: string; headers?: Record<string, string>; enableReconnect?: boolean; reconnectInterval?: number; maxReconnectRetries?: number; immediateClose?: boolean; enableKeepAlive?: boolean; keepAliveInterval?: number; enableFont?: boolean; fontName?: string; fontInjectMode?: 'force' | 'smart'; enableTempUserDataDir?: boolean; TempUserDataDir?: string; defaultTimeout?: number; render?: { type?: ImageType; quality?: number; }; } export const Config: Schema<Config>; export {}; } export default Puppeteer;