51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
/* eslint-disable import/no-commonjs */
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const st = require('st');
|
|
const {createServer} = require('http');
|
|
const localizeURLs = require('./localize-urls');
|
|
|
|
module.exports = function () {
|
|
const port = 2900;
|
|
const integrationMount = st({path: path.join(__dirname, '..')});
|
|
const mapboxGLStylesMount = st({path: path.dirname(require.resolve('mapbox-gl-styles')), url: 'mapbox-gl-styles'});
|
|
const mapboxMVTFixturesMount = st({path: path.dirname(require.resolve('@mapbox/mvt-fixtures')), url: 'mvt-fixtures'});
|
|
const server = createServer((req, res) => {
|
|
if (req.method === 'POST' && req.url === '/write-file') {
|
|
let body = '';
|
|
req.on('data', (data) => {
|
|
body += data;
|
|
});
|
|
req.on('end', () => {
|
|
|
|
//Write data to disk
|
|
const {filePath, data} = JSON.parse(body);
|
|
fs.writeFile(path.join(process.cwd(), filePath), data, 'base64', () => {
|
|
res.writeHead(200, {'Content-Type': 'text/html'});
|
|
res.end('ok');
|
|
});
|
|
});
|
|
}
|
|
|
|
return mapboxMVTFixturesMount(req, res, () => {
|
|
return mapboxGLStylesMount(req, res, () => {
|
|
return integrationMount(req, res);
|
|
});
|
|
});
|
|
});
|
|
|
|
return {
|
|
listen(callback) {
|
|
server.listen(port, callback);
|
|
},
|
|
|
|
close(callback) {
|
|
server.close(callback);
|
|
},
|
|
|
|
localizeURLs(style) {
|
|
return localizeURLs(style, port);
|
|
}
|
|
};
|
|
};
|