UNPKG

2.23 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.resolve = resolve;
7exports.resolveSync = resolveSync;
8
9var _promisify = _interopRequireDefault(require("./promisify"));
10
11var _resolve2 = _interopRequireDefault(require("resolve"));
12
13var _ = require("../");
14
15var _module = _interopRequireDefault(require("module"));
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19// $FlowFixMe TODO: Type promisify
20// $FlowFixMe this is untyped
21const resolveAsync = (0, _promisify.default)(_resolve2.default);
22
23async function resolve(fs, id, opts) {
24 if (id === 'pnpapi') {
25 // the resolve package doesn't recognize pnpapi as a builtin
26 return {
27 resolved: 'pnpapi'
28 };
29 }
30
31 let res = await resolveAsync(id, { ...opts,
32
33 async readFile(filename, callback) {
34 try {
35 let res = await fs.readFile(filename);
36 callback(null, res);
37 } catch (err) {
38 callback(err);
39 }
40 },
41
42 async isFile(file, callback) {
43 try {
44 let stat = await fs.stat(file);
45 callback(null, stat.isFile());
46 } catch (err) {
47 callback(null, false);
48 }
49 },
50
51 async isDirectory(file, callback) {
52 try {
53 let stat = await fs.stat(file);
54 callback(null, stat.isDirectory());
55 } catch (err) {
56 callback(null, false);
57 }
58 }
59
60 });
61
62 if (typeof res === 'string') {
63 return {
64 resolved: res
65 };
66 }
67
68 return {
69 resolved: res[0],
70 pkg: res[1]
71 };
72}
73
74function resolveSync(fs, id, opts) {
75 if (id === 'pnpapi') {
76 // the resolve package doesn't recognize pnpapi as a builtin
77 return {
78 resolved: 'pnpapi'
79 };
80 } // $FlowFixMe
81
82
83 let res = _resolve2.default.sync(id, { ...opts,
84 readFileSync: (...args) => {
85 return fs.readFileSync(...args);
86 },
87 isFile: file => {
88 try {
89 let stat = fs.statSync(file);
90 return stat.isFile();
91 } catch (err) {
92 return false;
93 }
94 },
95 isDirectory: file => {
96 try {
97 let stat = fs.statSync(file);
98 return stat.isDirectory();
99 } catch (err) {
100 return false;
101 }
102 }
103 });
104
105 return {
106 resolved: res
107 };
108}
\No newline at end of file