function _hasFolderPackageJsonTypeModule()

in src/UserFunction.js [87:123]


function _hasFolderPackageJsonTypeModule(folder) {
  // Check if package.json exists, return true if type === "module" in package json.
  // If there is no package.json, and there is a node_modules, return false.
  // Check parent folder otherwise, if there is one.
  if (folder.endsWith('/node_modules')) {
    return false;
  }

  const pj = path.join(folder, '/package.json');
  if (fs.existsSync(pj)) {
    try {
      const pkg = JSON.parse(fs.readFileSync(pj));
      if (pkg) {
        if (pkg.type === 'module') {
          verbose('type: module detected in', pj);
          return true;
        } else {
          verbose('type: module not detected in', pj);
          return false;
        }
      }
    } catch (e) {
      console.warn(
        `${pj} cannot be read, it will be ignored for ES module detection purposes.`,
        e,
      );
      return false;
    }
  }

  if (folder === '/') {
    // We have reached root without finding either a package.json or a node_modules.
    return false;
  }

  return _hasFolderPackageJsonTypeModule(path.resolve(folder, '..'));
}