module.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const fs = require("fs");
  4. const Debug = require("debug");
  5. const path = require("path");
  6. const debug = Debug('axm:utils:module');
  7. class ModuleUtils {
  8. static loadModule(modulePath, args) {
  9. let nodule;
  10. try {
  11. if (args) {
  12. nodule = require(modulePath).apply(this, args);
  13. }
  14. else {
  15. nodule = require(modulePath);
  16. }
  17. debug(`Succesfully required module at path ${modulePath}`);
  18. return nodule;
  19. }
  20. catch (err) {
  21. debug(`Failed to load module at path ${modulePath}: ${err.message}`);
  22. return err;
  23. }
  24. }
  25. static detectModule(moduleName) {
  26. const fakePath = ['./node_modules', '/node_modules'];
  27. if (!require.main) {
  28. return null;
  29. }
  30. const paths = typeof require.main.paths === 'undefined' ? fakePath : require.main.paths;
  31. const requirePaths = paths.slice();
  32. return ModuleUtils._lookForModule(requirePaths, moduleName);
  33. }
  34. static _lookForModule(requirePaths, moduleName) {
  35. const fsConstants = fs.constants || fs;
  36. for (let requirePath of requirePaths) {
  37. const completePath = path.join(requirePath, moduleName);
  38. debug(`Looking for module ${moduleName} in ${completePath}`);
  39. try {
  40. fs.accessSync(completePath, fsConstants.R_OK);
  41. debug(`Found module ${moduleName} in path ${completePath}`);
  42. return completePath;
  43. }
  44. catch (err) {
  45. debug(`module ${moduleName} not found in path ${completePath}`);
  46. continue;
  47. }
  48. }
  49. return null;
  50. }
  51. }
  52. exports.default = ModuleUtils;
  53. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF3QjtBQUN4QiwrQkFBOEI7QUFDOUIsNkJBQTRCO0FBRTVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBRXZDLE1BQXFCLFdBQVc7SUFJOUIsTUFBTSxDQUFDLFVBQVUsQ0FBRSxVQUFrQixFQUFFLElBQWE7UUFDbEQsSUFBSSxNQUFNLENBQUE7UUFDVixJQUFJO1lBQ0YsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO2FBQy9DO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7YUFDN0I7WUFDRCxLQUFLLENBQUMsdUNBQXVDLFVBQVUsRUFBRSxDQUFDLENBQUE7WUFDMUQsT0FBTyxNQUFNLENBQUE7U0FDZDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osS0FBSyxDQUFDLGlDQUFpQyxVQUFVLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDcEUsT0FBTyxHQUFHLENBQUE7U0FDWDtJQUNILENBQUM7SUFLRCxNQUFNLENBQUMsWUFBWSxDQUFFLFVBQWtCO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE1BQU0sS0FBSyxHQUFHLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRXZGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUVsQyxPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFLTyxNQUFNLENBQUMsY0FBYyxDQUFFLFlBQTJCLEVBQUUsVUFBa0I7UUFFNUUsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUE7UUFFdEMsS0FBSyxJQUFJLFdBQVcsSUFBSSxZQUFZLEVBQUU7WUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDdkQsS0FBSyxDQUFDLHNCQUFzQixVQUFVLE9BQU8sWUFBWSxFQUFFLENBQUMsQ0FBQTtZQUM1RCxJQUFJO2dCQUNGLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDN0MsS0FBSyxDQUFDLGdCQUFnQixVQUFVLFlBQVksWUFBWSxFQUFFLENBQUMsQ0FBQTtnQkFDM0QsT0FBTyxZQUFZLENBQUE7YUFDcEI7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixLQUFLLENBQUMsVUFBVSxVQUFVLHNCQUFzQixZQUFZLEVBQUUsQ0FBQyxDQUFBO2dCQUMvRCxTQUFRO2FBQ1Q7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGO0FBeERELDhCQXdEQyJ9