UNPKG

@playlyfe/babel-loader

Version:
87 lines (63 loc) 2.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _memoize2 = _interopRequireDefault(require("lodash/memoize")); var _invariant = _interopRequireDefault(require("invariant")); var _chalk = _interopRequireDefault(require("chalk")); var _genFileContentHash = _interopRequireDefault(require("./gen-file-content-hash")); var _genPkgVersion = _interopRequireDefault(require("./gen-pkg-version")); var _jsonString = require("../json-string"); var _log = _interopRequireDefault(require("../_log")); var _default = (0, _memoize2.default)(options => { const { babelConfig, isRelay } = options; const perfKey = ` generated cache-identifier isRelay: '${_chalk.default.bold(isRelay.toString())} `; _log.default.time(perfKey); const identifier = { envName: babelConfig.envName, root: babelConfig.root, presets: mapConfigItems(babelConfig.presets, isRelay, babelConfig.root), plugins: mapConfigItems(babelConfig.plugins, isRelay, babelConfig.root) }; _log.default.clearLine(); _log.default.timeEnd(perfKey); return (0, _jsonString.toJSONString)(identifier); }, args => JSON.stringify(args)); exports.default = _default; function mapConfigItems(items, isRelay, root) { return items.map(item => { const name = getConfigItemName(item); if (isRelayPkg(name) && !isRelay) { // only include relay pkg for relay files return null; } const version = (0, _genPkgVersion.default)(name, root); const options = Object.assign({}, item._descriptor.options); if (isRelayPkg(name)) { (0, _invariant.default)(typeof options === 'object' && options.schema, '[unexpected error] babel-plugin-relay: You should provide schema for relay plugin'); // add schemaVersion options.schemaVersion = (0, _genFileContentHash.default)(options.schema); } return { name, version, options }; }).filter(Boolean); } function getConfigItemName(configItem) { return configItem._descriptor.name || configItem._descriptor.file.request; } function isRelayPkg(pkg) { // not a good check but ok for now // we are using only babel-plugin-relay for all relay related // transformation which contains relay so ok for now return /relay/u.test(pkg); }