<commit_before><commit_msg>source file path/resolve/sync.js<commit_after>var core = require('./core');
var fs = require('fs');
var path = require('path');
var caller = require('./caller.js');
var nodeModulesPaths = require('./node-modules-paths.js');

module.exports = function (x, opts) {
  if (!opts) opts = {};
  var isFile = opts.isFile || function (file) {
    try { var stat = fs.statSync(file) }
    catch (err) { if (err && err.code === 'ENOENT') return false }
    return stat.isFile() || stat.isFIFO();
  };
  var readFileSync = opts.readFileSync || fs.readFileSync;

  var extensions = opts.extensions || [ '.js' ];
  var y = opts.basedir || path.dirname(caller());

  opts.paths = opts.paths || [];

  if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/.test(x)) {
    var res = path.resolve(y, x);
    if (x === '..') res += '/';
    var m = loadAsFileSync(res) || loadAsDirectorySync(res);
    if (m) return m;
  } else {
    var n = loadNodeModulesSync(x, y);
    if (n) return n;
  }

  if (core[x]) return x;

  throw new Error("Cannot find module '" + x + "' from '" + y + "'");

  function loadAsFileSync (x) {
    if (isFile(x)) {
      return x;
    }

    for (var i = 0; i < extensions.length; i++) {
      var file = x + extensions[i];
      if (isFile(file)) {
        return file;
      }
    }
  }

  function loadAsDirectorySync (x) {
    var pkgfile = path.join(x, '/package.json');
    if (isFile(pkgfile)) {
      var body = readFileSync(pkgfile, 'utf8');
      try {
        var pkg = JSON.parse(body);
        if (opts.packageFilter) {
          pkg = opts.packageFilter(pkg, x);
        }

        if (pkg.main) {
          var m = loadAsFileSync(path.resolve(x, pkg.main));
          if (m) return m;
          var n = loadAsDirectorySync(path.resolve(x, pkg.main));
          if (n) return n;
        }
      }
      catch (err) {}
    }

    return loadAsFileSync(path.join( x, '/index'));
  }

  function loadNodeModulesSync (x, start) {
    var dirs = nodeModulesPaths(start, opts);
    for (var i = 0; i < dirs.length; i++) {
      var dir = dirs[i];
      var m = loadAsFileSync(path.join( dir, '/', x));
      if (m) return m;
      var n = loadAsDirectorySync(path.join( dir, '/', x ));
      if (n) return n;
    }
  }
};
{'fraction_non_alphanumeric': 0.18672566371681415, 'fraction_numerical': 0.001327433628318584, 'mean_word_length': 2.394894894894895, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4005332', 'n_tokens_mistral': 805, 'n_tokens_neox': 789, 'n_words': 200}