@vellora/engine-chromium 0.1.0-alpha.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/index.d.ts +26 -0
- package/dist/index.js +214 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { BridgeRenderOptions, ChromiumEngineOptions, NativeBridge } from "vellora";
|
|
2
|
+
export type { BridgeRenderOptions, ChromiumEngineOptions, NativeBridge } from "vellora";
|
|
3
|
+
export interface ChromiumEngineConfig {
|
|
4
|
+
executablePath?: string;
|
|
5
|
+
args?: string[];
|
|
6
|
+
tmpDir?: string;
|
|
7
|
+
keepTempFiles?: boolean;
|
|
8
|
+
runChromium?: ChromiumRunner;
|
|
9
|
+
}
|
|
10
|
+
export type ChromiumRunner = (executablePath: string, args: string[], options: {
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
export declare function chromiumEngine(config?: ChromiumEngineConfig): NativeBridge;
|
|
14
|
+
export declare class ChromiumBridge implements NativeBridge {
|
|
15
|
+
private readonly config;
|
|
16
|
+
constructor(config?: ChromiumEngineConfig);
|
|
17
|
+
render(html: string, options: BridgeRenderOptions): Promise<Uint8Array>;
|
|
18
|
+
}
|
|
19
|
+
declare function safeRelativeAssetPath(key: string, bytes: Uint8Array): string;
|
|
20
|
+
declare function chromiumArgs(htmlPath: string, pdfPath: string, options: ChromiumEngineOptions | undefined, config: ChromiumEngineConfig): string[];
|
|
21
|
+
declare function resolveChromiumExecutable(options: ChromiumEngineOptions | undefined, config: ChromiumEngineConfig): Promise<string>;
|
|
22
|
+
export declare const chromiumEngineInternals: {
|
|
23
|
+
chromiumArgs: typeof chromiumArgs;
|
|
24
|
+
resolveChromiumExecutable: typeof resolveChromiumExecutable;
|
|
25
|
+
safeRelativeAssetPath: typeof safeRelativeAssetPath;
|
|
26
|
+
};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { access, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join, normalize, sep } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
export function chromiumEngine(config = {}) {
|
|
7
|
+
return new ChromiumBridge(config);
|
|
8
|
+
}
|
|
9
|
+
export class ChromiumBridge {
|
|
10
|
+
config;
|
|
11
|
+
constructor(config = {}) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
async render(html, options) {
|
|
15
|
+
const workDir = await mkdtemp(join(this.config.tmpDir ?? tmpdir(), "vellora-chromium-"));
|
|
16
|
+
try {
|
|
17
|
+
const prepared = await prepareInput(workDir, html, options.images);
|
|
18
|
+
const pdfPath = join(workDir, "output.pdf");
|
|
19
|
+
const executablePath = await resolveChromiumExecutable(options.chromium, this.config);
|
|
20
|
+
const args = chromiumArgs(prepared.htmlPath, pdfPath, options.chromium, this.config);
|
|
21
|
+
await (this.config.runChromium ?? runChromium)(executablePath, args, {
|
|
22
|
+
timeoutMs: options.chromium?.timeoutMs,
|
|
23
|
+
});
|
|
24
|
+
return await readFile(pdfPath);
|
|
25
|
+
}
|
|
26
|
+
catch (cause) {
|
|
27
|
+
throw chromiumUnavailable(cause);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
if (!this.config.keepTempFiles) {
|
|
31
|
+
await rm(workDir, { recursive: true, force: true }).catch(() => undefined);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function prepareInput(workDir, html, images) {
|
|
37
|
+
await materializeImages(workDir, images);
|
|
38
|
+
const htmlPath = join(workDir, "index.html");
|
|
39
|
+
await writeFile(htmlPath, html);
|
|
40
|
+
return { htmlPath };
|
|
41
|
+
}
|
|
42
|
+
async function materializeImages(workDir, images) {
|
|
43
|
+
if (!images) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
await Promise.all(Object.entries(images).map(async ([key, bytes]) => {
|
|
47
|
+
const relative = safeRelativeAssetPath(key, bytes);
|
|
48
|
+
const path = join(workDir, relative);
|
|
49
|
+
await mkdir(dirname(path), { recursive: true });
|
|
50
|
+
await writeFile(path, bytes);
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
function safeRelativeAssetPath(key, bytes) {
|
|
54
|
+
const parsedPath = urlPathname(key) ?? key;
|
|
55
|
+
const normalized = normalize(parsedPath).replace(/^([/\\])+/, "");
|
|
56
|
+
const safe = normalized
|
|
57
|
+
.split(sep)
|
|
58
|
+
.filter((part) => part && part !== "." && part !== "..")
|
|
59
|
+
.join(sep);
|
|
60
|
+
if (safe) {
|
|
61
|
+
return safe;
|
|
62
|
+
}
|
|
63
|
+
return `asset-${hashBytes(bytes)}${extensionFor(bytes)}`;
|
|
64
|
+
}
|
|
65
|
+
function urlPathname(key) {
|
|
66
|
+
try {
|
|
67
|
+
return new URL(key).pathname;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function chromiumArgs(htmlPath, pdfPath, options, config) {
|
|
74
|
+
const args = [
|
|
75
|
+
"--headless=new",
|
|
76
|
+
"--disable-gpu",
|
|
77
|
+
"--disable-background-networking",
|
|
78
|
+
"--host-resolver-rules=MAP * 0.0.0.0",
|
|
79
|
+
"--allow-file-access-from-files",
|
|
80
|
+
"--no-pdf-header-footer",
|
|
81
|
+
`--print-to-pdf=${pdfPath}`,
|
|
82
|
+
];
|
|
83
|
+
if (options?.pdf?.landscape) {
|
|
84
|
+
args.push("--landscape");
|
|
85
|
+
}
|
|
86
|
+
return [...args, ...(config.args ?? []), ...(options?.args ?? []), pathToFileURL(htmlPath).href];
|
|
87
|
+
}
|
|
88
|
+
async function resolveChromiumExecutable(options, config) {
|
|
89
|
+
const configured = options?.executablePath ?? config.executablePath ?? process.env.VELLORA_CHROMIUM_EXECUTABLE;
|
|
90
|
+
if (configured) {
|
|
91
|
+
return configured;
|
|
92
|
+
}
|
|
93
|
+
const absolute = await firstAccessible([
|
|
94
|
+
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
|
95
|
+
"/Applications/Chromium.app/Contents/MacOS/Chromium",
|
|
96
|
+
"/usr/bin/google-chrome",
|
|
97
|
+
"/usr/bin/chromium",
|
|
98
|
+
"/usr/bin/chromium-browser",
|
|
99
|
+
]);
|
|
100
|
+
return absolute ?? "chromium";
|
|
101
|
+
}
|
|
102
|
+
async function firstAccessible(paths) {
|
|
103
|
+
for (const path of paths) {
|
|
104
|
+
if (await exists(path)) {
|
|
105
|
+
return path;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
async function exists(path) {
|
|
111
|
+
try {
|
|
112
|
+
await access(path);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function runChromium(executablePath, args, options) {
|
|
120
|
+
return new Promise((resolvePromise, reject) => {
|
|
121
|
+
const child = spawn(executablePath, args, {
|
|
122
|
+
stdio: ["ignore", "ignore", "pipe"],
|
|
123
|
+
});
|
|
124
|
+
let stderr = "";
|
|
125
|
+
let settled = false;
|
|
126
|
+
const timeout = options.timeoutMs === undefined
|
|
127
|
+
? undefined
|
|
128
|
+
: setTimeout(() => {
|
|
129
|
+
child.kill("SIGKILL");
|
|
130
|
+
finish(new Error(`Chromium render timed out after ${options.timeoutMs}ms.`));
|
|
131
|
+
}, options.timeoutMs);
|
|
132
|
+
function finish(reason) {
|
|
133
|
+
if (settled) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
settled = true;
|
|
137
|
+
if (timeout) {
|
|
138
|
+
clearTimeout(timeout);
|
|
139
|
+
}
|
|
140
|
+
if (reason) {
|
|
141
|
+
reject(reason);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
resolvePromise();
|
|
145
|
+
}
|
|
146
|
+
child.stderr?.setEncoding("utf8");
|
|
147
|
+
child.stderr?.on("data", (chunk) => {
|
|
148
|
+
stderr += chunk;
|
|
149
|
+
});
|
|
150
|
+
child.on("error", finish);
|
|
151
|
+
child.on("close", (code) => {
|
|
152
|
+
if (code === 0) {
|
|
153
|
+
finish();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
finish(new Error(`Chromium exited with code ${code ?? "unknown"}${stderr ? `: ${stderr}` : ""}`));
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
function chromiumUnavailable(cause) {
|
|
161
|
+
const message = cause instanceof Error ? cause.message : String(cause);
|
|
162
|
+
return Object.assign(new Error(`Chromium render failed. Set chromium.executablePath or VELLORA_CHROMIUM_EXECUTABLE to a Chromium/Chrome binary. Cause: ${message}`), { code: "VELLORA_CHROMIUM_UNAVAILABLE", cause });
|
|
163
|
+
}
|
|
164
|
+
function hashBytes(bytes) {
|
|
165
|
+
let hash = 2166136261;
|
|
166
|
+
for (const byte of bytes) {
|
|
167
|
+
hash ^= byte;
|
|
168
|
+
hash = Math.imul(hash, 16777619);
|
|
169
|
+
}
|
|
170
|
+
return (hash >>> 0).toString(16);
|
|
171
|
+
}
|
|
172
|
+
function extensionFor(bytes) {
|
|
173
|
+
const contentType = sniffImageContentType(bytes);
|
|
174
|
+
switch (contentType) {
|
|
175
|
+
case "image/png":
|
|
176
|
+
return ".png";
|
|
177
|
+
case "image/jpeg":
|
|
178
|
+
return ".jpg";
|
|
179
|
+
case "image/gif":
|
|
180
|
+
return ".gif";
|
|
181
|
+
case "image/webp":
|
|
182
|
+
return ".webp";
|
|
183
|
+
default:
|
|
184
|
+
return "";
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function sniffImageContentType(bytes) {
|
|
188
|
+
if (bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47) {
|
|
189
|
+
return "image/png";
|
|
190
|
+
}
|
|
191
|
+
if (bytes[0] === 0xff && bytes[1] === 0xd8) {
|
|
192
|
+
return "image/jpeg";
|
|
193
|
+
}
|
|
194
|
+
if (bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x38) {
|
|
195
|
+
return "image/gif";
|
|
196
|
+
}
|
|
197
|
+
if (bytes[0] === 0x52 &&
|
|
198
|
+
bytes[1] === 0x49 &&
|
|
199
|
+
bytes[2] === 0x46 &&
|
|
200
|
+
bytes[3] === 0x46 &&
|
|
201
|
+
bytes[8] === 0x57 &&
|
|
202
|
+
bytes[9] === 0x45 &&
|
|
203
|
+
bytes[10] === 0x42 &&
|
|
204
|
+
bytes[11] === 0x50) {
|
|
205
|
+
return "image/webp";
|
|
206
|
+
}
|
|
207
|
+
return "application/octet-stream";
|
|
208
|
+
}
|
|
209
|
+
export const chromiumEngineInternals = {
|
|
210
|
+
chromiumArgs,
|
|
211
|
+
resolveChromiumExecutable,
|
|
212
|
+
safeRelativeAssetPath,
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vellora/engine-chromium",
|
|
3
|
+
"version": "0.1.0-alpha.4",
|
|
4
|
+
"description": "Optional Chromium-backed browser-fidelity renderer for vellora.",
|
|
5
|
+
"keywords": ["html-to-pdf", "pdf", "chromium", "browser-fidelity"],
|
|
6
|
+
"homepage": "https://github.com/diomalta/vellora#readme",
|
|
7
|
+
"bugs": "https://github.com/diomalta/vellora/issues",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/diomalta/vellora.git",
|
|
11
|
+
"directory": "packages/engine-chromium"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Diego Malta <diohmalta@gmail.com>",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "dist/index.js",
|
|
17
|
+
"types": "dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20"
|
|
27
|
+
},
|
|
28
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"vellora": "0.1.0-alpha.4"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@vellora/test-harness": "*",
|
|
37
|
+
"vellora": "0.1.0-alpha.4"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public",
|
|
41
|
+
"provenance": true
|
|
42
|
+
}
|
|
43
|
+
}
|