@playlyfe/babel-loader
Version:
babel module loader for webpack
92 lines (73 loc) • 3.07 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = loader;
var babel = _interopRequireWildcard(require("@babel/core"));
var _loaderUtils = _interopRequireDefault(require("loader-utils"));
var _path = _interopRequireDefault(require("path"));
var _cacheTransform = _interopRequireDefault(require("./utils/cache-transform"));
var _cacheIdentifier = _interopRequireDefault(require("./utils/cache-identifier"));
var _babelConfigCacheIdentifier = require("./utils/babel-config-cache-identifier");
var _isRelaySource = _interopRequireDefault(require("./utils/is-relay-source"));
var _transform = _interopRequireDefault(require("./transform"));
var _package = _interopRequireDefault(require("../package.json"));
/* eslint-disable playlyfe/babel-no-invalid-this */
async function loader(source, inputSourceMap) {
const filename = this.resourcePath;
const isRelay = (0, _isRelaySource.default)(source);
const sourceRoot = process.cwd();
const userOptions = _loaderUtils.default.getOptions(this) || {};
const options = {
filename,
inputSourceMap,
sourceRoot,
sourceMap: this.sourceMap,
sourceFileName: _path.default.relative(sourceRoot, filename),
caller: {
name: '@playlyfe/babel-loader',
supportsStaticESM: true,
supportsDynamicImport: true
}
};
const config = babel.loadPartialConfig(options);
const tOptions = Object.assign({
isRelay
}, options);
if (config) {
let result = null;
if (userOptions.cacheDirectory) {
result = await (0, _cacheTransform.default)({
directory: userOptions.cacheDirectory,
sourceFileName: options.sourceFileName,
identifier: _cacheIdentifier.default.generate({
babelCore: babel.version,
babelLoader: _package.default.version,
babelConfig: (0, _babelConfigCacheIdentifier.genBabelConfigCacheIdentifier)({
babelConfig: {
root: config.options.root,
envName: config.options.envName,
presets: config.options.presets,
plugins: config.options.plugins
},
isRelay
}),
source: _loaderUtils.default.getHashDigest(source),
env: process.env.BABEL_ENV || process.env.NODE_ENV
}),
transform: (oldIdentifier, newIdentifier) => {
const diffTags = _cacheIdentifier.default.diff(oldIdentifier, newIdentifier);
return (0, _transform.default)(source, tOptions, diffTags);
}
});
} else {
result = (0, _transform.default)(source, tOptions);
} // storeInModuleMeta(this._module, result.metadata);
return [result.code, result.map];
}
return [source, inputSourceMap];
} // function storeInModuleMeta(_module, metadata) {
// _module.buildMeta.babel = metadata; // eslint-disable-line no-param-reassign
// }