UNPKG

@playlyfe/babel-loader

Version:
91 lines (69 loc) 2.32 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 _resolveFrom = _interopRequireDefault(require("resolve-from")); var _findUp = _interopRequireDefault(require("find-up")); var _isBuiltinModule = _interopRequireDefault(require("is-builtin-module")); var _genHash = _interopRequireDefault(require("./gen-hash")); var _findFileImports = _interopRequireDefault(require("./find-file-imports")); var _path = _interopRequireDefault(require("path")); var _fsExtra = require("fs-extra"); const genPkgVersion = (0, _memoize2.default)((pkg, cwd) => { const pkgPath = (0, _resolveFrom.default)(cwd, pkg); let version = null; if (!pkgPath) { throw pkgMissingError(pkg); } if (isNodeModule(pkgPath)) { // eslint-disable-next-line no-use-before-define version = getNodeModuleVersion(pkgPath); } else { version = getLocalFileVersion(pkgPath); } return version; }, (a, b) => `${a}-${b}`); var _default = genPkgVersion; exports.default = _default; const getNodeModuleVersion = (0, _memoize2.default)(pkgPath => { if ((0, _isBuiltinModule.default)(pkgPath)) { return getCurrentNodeVersion(); } const { version } = readPkgUp(pkgPath); return version; }); function getLocalFileVersion(filePath) { const { code, imports } = (0, _findFileImports.default)(filePath); return { imports: imports.reduce((acc, pkg) => { acc[pkg] = genPkgVersion(pkg, _path.default.dirname(filePath)); return acc; }, {}), hash: (0, _genHash.default)(code) }; } function pkgMissingError(pkg) { return new Error(`couldn't find package '${pkg}'`); } function isNodeModule(pkgPath) { return /node_modules/u.test(pkgPath) || (0, _isBuiltinModule.default)(pkgPath); } function readPkgUp(cwd) { const pkgJSONPath = _findUp.default.sync('package.json', { cwd }); (0, _invariant.default)(pkgJSONPath, `[unexpected error] pakage.json not found for '${cwd}'`); return (0, _fsExtra.readJSONSync)(pkgJSONPath); } function getCurrentNodeVersion() { return process.version; }