function generateTypes (quasarConf) {
  const { appPaths } = quasarConf.ctx
  const tsConfigDir = appPaths.resolve.app('.quasar')

  const fsUtils = {
    tsConfigDir,
    writeFileSync (filename, content) {
      const file = join(tsConfigDir, filename)

      // Avoid unnecessary writes which will trigger esbuild
      // to recompile & apply quasar.config file changes
      if (
        fse.existsSync(file) === false
        || fse.readFileSync(file, 'utf-8') !== content
      ) {
        fse.writeFileSync(file, content, 'utf-8')
      }
    }
  }

  fse.ensureDirSync(tsConfigDir)

  generateTsConfig(quasarConf, fsUtils)
  writeFeatureFlags(quasarConf, fsUtils)
  writeDeclarations(quasarConf, fsUtils)
}
@param {import('../types/configuration/conf').ResolvedQuasarConf} quasarConf