mirror of https://github.com/requarks/wiki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
import os from 'node:os'
|
|
import path from 'node:path'
|
|
import util from 'node:util'
|
|
import { exec as execSync } from 'node:child_process'
|
|
import fse from 'fs-extra'
|
|
|
|
const exec = util.promisify(execSync)
|
|
|
|
export default {
|
|
key: 'puppeteer',
|
|
title: 'Puppeteer',
|
|
description: 'Headless chromium browser for server-side rendering. Required for generating PDF versions of pages and render content elements on the server (e.g. Mermaid diagrams)',
|
|
async isCompatible () {
|
|
return os.arch() === 'x64'
|
|
},
|
|
isInstalled: false,
|
|
isInstallable: true,
|
|
async check () {
|
|
try {
|
|
this.isInstalled = await fse.pathExists(path.join(WIKI.SERVERPATH, 'node_modules/puppeteer-core/.local-chromium'))
|
|
} catch (err) {
|
|
this.isInstalled = false
|
|
}
|
|
return this.isInstalled
|
|
},
|
|
async install () {
|
|
try {
|
|
// TODO: https://pptr.dev/browsers-api/
|
|
// const { stdout, stderr } = await exec('node install.js', {
|
|
// cwd: path.join(WIKI.SERVERPATH, 'node_modules/puppeteer-core'),
|
|
// timeout: 300000,
|
|
// windowsHide: true
|
|
// })
|
|
// this.isInstalled = true
|
|
// WIKI.logger.info(stdout)
|
|
// WIKI.logger.warn(stderr)
|
|
throw new Error('Not implemented yet.')
|
|
} catch (err) {
|
|
WIKI.logger.error(err)
|
|
throw err
|
|
}
|
|
}
|
|
}
|