123456789101112131415161718192021222324252627282930 |
- const request = require('request-promise')
- const prefetch = async (element) => {
- const url = element.attr(`src`)
- let response
- try {
- response = await request({
- method: `GET`,
- url,
- resolveWithFullResponse: true
- })
- } catch (err) {
- WIKI.logger.warn(`Failed to prefetch ${url}`)
- WIKI.logger.warn(err)
- return
- }
- const contentType = response.headers[`content-type`]
- const image = Buffer.from(response.body).toString('base64')
- element.attr('src', `data:${contentType};base64,${image}`)
- element.removeClass('prefetch-candidate')
- }
- module.exports = {
- async init($) {
- const promises = $('img.prefetch-candidate').map((index, element) => {
- return prefetch($(element))
- }).toArray()
- await Promise.all(promises)
- }
- }
|