async function readZIP(zipBlob) {
  const zipReader = new ZipReader(new BlobReader(zipBlob));
  const zipEntries = await zipReader.getEntries({
    filenameEncoding: 'utf-8',
  });
  const zipEntriesWithData = /** @type {string[][]} */ (
    (
      await Promise.all(
        zipEntries.filter((entry) => !entry.directory).map((entry) => resolveZIPEntryData(entry)),
      )
    ).filter((entry) => !!entry[1])
  );
  return Object.fromEntries(zipEntriesWithData);
}
@param {Blob} zipBlob
@returns {Promise<Record<string, string>>}