@arcblock/crawler 1.3.0 → 1.3.1
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.
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Page } from '@blocklet/puppeteer';
|
|
2
2
|
import { JobState } from '../store';
|
|
3
|
-
export declare function createCarbonImage(page: Page, params?: JobState): Promise<Buffer<
|
|
3
|
+
export declare function createCarbonImage(page: Page, params?: JobState): Promise<Buffer<ArrayBufferLike>>;
|
|
@@ -11,23 +11,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.createCarbonImage = createCarbonImage;
|
|
13
13
|
const config_1 = require("../config");
|
|
14
|
-
// TODO expose local version of dom-to-image
|
|
15
|
-
const DOM_TO_IMAGE_URL = 'https://unpkg.com/dom-to-image@2.6.0/dist/dom-to-image.min.js';
|
|
16
14
|
function createCarbonImage(page, params) {
|
|
17
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
16
|
try {
|
|
19
|
-
yield page.addScriptTag({ url: DOM_TO_IMAGE_URL });
|
|
20
17
|
yield page.waitForSelector('.export-container', { visible: true, timeout: (params === null || params === void 0 ? void 0 : params.timeout) || 120 });
|
|
21
|
-
const targetElement = yield page.$('.export-container');
|
|
22
|
-
|
|
23
|
-
const dataUrl = yield page.evaluate((target = document, imageFormat = 'png') => {
|
|
24
|
-
const query = new URLSearchParams(document.location.search);
|
|
25
|
-
const EXPORT_SIZES_HASH = {
|
|
26
|
-
'1x': '1',
|
|
27
|
-
'2x': '2',
|
|
28
|
-
'4x': '4',
|
|
29
|
-
};
|
|
30
|
-
const exportSize = EXPORT_SIZES_HASH[query.get('es')] || '2';
|
|
18
|
+
const targetElement = (yield page.$('.export-container'));
|
|
19
|
+
yield page.evaluate((target = document) => {
|
|
31
20
|
if (!target) {
|
|
32
21
|
throw new Error('Target element not found');
|
|
33
22
|
}
|
|
@@ -40,44 +29,9 @@ function createCarbonImage(page, params) {
|
|
|
40
29
|
});
|
|
41
30
|
}
|
|
42
31
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
: target.offsetHeight * exportSize;
|
|
47
|
-
const config = {
|
|
48
|
-
style: {
|
|
49
|
-
transform: `scale(${exportSize})`,
|
|
50
|
-
'transform-origin': 'center',
|
|
51
|
-
background: query.get('si') ? query.get('bg') : 'none',
|
|
52
|
-
},
|
|
53
|
-
filter: (n) => {
|
|
54
|
-
if (n.className) {
|
|
55
|
-
return String(n.className).indexOf('eliminateOnRender') < 0;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
},
|
|
59
|
-
width,
|
|
60
|
-
height,
|
|
61
|
-
};
|
|
62
|
-
switch (imageFormat) {
|
|
63
|
-
case 'jpeg':
|
|
64
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
65
|
-
return domtoimage.toJpeg(target, config);
|
|
66
|
-
case 'webp':
|
|
67
|
-
// dom-to-image doesn't support webp directly, fall back to png
|
|
68
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
69
|
-
return domtoimage.toPng(target, config);
|
|
70
|
-
case 'png':
|
|
71
|
-
default:
|
|
72
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
73
|
-
return domtoimage.toPng(target, config);
|
|
74
|
-
}
|
|
75
|
-
}, targetElement, format);
|
|
76
|
-
const base64Data = dataUrl.split(',')[1];
|
|
77
|
-
if (!base64Data) {
|
|
78
|
-
throw new Error('Failed to extract base64 data from image');
|
|
79
|
-
}
|
|
80
|
-
return Buffer.from(base64Data, 'base64');
|
|
32
|
+
}, targetElement);
|
|
33
|
+
const buffer = yield targetElement.screenshot({ type: (params === null || params === void 0 ? void 0 : params.format) || 'webp', quality: (params === null || params === void 0 ? void 0 : params.quality) || 100 });
|
|
34
|
+
return buffer;
|
|
81
35
|
}
|
|
82
36
|
catch (e) {
|
|
83
37
|
config_1.logger.error('failed to crawl from carbon', { error: e });
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Page } from '@blocklet/puppeteer';
|
|
2
2
|
import { JobState } from '../store';
|
|
3
|
-
export declare function createCarbonImage(page: Page, params?: JobState): Promise<Buffer<
|
|
3
|
+
export declare function createCarbonImage(page: Page, params?: JobState): Promise<Buffer<ArrayBufferLike>>;
|
|
@@ -8,23 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { logger } from '../config';
|
|
11
|
-
// TODO expose local version of dom-to-image
|
|
12
|
-
const DOM_TO_IMAGE_URL = 'https://unpkg.com/dom-to-image@2.6.0/dist/dom-to-image.min.js';
|
|
13
11
|
export function createCarbonImage(page, params) {
|
|
14
12
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15
13
|
try {
|
|
16
|
-
yield page.addScriptTag({ url: DOM_TO_IMAGE_URL });
|
|
17
14
|
yield page.waitForSelector('.export-container', { visible: true, timeout: (params === null || params === void 0 ? void 0 : params.timeout) || 120 });
|
|
18
|
-
const targetElement = yield page.$('.export-container');
|
|
19
|
-
|
|
20
|
-
const dataUrl = yield page.evaluate((target = document, imageFormat = 'png') => {
|
|
21
|
-
const query = new URLSearchParams(document.location.search);
|
|
22
|
-
const EXPORT_SIZES_HASH = {
|
|
23
|
-
'1x': '1',
|
|
24
|
-
'2x': '2',
|
|
25
|
-
'4x': '4',
|
|
26
|
-
};
|
|
27
|
-
const exportSize = EXPORT_SIZES_HASH[query.get('es')] || '2';
|
|
15
|
+
const targetElement = (yield page.$('.export-container'));
|
|
16
|
+
yield page.evaluate((target = document) => {
|
|
28
17
|
if (!target) {
|
|
29
18
|
throw new Error('Target element not found');
|
|
30
19
|
}
|
|
@@ -37,44 +26,9 @@ export function createCarbonImage(page, params) {
|
|
|
37
26
|
});
|
|
38
27
|
}
|
|
39
28
|
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
: target.offsetHeight * exportSize;
|
|
44
|
-
const config = {
|
|
45
|
-
style: {
|
|
46
|
-
transform: `scale(${exportSize})`,
|
|
47
|
-
'transform-origin': 'center',
|
|
48
|
-
background: query.get('si') ? query.get('bg') : 'none',
|
|
49
|
-
},
|
|
50
|
-
filter: (n) => {
|
|
51
|
-
if (n.className) {
|
|
52
|
-
return String(n.className).indexOf('eliminateOnRender') < 0;
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
},
|
|
56
|
-
width,
|
|
57
|
-
height,
|
|
58
|
-
};
|
|
59
|
-
switch (imageFormat) {
|
|
60
|
-
case 'jpeg':
|
|
61
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
62
|
-
return domtoimage.toJpeg(target, config);
|
|
63
|
-
case 'webp':
|
|
64
|
-
// dom-to-image doesn't support webp directly, fall back to png
|
|
65
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
66
|
-
return domtoimage.toPng(target, config);
|
|
67
|
-
case 'png':
|
|
68
|
-
default:
|
|
69
|
-
// @ts-ignore: domtoimage is injected by addScriptTag
|
|
70
|
-
return domtoimage.toPng(target, config);
|
|
71
|
-
}
|
|
72
|
-
}, targetElement, format);
|
|
73
|
-
const base64Data = dataUrl.split(',')[1];
|
|
74
|
-
if (!base64Data) {
|
|
75
|
-
throw new Error('Failed to extract base64 data from image');
|
|
76
|
-
}
|
|
77
|
-
return Buffer.from(base64Data, 'base64');
|
|
29
|
+
}, targetElement);
|
|
30
|
+
const buffer = yield targetElement.screenshot({ type: (params === null || params === void 0 ? void 0 : params.format) || 'webp', quality: (params === null || params === void 0 ? void 0 : params.quality) || 100 });
|
|
31
|
+
return buffer;
|
|
78
32
|
}
|
|
79
33
|
catch (e) {
|
|
80
34
|
logger.error('failed to crawl from carbon', { error: e });
|