版博士V2.0程序
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

require-utils.js 2.6 KiB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.loadNewest = exports.requireFromCwd = exports.requireFromLinter = exports.getRequireFromCwd = exports.getRequireFromLinter = exports.createRequire = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const semver_1 = require("semver");
  9. function createRequire(filename) {
  10. const Module = require("module");
  11. const fn = Module.createRequire ||
  12. Module.createRequireFromPath ||
  13. ((filename2) => {
  14. const mod = new Module(filename2);
  15. mod.filename = filename2;
  16. mod.paths = Module._nodeModulePaths(path_1.default.dirname(filename2));
  17. mod._compile("module.exports = require;", filename2);
  18. return mod.exports;
  19. });
  20. return fn(filename);
  21. }
  22. exports.createRequire = createRequire;
  23. function isLinterPath(p) {
  24. return (p.includes(`eslint${path_1.default.sep}lib${path_1.default.sep}linter${path_1.default.sep}linter.js`) || p.includes(`eslint${path_1.default.sep}lib${path_1.default.sep}linter.js`));
  25. }
  26. function getRequireFromLinter() {
  27. const linterPath = Object.keys(require.cache).find(isLinterPath);
  28. if (linterPath) {
  29. try {
  30. return createRequire(linterPath);
  31. }
  32. catch (_a) {
  33. }
  34. }
  35. return null;
  36. }
  37. exports.getRequireFromLinter = getRequireFromLinter;
  38. function getRequireFromCwd() {
  39. try {
  40. const cwd = process.cwd();
  41. const relativeTo = path_1.default.join(cwd, "__placeholder__.js");
  42. return createRequire(relativeTo);
  43. }
  44. catch (_a) {
  45. }
  46. return null;
  47. }
  48. exports.getRequireFromCwd = getRequireFromCwd;
  49. function requireFromLinter(module) {
  50. var _a;
  51. try {
  52. return (_a = getRequireFromLinter()) === null || _a === void 0 ? void 0 : _a(module);
  53. }
  54. catch (_b) {
  55. }
  56. return null;
  57. }
  58. exports.requireFromLinter = requireFromLinter;
  59. function requireFromCwd(module) {
  60. var _a;
  61. try {
  62. return (_a = getRequireFromCwd()) === null || _a === void 0 ? void 0 : _a(module);
  63. }
  64. catch (_b) {
  65. }
  66. return null;
  67. }
  68. exports.requireFromCwd = requireFromCwd;
  69. function loadNewest(items) {
  70. let target = null;
  71. for (const item of items) {
  72. const pkg = item.getPkg();
  73. if (pkg != null && (!target || (0, semver_1.lte)(target.version, pkg.version))) {
  74. target = { version: pkg.version, get: item.get };
  75. }
  76. }
  77. return target.get();
  78. }
  79. exports.loadNewest = loadNewest;