UNPKG

1.95 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
6
7var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
9const _require = require('path'),
10 dirname = _require.dirname;
11
12const _require2 = require('@parcel/utils'),
13 promisify = _require2.promisify;
14
15const resolve = promisify(require('resolve'));
16
17const installPackage = require('./installPackage');
18
19const getModuleParts = require('./getModuleParts');
20
21const cache = new Map();
22
23function localRequire(_x, _x2) {
24 return _localRequire.apply(this, arguments);
25}
26
27function _localRequire() {
28 _localRequire = (0, _asyncToGenerator2.default)(function* (name, path, triedInstall = false) {
29 let _ref = yield localResolve(name, path, triedInstall),
30 _ref2 = (0, _slicedToArray2.default)(_ref, 1),
31 resolved = _ref2[0];
32
33 return require(resolved);
34 });
35 return _localRequire.apply(this, arguments);
36}
37
38function localResolve(_x3, _x4) {
39 return _localResolve.apply(this, arguments);
40}
41
42function _localResolve() {
43 _localResolve = (0, _asyncToGenerator2.default)(function* (name, path, triedInstall = false) {
44 let basedir = dirname(path);
45 let key = basedir + ':' + name;
46 let resolved = cache.get(key);
47
48 if (!resolved) {
49 try {
50 resolved = yield resolve(name, {
51 basedir
52 });
53 } catch (e) {
54 if (e.code === 'MODULE_NOT_FOUND' && !triedInstall) {
55 const packageName = getModuleParts(name)[0];
56 yield installPackage(packageName, path);
57 return localResolve(name, path, true);
58 }
59
60 throw e;
61 }
62
63 cache.set(key, resolved);
64 }
65
66 return resolved;
67 });
68 return _localResolve.apply(this, arguments);
69}
70
71localRequire.resolve = localResolve;
72module.exports = localRequire;
\No newline at end of file