« get me outta code hell

io.js « util « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/util/io.js
blob: 12e87f4d30fa5ed54cb0bf80f67fa4dc1edcefa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Utility functions for interacting with files and other external data
// interfacey constructs.

import {readdir} from 'fs/promises';
import * as path from 'path';

export async function findFiles(dataPath, {
  filter = () => true,
  joinParentDirectory = true,
} = {}) {
  let files;
  try {
    files = await readdir(dataPath);
  } catch (error) {
    throw Object.assign(
      new AggregateError([error], `Failed to list files from ${dataPath}`),
      {code: error.code});
  }

  return files
    .filter((file) => filter(file))
    .map((file) => (joinParentDirectory ? path.join(dataPath, file) : file));
}