72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
const {
|
|
addHook
|
|
} = require("pirates");
|
|
const sourceMapSupport = require("source-map-support");
|
|
let piratesRevert;
|
|
const maps = Object.create(null);
|
|
function installSourceMapSupport() {
|
|
installSourceMapSupport = () => {};
|
|
sourceMapSupport.install({
|
|
handleUncaughtExceptions: false,
|
|
environment: "node",
|
|
retrieveSourceMap(filename) {
|
|
const map = maps == null ? void 0 : maps[filename];
|
|
if (map) {
|
|
return {
|
|
url: null,
|
|
map: map
|
|
};
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
{
|
|
const Module = require("module");
|
|
let compiling = false;
|
|
const internalModuleCache = Module._cache;
|
|
var compileBabel7 = function compileBabel7(client, code, filename) {
|
|
if (!client.isLocalClient) return compile(client, code, filename);
|
|
if (compiling) return code;
|
|
const globalModuleCache = Module._cache;
|
|
try {
|
|
compiling = true;
|
|
Module._cache = internalModuleCache;
|
|
return compile(client, code, filename);
|
|
} finally {
|
|
compiling = false;
|
|
Module._cache = globalModuleCache;
|
|
}
|
|
};
|
|
}
|
|
function compile(client, inputCode, filename) {
|
|
const result = client.transform(inputCode, filename);
|
|
if (result === null) return inputCode;
|
|
const {
|
|
code,
|
|
map
|
|
} = result;
|
|
if (map) {
|
|
maps[filename] = map;
|
|
installSourceMapSupport();
|
|
}
|
|
return code;
|
|
}
|
|
exports.register = function register(client, opts = {}) {
|
|
var _opts$extensions;
|
|
if (piratesRevert) piratesRevert();
|
|
piratesRevert = addHook(compileBabel7.bind(null, client), {
|
|
exts: (_opts$extensions = opts.extensions) != null ? _opts$extensions : client.getDefaultExtensions(),
|
|
ignoreNodeModules: false
|
|
});
|
|
client.setOptions(opts);
|
|
};
|
|
exports.revert = function revert() {
|
|
if (piratesRevert) piratesRevert();
|
|
};
|
|
|
|
//# sourceMappingURL=hook.js.map
|