@datawheel/bespoke 0.6.0-rc.5 → 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 -18
  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,34 +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({
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,
4270
4271
  args: [
4271
4272
  `--window-size=${width},${height}`,
4272
4273
  ...minimal_args
4273
- ]
4274
- });
4275
- const context = await browser.newContext({
4274
+ ],
4276
4275
  viewport: { width, height },
4277
4276
  deviceScaleFactor: 2
4278
- });
4277
+ }
4278
+ })]
4279
+ });
4280
+ async function generateImage(path2, section, format = "png", transparent = false) {
4281
+ console.time(TIME);
4282
+ try {
4279
4283
  console.timeLog(TIME, "Browser started");
4280
4284
  const url = new URL(path2);
4281
4285
  const searchParams = new URLSearchParams(url.search);
4282
4286
  url.search = searchParams.toString();
4283
- const page = await context.newPage();
4287
+ const page = await browserPool.newPage();
4284
4288
  console.timeLog(TIME, "Creating page");
4285
- await page.addStyleTag({ content: ".bespoke-Section-container{ padding: 1rem !important }" });
4286
4289
  console.timeLog(TIME, "Setting request interceptor");
4287
- await page.goto(url.toString(), { timeout: maxTimeoutPerPage });
4290
+ await page.goto(url.toString());
4288
4291
  console.timeLog(TIME, "Navigated to page");
4289
- await page.waitForSelector("#bespoke-report", { timeout: maxTimeoutPerPage });
4290
- console.timeLog(TIME, "Selector detected");
4291
4292
  await page.waitForLoadState("networkidle");
4292
4293
  if (transparent) {
4293
4294
  await page.$eval(`.bespoke-Section-${section}`, (el) => el["style"].background = "transparent");
@@ -4299,7 +4300,7 @@ async function generateImage(path2, section, format = "png", transparent = false
4299
4300
  const svg = await element?.evaluate((el) => el.outerHTML);
4300
4301
  console.timeLog(TIME, "Finishing SVG");
4301
4302
  console.timeEnd(TIME);
4302
- await browser.close();
4303
+ await page.close();
4303
4304
  return svg?.replace(/ {4}|[\t\n\r]/gm, "");
4304
4305
  } else {
4305
4306
  const element = await page.$(".bespoke-Section-container");
@@ -4309,7 +4310,7 @@ async function generateImage(path2, section, format = "png", transparent = false
4309
4310
  });
4310
4311
  console.timeLog(TIME, "Finishing PNG");
4311
4312
  console.timeEnd(TIME);
4312
- await browser.close();
4313
+ await page.close();
4313
4314
  return screenshot;
4314
4315
  }
4315
4316
  } catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datawheel/bespoke",
3
- "version": "0.6.0-rc.5",
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",