Do not return non-ESM on ?module requests

This commit is contained in:
Michael Jackson 2019-07-02 21:16:28 -07:00
parent 404f62aa0d
commit 90473733a5
1 changed files with 22 additions and 4 deletions

View File

@ -47,10 +47,28 @@ function filenameRedirect(req, res) {
let filename; let filename;
if (req.query.module != null) { if (req.query.module != null) {
// See https://github.com/rollup/rollup/wiki/pkg.module // See https://github.com/rollup/rollup/wiki/pkg.module
filename = filename = req.packageConfig.module || req.packageConfig['jsnext:main'];
req.packageConfig.module ||
req.packageConfig['jsnext:main'] || if (!filename) {
'/index.js'; // https://nodejs.org/api/esm.html#esm_code_package_json_code_code_type_code_field
if (req.packageConfig.type === 'module') {
// Use whatever is in pkg.main or index.js
filename = req.packageConfig.main || '/index.js';
} else if (
req.packageConfig.main &&
/\.mjs$/.test(req.packageConfig.main)
) {
// Use .mjs file in pkg.main
filename = req.packageConfig.main;
}
}
if (!filename) {
return res
.status(404)
.type('text')
.send(`Package ${req.packageSpec} does not contain an ES module`);
}
} else if ( } else if (
req.query.main && req.query.main &&
req.packageConfig[req.query.main] && req.packageConfig[req.query.main] &&