mapNodeModules = async (
  readPowers,
  moduleLocation,
  { tags = new Set(), conditions = tags, log = noop, ...otherOptions } = {},
) => {
  const {
    packageLocation,
    packageDescriptorText,
    packageDescriptorLocation,
    moduleSpecifier,
  } = await search(readPowers, moduleLocation, { log });

  const packageDescriptor = /** @type {PackageDescriptor} */ (
    parseLocatedJson(packageDescriptorText, packageDescriptorLocation)
  );

  return compartmentMapForNodeModules(
    readPowers,
    packageLocation,
    conditions,
    packageDescriptor,
    moduleSpecifier,
    { log, ...otherOptions },
  );
}
Creates a {@link CompartmentMapDescriptor} from the module at
`moduleLocation`, considering dependencies found in `node_modules`.

Locates the {@link PackageDescriptor} for the module at `moduleLocation`

@param {ReadFn | ReadPowers | MaybeReadPowers} readPowers
@param {string} moduleLocation
@param {MapNodeModulesOptions} [options]
@returns {Promise<CompartmentMapDescriptor>}