| 1 | import puppeteer from "@cloudflare/puppeteer"; |
| 2 | import type { AsyncWorkerEnv } from "./stack.ts"; |
| 3 | |
| 4 | const TARGET_URL = "https://example.com"; |
| 5 | |
| 6 | export default { |
| 7 | async fetch(request: Request, env: AsyncWorkerEnv): Promise<Response> { |
| 8 | const url = new URL(request.url); |
| 9 | if (url.pathname !== "/title") { |
| 10 | return new Response("ok"); |
| 11 | } |
| 12 | |
| 13 | const browser = await puppeteer.launch(env.BROWSER as any); |
| 14 | try { |
| 15 | const page = await browser.newPage(); |
| 16 | await page.goto(TARGET_URL, { waitUntil: "networkidle0" }); |
| 17 | const title = await page.title(); |
| 18 | return Response.json({ mode: "async", title }); |
| 19 | } finally { |
| 20 | await browser.close(); |
| 21 | } |
| 22 | }, |
| 23 | }; |