resolve-from.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.resolveFrom = void 0;
  6. var _fs = _interopRequireDefault(require("fs"));
  7. var _path = _interopRequireDefault(require("path"));
  8. var _isError = _interopRequireDefault(require("./is-error"));
  9. function _interopRequireDefault(obj) {
  10. return obj && obj.__esModule ? obj : {
  11. default: obj
  12. };
  13. }
  14. const Module = require("module");
  15. const resolveFrom = (fromDirectory, moduleId, silent)=>{
  16. if (typeof fromDirectory !== "string") {
  17. throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDirectory}\``);
  18. }
  19. if (typeof moduleId !== "string") {
  20. throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``);
  21. }
  22. try {
  23. fromDirectory = _fs.default.realpathSync(fromDirectory);
  24. } catch (error) {
  25. if ((0, _isError).default(error) && error.code === "ENOENT") {
  26. fromDirectory = _path.default.resolve(fromDirectory);
  27. } else if (silent) {
  28. return;
  29. } else {
  30. throw error;
  31. }
  32. }
  33. const fromFile = _path.default.join(fromDirectory, "noop.js");
  34. const resolveFileName = ()=>Module._resolveFilename(moduleId, {
  35. id: fromFile,
  36. filename: fromFile,
  37. paths: Module._nodeModulePaths(fromDirectory)
  38. });
  39. if (silent) {
  40. try {
  41. return resolveFileName();
  42. } catch (error) {
  43. return;
  44. }
  45. }
  46. return resolveFileName();
  47. };
  48. exports.resolveFrom = resolveFrom;
  49. //# sourceMappingURL=resolve-from.js.map