getPatchMap = async () => {
  const [exercises, patches] = await Promise.all([
    getFilesInFolder("../../exercises"),
    getFilesInFolder("../../patch"),
  ]);

  const map = new Map();
  for (const { name, content } of exercises) {
    if (!name.endsWith(".wat")) continue;

    map.set(basename(name, ".wat"), { exercise: content });
  }

  for (const { name, content } of patches) {
    if (!name.endsWith(".patch")) continue;

    const baseName = basename(name, ".patch");
    if (!map.has(baseName)) {
      console.log(map);
      throw new Error(`No exercise file found for patch ${name}`);
    }
    map.get(baseName).patch = content;
  }

  return map;
}
@returns {Promise<Map<string, { exercise: string, patch?: string }>>}