|                                          |  | import { Plugin } from 'vite'import fs from 'node:fs'import path from 'node:path'
export function generateComponentTypes(): Plugin {  return {    name: 'generate-component-types',    async buildStart() {      const componentsDir = path.resolve(process.cwd(), 'src/components')      const dtsPath = path.resolve(process.cwd(), 'src/components/components.d.ts')
      // Get immediate subdirectories only
      const directories = fs        .readdirSync(componentsDir, { withFileTypes: true })        .filter((dirent) => dirent.isDirectory())        .map((dirent) => dirent.name)
      // Generate type definitions only for valid components
      const typeDefinitions = directories        .filter((dir) => {          // Check if ComponentName/ComponentName.vue exists
          const componentFile = path.join(componentsDir, dir, `${dir}.vue`)          return fs.existsSync(componentFile)        })        .map((dir) => {          return `${dir}: typeof import('./${dir}/${dir}.vue')['default']`        })
      // Create the type definition file content
      const content = `declare module 'vue' {
  export interface GlobalComponents {${typeDefinitions.join('\n')}  }}
export {}`
      // Write the type definition file
      fs.writeFileSync(dtsPath, content, 'utf-8')    },  }}
 |