JezK
Edit File: base-fetcher.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; function _regenerator() { var data = _interopRequireDefault(require("@babel/runtime/regenerator")); _regenerator = function _regenerator() { return data; }; return data; } function _asyncToGenerator2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); _asyncToGenerator2 = function _asyncToGenerator2() { return data; }; return data; } function _classCallCheck2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); _classCallCheck2 = function _classCallCheck2() { return data; }; return data; } function _createClass2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); _createClass2 = function _createClass2() { return data; }; return data; } function _defineProperty2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); _defineProperty2 = function _defineProperty2() { return data; }; return data; } function _index() { var data = _interopRequireDefault(require("../util/normalize-manifest/index.js")); _index = function _index() { return data; }; return data; } function constants() { var data = _interopRequireWildcard(require("../constants.js")); constants = function constants() { return data; }; return data; } function fs() { var data = _interopRequireWildcard(require("../util/fs.js")); fs = function fs() { return data; }; return data; } function _mutex() { var data = _interopRequireDefault(require("../util/mutex.js")); _mutex = function _mutex() { return data; }; return data; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* eslint no-unused-vars: 0 */ var path = require('path'); var BaseFetcher = /*#__PURE__*/function () { function BaseFetcher(dest, remote, config) { (0, _classCallCheck2()["default"])(this, BaseFetcher); (0, _defineProperty2()["default"])(this, "reporter", void 0); (0, _defineProperty2()["default"])(this, "remote", void 0); (0, _defineProperty2()["default"])(this, "registry", void 0); (0, _defineProperty2()["default"])(this, "packageName", void 0); (0, _defineProperty2()["default"])(this, "reference", void 0); (0, _defineProperty2()["default"])(this, "config", void 0); (0, _defineProperty2()["default"])(this, "hash", void 0); (0, _defineProperty2()["default"])(this, "dest", void 0); this.reporter = config.reporter; this.packageName = remote.packageName; this.reference = remote.reference; this.registry = remote.registry; this.hash = remote.hash; this.remote = remote; this.config = config; this.dest = dest; } (0, _createClass2()["default"])(BaseFetcher, [{ key: "setupMirrorFromCache", value: function setupMirrorFromCache() { // fetcher subclasses may use this to perform actions such as copying over a cached tarball to the offline // mirror etc return Promise.resolve(); } }, { key: "_fetch", value: function _fetch() { return Promise.reject(new Error('Not implemented')); } }, { key: "fetch", value: function fetch(defaultManifest) { var _this = this; return fs().lockQueue.push(this.dest, /*#__PURE__*/(0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee2() { var _yield$_this$_fetch, hash, pkg, _i, _Object$keys, binName, binDest, src, unlockMutex; return _regenerator()["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return fs().mkdirp(_this.dest); case 2: _context2.next = 4; return _this._fetch(); case 4: _yield$_this$_fetch = _context2.sent; hash = _yield$_this$_fetch.hash; _context2.next = 8; return (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee() { return _regenerator()["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return _this.config.readManifest(_this.dest, _this.registry); case 3: return _context.abrupt("return", _context.sent); case 6: _context.prev = 6; _context.t0 = _context["catch"](0); if (!(_context.t0.code === 'ENOENT' && defaultManifest)) { _context.next = 12; break; } return _context.abrupt("return", (0, _index()["default"])(defaultManifest, _this.dest, _this.config, false)); case 12: throw _context.t0; case 13: case "end": return _context.stop(); } }, _callee, null, [[0, 6]]); }))(); case 8: pkg = _context2.sent; if (!pkg.bin) { _context2.next = 34; break; } _i = 0, _Object$keys = Object.keys(pkg.bin); case 11: if (!(_i < _Object$keys.length)) { _context2.next = 34; break; } binName = _Object$keys[_i]; binDest = "".concat(_this.dest, "/.bin"); // Using any sort of absolute path here would prevent makePortableProxyScript from preserving symlinks when // calling the binary src = path.resolve(_this.dest, pkg.bin[binName]); _context2.next = 17; return fs().exists(src); case 17: if (!_context2.sent) { _context2.next = 20; break; } _context2.next = 20; return fs().chmod(src, 493); case 20: _context2.next = 22; return fs().mkdirp(binDest); case 22: if (!(process.platform === 'win32')) { _context2.next = 29; break; } _context2.next = 25; return (0, _mutex()["default"])(src); case 25: unlockMutex = _context2.sent; try { ; } finally { unlockMutex(); } _context2.next = 31; break; case 29: _context2.next = 31; return fs().symlink(src, "".concat(binDest, "/").concat(binName)); case 31: _i++; _context2.next = 11; break; case 34: _context2.next = 36; return fs().writeFile(path.join(_this.dest, constants().METADATA_FILENAME), JSON.stringify({ manifest: pkg, artifacts: [], remote: _this.remote, registry: _this.registry, hash: hash }, null, ' ')); case 36: return _context2.abrupt("return", { hash: hash, dest: _this.dest, "package": pkg, cached: false }); case 37: case "end": return _context2.stop(); } }, _callee2); }))); } }]); return BaseFetcher; }(); exports["default"] = BaseFetcher; //# sourceMappingURL=base-fetcher.js.map