@datawheel/bespoke 0.6.0-rc.6 → 0.6.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/server.js +19 -19
  2. package/package.json +2 -1
package/dist/server.js CHANGED
@@ -26,6 +26,7 @@ import * as allIcons from '@tabler/icons-react';
26
26
  import NextCors from 'nextjs-cors';
27
27
  import imageType from 'image-type';
28
28
  import formidable from 'formidable';
29
+ import { BrowserPool, PlaywrightPlugin } from '@crawlee/browser-pool';
29
30
  import { chromium } from 'playwright-chromium';
30
31
  import DomParser from 'dom-parser';
31
32
  import path from 'path';
@@ -4260,35 +4261,34 @@ var minimal_args = [
4260
4261
  "--no-sandbox"
4261
4262
  ];
4262
4263
  var TIME = "playwright";
4263
- async function generateImage(path2, section, format = "png", transparent = false) {
4264
- const width = 1366;
4265
- const height = 768;
4266
- const maxTimeoutPerPage = 0;
4267
- console.time(TIME);
4268
- try {
4269
- const browser = await chromium.launch({
4270
- executablePath: process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,
4264
+ var width = 1366;
4265
+ var height = 768;
4266
+ var browserPool = new BrowserPool({
4267
+ browserPlugins: [new PlaywrightPlugin(chromium, {
4268
+ launchOptions: {
4269
+ headless: true,
4270
+ excecutablePath: process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,
4271
4271
  args: [
4272
4272
  `--window-size=${width},${height}`,
4273
4273
  ...minimal_args
4274
- ]
4275
- });
4276
- const context = await browser.newContext({
4274
+ ],
4277
4275
  viewport: { width, height },
4278
4276
  deviceScaleFactor: 2
4279
- });
4277
+ }
4278
+ })]
4279
+ });
4280
+ async function generateImage(path2, section, format = "png", transparent = false) {
4281
+ console.time(TIME);
4282
+ try {
4280
4283
  console.timeLog(TIME, "Browser started");
4281
4284
  const url = new URL(path2);
4282
4285
  const searchParams = new URLSearchParams(url.search);
4283
4286
  url.search = searchParams.toString();
4284
- const page = await context.newPage();
4287
+ const page = await browserPool.newPage();
4285
4288
  console.timeLog(TIME, "Creating page");
4286
- await page.addStyleTag({ content: ".bespoke-Section-container{ padding: 1rem !important }" });
4287
4289
  console.timeLog(TIME, "Setting request interceptor");
4288
- await page.goto(url.toString(), { timeout: maxTimeoutPerPage });
4290
+ await page.goto(url.toString());
4289
4291
  console.timeLog(TIME, "Navigated to page");
4290
- await page.waitForSelector("#bespoke-report", { timeout: maxTimeoutPerPage });
4291
- console.timeLog(TIME, "Selector detected");
4292
4292
  await page.waitForLoadState("networkidle");
4293
4293
  if (transparent) {
4294
4294
  await page.$eval(`.bespoke-Section-${section}`, (el) => el["style"].background = "transparent");
@@ -4300,7 +4300,7 @@ async function generateImage(path2, section, format = "png", transparent = false
4300
4300
  const svg = await element?.evaluate((el) => el.outerHTML);
4301
4301
  console.timeLog(TIME, "Finishing SVG");
4302
4302
  console.timeEnd(TIME);
4303
- await browser.close();
4303
+ await page.close();
4304
4304
  return svg?.replace(/ {4}|[\t\n\r]/gm, "");
4305
4305
  } else {
4306
4306
  const element = await page.$(".bespoke-Section-container");
@@ -4310,7 +4310,7 @@ async function generateImage(path2, section, format = "png", transparent = false
4310
4310
  });
4311
4311
  console.timeLog(TIME, "Finishing PNG");
4312
4312
  console.timeEnd(TIME);
4313
- await browser.close();
4313
+ await page.close();
4314
4314
  return screenshot;
4315
4315
  }
4316
4316
  } catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datawheel/bespoke",
3
- "version": "0.6.0-rc.6",
3
+ "version": "0.6.0-rc.7",
4
4
  "description": "Content management system for creating automated data reports",
5
5
  "exports": {
6
6
  ".": {
@@ -40,6 +40,7 @@
40
40
  "homepage": "https://github.com/Datawheel/reports#readme",
41
41
  "dependencies": {
42
42
  "@auth0/nextjs-auth0": "^3.5.0",
43
+ "@crawlee/browser-pool": "^3.10.2",
43
44
  "@emotion/react": "^11.10.4",
44
45
  "@hello-pangea/dnd": "16.3.0",
45
46
  "@mantine/core": "^6.0.19",