code: function getTypingNamesFromNodeModuleFolder(nodeModulesPath) {
                  // Todo: add support for ModuleResolutionHost too
                  if (!host.directoryExists(nodeModulesPath)) {
                      return;
                  }
                  var typingNames = [];
                  var fileNames = host.readDirectory(nodeModulesPath, [".json"], /*excludes*/ undefined, /*includes*/ undefined, /*depth*/ 2);
                  for (var _i = 0, fileNames_2 = fileNames; _i < fileNames_2.length; _i++) {
                      var fileName = fileNames_2[_i];
                      var normalizedFileName = ts.normalizePath(fileName);
                      if (ts.getBaseFileName(normalizedFileName) !== "package.json") {
                          continue;
                      }
                      var result = ts.readConfigFile(normalizedFileName, function (path) { return host.readFile(path); });
                      if (!result.config) {
                          continue;
                      }
                      var packageJson = result.config;
                      // npm 3's package.json contains a "_requiredBy" field
                      // we should include all the top level module names for npm 2, and only module names whose
                      // "_requiredBy" field starts with "#" or equals "/" for npm 3.
                      if (packageJson._requiredBy &&
                          ts.filter(packageJson._requiredBy, function (r) { return r[0] === "#" || r === "/"; }).length === 0) {
                          continue;
                      }
                      // If the package has its own d.ts typings, those will take precedence. Otherwise the package name will be used
                      // to download d.ts files from DefinitelyTyped
                      if (!packageJson.name) {
                          continue;
                      }
                      if (packageJson.typings) {
                          var absolutePath = ts.getNormalizedAbsolutePath(packageJson.typings, ts.getDirectoryPath(normalizedFileName));
                          inferredTypings[packageJson.name] = absolutePath;
                      }
                      else {
                          typingNames.push(packageJson.name);
                      }
                  }
                  mergeTypings(typingNames);
              }
docs: Infer typing names from node_module folder
  @param nodeModulesPath is the path to the "node_modules" folder