@datawheel/bespoke 0.6.0-rc.3 → 0.6.0-rc.4
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.
- package/dist/server.js +18 -8
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -27,7 +27,7 @@ import NextCors from 'nextjs-cors';
|
|
|
27
27
|
import imageType from 'image-type';
|
|
28
28
|
import formidable from 'formidable';
|
|
29
29
|
import puppeteer from 'puppeteer-core';
|
|
30
|
-
import
|
|
30
|
+
import puppeteer2 from 'puppeteer';
|
|
31
31
|
import DomParser from 'dom-parser';
|
|
32
32
|
import path from 'path';
|
|
33
33
|
import axiosRetry from 'axios-retry';
|
|
@@ -4329,8 +4329,6 @@ function endpointDownloadReport() {
|
|
|
4329
4329
|
}
|
|
4330
4330
|
});
|
|
4331
4331
|
}
|
|
4332
|
-
chromium.setHeadlessMode = true;
|
|
4333
|
-
chromium.setGraphicsMode = false;
|
|
4334
4332
|
var minimal_args = [
|
|
4335
4333
|
"--autoplay-policy=user-gesture-required",
|
|
4336
4334
|
"--disable-background-networking",
|
|
@@ -4378,22 +4376,23 @@ async function generateImage(path2, section, format = "png", transparent = false
|
|
|
4378
4376
|
const width = 1366;
|
|
4379
4377
|
const height = 768;
|
|
4380
4378
|
const maxTimeoutPerPage = 0;
|
|
4379
|
+
console.time("puppeteer");
|
|
4381
4380
|
try {
|
|
4382
|
-
const browser = await
|
|
4381
|
+
const browser = await puppeteer2.launch({
|
|
4383
4382
|
args: [
|
|
4384
4383
|
`--window-size=${width},${height}`,
|
|
4385
|
-
...minimal_args
|
|
4386
|
-
...chromium.args
|
|
4384
|
+
...minimal_args
|
|
4387
4385
|
],
|
|
4388
4386
|
defaultViewport: { width, height, deviceScaleFactor: 2 },
|
|
4389
4387
|
ignoreHTTPSErrors: true,
|
|
4390
|
-
|
|
4391
|
-
headless: chromium.headless
|
|
4388
|
+
headless: true
|
|
4392
4389
|
});
|
|
4390
|
+
console.timeLog("puppeteer", "Browser started");
|
|
4393
4391
|
const url = new URL(path2);
|
|
4394
4392
|
const searchParams = new URLSearchParams(url.search);
|
|
4395
4393
|
url.search = searchParams.toString();
|
|
4396
4394
|
const page = await browser.newPage();
|
|
4395
|
+
console.timeLog("puppeteer", "Creating page");
|
|
4397
4396
|
await page.addStyleTag({ content: ".bespoke-Section-container{ padding: 1rem !important }" });
|
|
4398
4397
|
await page.setRequestInterception(true);
|
|
4399
4398
|
page.on("request", (request) => {
|
|
@@ -4404,15 +4403,22 @@ async function generateImage(path2, section, format = "png", transparent = false
|
|
|
4404
4403
|
request.continue();
|
|
4405
4404
|
}
|
|
4406
4405
|
});
|
|
4406
|
+
console.timeLog("puppeteer", "Setting request interceptor");
|
|
4407
4407
|
await page.goto(url.toString(), { waitUntil: "networkidle0", timeout: maxTimeoutPerPage });
|
|
4408
|
+
console.timeLog("puppeteer", "Navigated to page");
|
|
4408
4409
|
await page.waitForSelector("#bespoke-report", { timeout: maxTimeoutPerPage });
|
|
4410
|
+
console.timeLog("puppeteer", "Selector detected");
|
|
4409
4411
|
if (transparent) {
|
|
4410
4412
|
await page.$eval(`.bespoke-Section-${section}`, (el) => el["style"].background = "transparent");
|
|
4411
4413
|
await page.evaluate(() => document.body.style.background = "transparent");
|
|
4414
|
+
console.timeLog("puppeteer", "Added transparent background");
|
|
4412
4415
|
}
|
|
4413
4416
|
if (format === "svg") {
|
|
4414
4417
|
const element = await page.$(".d3plus-viz");
|
|
4415
4418
|
const svg = await element?.evaluate((el) => el.outerHTML);
|
|
4419
|
+
console.timeLog("puppeteer", "Finishing SVG");
|
|
4420
|
+
console.timeEnd("puppeteer");
|
|
4421
|
+
await browser.close();
|
|
4416
4422
|
return svg?.replace(/ {4}|[\t\n\r]/gm, "");
|
|
4417
4423
|
} else {
|
|
4418
4424
|
const element = await page.$(".bespoke-Section-container");
|
|
@@ -4420,11 +4426,15 @@ async function generateImage(path2, section, format = "png", transparent = false
|
|
|
4420
4426
|
type: "png",
|
|
4421
4427
|
omitBackground: true
|
|
4422
4428
|
});
|
|
4429
|
+
console.timeLog("puppeteer", "Finishing PNG");
|
|
4430
|
+
console.timeEnd("puppeteer");
|
|
4423
4431
|
await browser.close();
|
|
4424
4432
|
return screenshot;
|
|
4425
4433
|
}
|
|
4426
4434
|
} catch (error) {
|
|
4427
4435
|
console.error("Error generating Image:", error);
|
|
4436
|
+
console.timeLog("puppeteer", "Finishing with error");
|
|
4437
|
+
console.timeEnd("puppeteer");
|
|
4428
4438
|
throw error;
|
|
4429
4439
|
}
|
|
4430
4440
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datawheel/bespoke",
|
|
3
|
-
"version": "0.6.0-rc.
|
|
3
|
+
"version": "0.6.0-rc.4",
|
|
4
4
|
"description": "Content management system for creating automated data reports",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
"@mantine/prism": "^6.0.19",
|
|
53
53
|
"@monaco-editor/react": "^4.4.5",
|
|
54
54
|
"@reduxjs/toolkit": "^1.8.4",
|
|
55
|
-
"@sparticuz/chromium": "^123.0.1",
|
|
56
55
|
"@tabler/icons-react": "^2.15.0",
|
|
57
56
|
"@tiptap/extension-hard-break": "^2.2.2",
|
|
58
57
|
"@tiptap/extension-history": "^2.2.2",
|
|
@@ -105,6 +104,7 @@
|
|
|
105
104
|
"normalizr": "^3.6.2",
|
|
106
105
|
"pg": "^8.7.3",
|
|
107
106
|
"pretty-format": "^28.1.1",
|
|
107
|
+
"puppeteer": "^22.10.0",
|
|
108
108
|
"puppeteer-core": "^22.10.0",
|
|
109
109
|
"react": "^18.2.0",
|
|
110
110
|
"react-clipboard.js": "^2.0.16",
|