function getComponentStatuses()

in script/component-status-project/build.ts [21:54]


function getComponentStatuses(filenames: string[], dir: string) {
  const promises: Promise<ComponentStatus | null>[] = []

  const handleCallback = (
    filename: string,
    resolve: (value: ComponentStatus | null) => void,
    reject: (value: unknown) => void
  ) => {
    fs.readFile(path.resolve(dir, filename), 'utf-8', (err, content) => {
      if (err) return reject(err)

      if (fm.test(content)) {
        const {
          attributes: {title, status}
        } = fm(content)

        if (status) {
          return resolve({[title]: status})
        }
      }

      resolve(null)
    })
  }

  for (const filename of filenames) {
    const promise: Promise<ComponentStatus | null> = new Promise((resolve, reject) => {
      return handleCallback(filename, resolve, reject)
    })
    promises.push(promise)
  }

  return Promise.all(promises)
}