-
Notifications
You must be signed in to change notification settings - Fork 69
Open
Description
I know this project comes with no dependencies at the moment, but having static typing is very important to me.
Flowtype is a nice fit for this project since flow-remove-type
is a very simple tool.
I have a fork which adds support for flow: master...taylorgoolsby:master
If you still want to keep no dependencies, how do you feel about implementing a hook/plugin system? I have something like this in mind:
// Add `transform` as a parameter to `servor`:
module.exports = async ({
root = '.',
module = false,
fallback = module ? 'index.js' : 'index.html',
reload = true,
static = false,
inject = '',
credentials,
port,
transform
} = {}) => {
// sendFile passes files through `transform`:
const sendFile = (res, status, file, ext, encoding = 'binary') => {
if (transform) {
file = transform(file, ext)
}
if (['js', 'css', 'html', 'json', 'xml', 'svg'].includes(ext)) {
res.setHeader('content-encoding', 'gzip');
file = zlib.gzipSync(utf8(file));
encoding = 'utf8';
}
res.writeHead(status, { 'content-type': mimeTypes(ext) });
res.write(file, encoding);
res.end();
};
// flowtype + servor using the transform plugin:
const flowRemoveTypes = require('flow-remove-types');
const servor = require('servor');
const instance = await servor({
root: '.',
fallback: 'index.html',
module: false,
static: false,
reload: false,
inject: '',
credentials: null,
port: 8080,
transform: (file, ext) => {
if (ext === 'js') {
file = flowRemoveTypes(file).toString()
}
return file
}
});
Metadata
Metadata
Assignees
Labels
No labels