1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
6 |
|
7 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
8 |
|
9 | const _require = require('path'),
|
10 | dirname = _require.dirname;
|
11 |
|
12 | const _require2 = require('@parcel/utils'),
|
13 | promisify = _require2.promisify;
|
14 |
|
15 | const resolve = promisify(require('resolve'));
|
16 |
|
17 | const installPackage = require('./installPackage');
|
18 |
|
19 | const getModuleParts = require('./getModuleParts');
|
20 |
|
21 | const cache = new Map();
|
22 |
|
23 | function localRequire(_x, _x2) {
|
24 | return _localRequire.apply(this, arguments);
|
25 | }
|
26 |
|
27 | function _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 |
|
38 | function localResolve(_x3, _x4) {
|
39 | return _localResolve.apply(this, arguments);
|
40 | }
|
41 |
|
42 | function _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 |
|
71 | localRequire.resolve = localResolve;
|
72 | module.exports = localRequire; |
\ | No newline at end of file |