feat: image generator

This commit is contained in:
Morten Olsen
2022-03-30 13:46:09 +02:00
parent 928d2ffaa2
commit a549a92077
17 changed files with 452 additions and 23 deletions

View File

@@ -0,0 +1,43 @@
const path = require('path');
const withLatex = (nextConfig = {}) => {
return Object.assign({}, nextConfig, {
webpack(config, options) {
const {isServer, dev} = options;
let outputPath = '';
if (isServer && dev) {
outputPath = "../";
} else if (isServer) {
outputPath = "../../";
}
config.module.rules.push({
test: /\.png.yml$/,
use: [{
loader: 'file-loader',
options: {
publicPath: `${nextConfig.assetPrefix || nextConfig.basePath || ''}/_next/static/images/`,
outputPath: `${outputPath}static/images/`,
name: (name) => {
const fileName = path.basename(name);
const parts = fileName.split('.');
parts.pop();
const ext = parts.pop();
return `${parts.join('.')}.[hash].${ext}`;
},
esModule: nextConfig.esModule || false,
},
}, {
loader: require.resolve('./webpack.js'),
}],
});
if (typeof nextConfig.webpack === "function") {
return nextConfig.webpack(config, options);
}
return config;
},
});
}
module.exports = withLatex;

View File

@@ -0,0 +1,16 @@
require('reflect-metadata');
require('@babel/register')({
extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"],
});
const { generateImage } = require('../../../src/images');
module.exports = function (source) {
var callback = this.async();
const location = this.resourcePath;
generateImage(source, location)
.then((canvas) => {
const buffer = canvas.toBuffer('image/png', {})
callback(null, buffer);
})
.catch(callback);
}