@playlyfe/babel-loader
Version:
babel module loader for webpack
63 lines (46 loc) • 1.73 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = transform;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _Error = _interopRequireDefault(require("./utils/Error"));
var _log = _interopRequireDefault(require("./utils/_log"));
var _chalk = _interopRequireDefault(require("chalk"));
var babel = _interopRequireWildcard(require("@babel/core"));
function transform(source, options, diffTagsArray) {
const {
isRelay
} = options,
tOptions = (0, _objectWithoutPropertiesLoose2.default)(options, ["isRelay"]);
const perfKey = genPerfKey(tOptions.sourceFileName, isRelay, diffTagsArray);
_log.default.time(perfKey);
try {
const result = babel.transform(source, tOptions);
const {
code,
map,
metadata
} = result;
if (map && (!map.sourcesContent || !map.sourcesContent.length)) {
map.sourcesContent = [source];
}
_log.default.clearLine();
_log.default.timeEnd(perfKey);
return {
code,
map,
metadata
};
} catch (err) {
const error = err.message && err.codeFrame ? new _Error.default(err) : err;
throw error;
}
}
function genPerfKey(sourceFileName, isRelay, diffTagsArray) {
const isRelayTag = _chalk.default.green.dim(isRelay ? '[Relay]' : '');
const diffTags = diffTagsArray ? _chalk.default.yellow.dim(`[changes: ${diffTagsArray.join(',')}]`) : '';
return `'${sourceFileName}'${isRelayTag}${diffTags}`;
}