@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.
- package/dist/server.js +19 -19
- 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
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
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
|
|
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()
|
|
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
|
|
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
|
|
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.
|
|
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",
|