2018-05-24 21:30:45 +03:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const builtins = require("builtin-modules");
|
|
|
|
const fs = require("fs");
|
|
|
|
const path = require("path");
|
2018-06-13 18:49:35 +03:00
|
|
|
|
|
|
|
const EMPTY = "export default {};";
|
|
|
|
const PREFIX = "\0shim:";
|
2018-05-24 21:30:45 +03:00
|
|
|
|
|
|
|
module.exports = function(dir) {
|
|
|
|
return {
|
2018-06-13 18:49:35 +03:00
|
|
|
resolveId(importee) {
|
|
|
|
if (importee.startsWith(PREFIX)) {
|
|
|
|
return importee;
|
2018-05-24 21:30:45 +03:00
|
|
|
}
|
|
|
|
|
2018-06-13 18:49:35 +03:00
|
|
|
if (/\0/.test(importee) || !builtins.includes(importee)) {
|
2018-05-24 21:30:45 +03:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2018-06-13 18:49:35 +03:00
|
|
|
const shim = path.resolve(dir, importee + ".js");
|
|
|
|
if (fs.existsSync(shim)) {
|
|
|
|
return shim;
|
2018-05-24 21:30:45 +03:00
|
|
|
}
|
2018-06-13 18:49:35 +03:00
|
|
|
return PREFIX + importee;
|
|
|
|
},
|
2018-05-24 21:30:45 +03:00
|
|
|
|
2018-06-13 18:49:35 +03:00
|
|
|
load(id) {
|
|
|
|
if (id.startsWith(PREFIX)) {
|
|
|
|
return EMPTY;
|
|
|
|
}
|
2018-05-24 21:30:45 +03:00
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|