function lookupInPackage()

in packages/kotlin-webpack-plugin/libraries-lookup.js [5:36]


function lookupInPackage(pkg) {
  return (
    [
      ...Object.keys(pkg.dependencies || {}),
      ...Object.keys(pkg.devDependencies || {}),
      ...Object.keys(pkg.peerDependencies || {}),
    ]
      // We provide the Kotlin runtime externally, so we aren't looking for it
      .filter((dependencyName) => dependencyName !== 'kotlin')
      .map((dependencyName) => {
        try {
          let main;
          if (require.resolve.paths) {
            // resolve only searches this scripts node_modules for the dependency in newer versions
            const paths = require.resolve.paths(dependencyName);
            paths.push(path.resolve(process.cwd(), 'node_modules'));
            main = require.resolve(dependencyName, { paths });
          } else {
            main = require.resolve(dependencyName);
          }
          // Kotlin libraries contain a <libraryname>.meta.js file
          const hasKotlinMetaFile = fs.existsSync(
            main.replace(/(\.js)?$/, '.meta.js')
          );
          return hasKotlinMetaFile ? main : null;
        } catch (err) {
          return null;
        }
      })
      .filter((dependencyMainFilePath) => !!dependencyMainFilePath)
  );
}