//! Built-in plugin instantiation.
//!
//! Contains the canonical list of all built-in plugins, categorized by domain.

use super::super::{
    Plugin, adonis::AdonisPlugin, angular::AngularPlugin, astro::AstroPlugin, ava::AvaPlugin,
    babel::BabelPlugin, biome::BiomePlugin, browser_extension::BrowserExtensionPlugin,
    bun::BunPlugin, c8::C8Plugin, capacitor::CapacitorPlugin, changesets::ChangesetsPlugin,
    commitizen::CommitizenPlugin, commitlint::CommitlintPlugin,
    content_collections::ContentCollectionsPlugin, contentlayer::ContentlayerPlugin,
    convex::ConvexPlugin, cspell::CspellPlugin, cucumber::CucumberPlugin, cypress::CypressPlugin,
    danger::DangerPlugin, dependency_cruiser::DependencyCruiserPlugin,
    docusaurus::DocusaurusPlugin, drizzle::DrizzlePlugin, electron::ElectronPlugin,
    ember::EmberPlugin, eslint::EslintPlugin, expo::ExpoPlugin, expo_router::ExpoRouterPlugin,
    firebase::FirebasePlugin, fumadocs::FumadocsPlugin, gatsby::GatsbyPlugin,
    graphql_codegen::GraphqlCodegenPlugin, hardhat::HardhatPlugin, husky::HuskyPlugin,
    i18next::I18nextPlugin, ionic::IonicPlugin, jest::JestPlugin, k6::K6Plugin, karma::KarmaPlugin,
    knex::KnexPlugin, kysely::KyselyPlugin, lefthook::LefthookPlugin, lexical::LexicalPlugin,
    lint_staged::LintStagedPlugin, lit::LitPlugin, markdownlint::MarkdownlintPlugin,
    mintlify::MintlifyPlugin, mocha::MochaPlugin, msw::MswPlugin, nestjs::NestJsPlugin,
    next_intl::NextIntlPlugin, nextjs::NextJsPlugin, nitro::NitroPlugin, nodemon::NodemonPlugin,
    nuxt::NuxtPlugin, nx::NxPlugin, nyc::NycPlugin, obsidian::ObsidianPlugin,
    openapi_ts::OpenapiTsPlugin, opencode::OpenCodePlugin,
    opennext_cloudflare::OpenNextCloudflarePlugin, oxlint::OxlintPlugin, pandacss::PandaCssPlugin,
    parcel::ParcelPlugin, pinia::PiniaPlugin, pkg_utils::PkgUtilsPlugin,
    playwright::PlaywrightPlugin, plop::PlopPlugin, pm2::Pm2Plugin, pnpm::PnpmPlugin,
    postcss::PostCssPlugin, prettier::PrettierPlugin, prisma::PrismaPlugin, qwik::QwikPlugin,
    react_native::ReactNativePlugin, react_router::ReactRouterPlugin, redwoodsdk::RedwoodSdkPlugin,
    relay::RelayPlugin, remark::RemarkPlugin, remix::RemixPlugin, rolldown::RolldownPlugin,
    rollup::RollupPlugin, rsbuild::RsbuildPlugin, rspack::RspackPlugin, rspress::RspressPlugin,
    sanity::SanityPlugin, semantic_release::SemanticReleasePlugin, sentry::SentryPlugin,
    simple_git_hooks::SimpleGitHooksPlugin, storybook::StorybookPlugin, stryker::StrykerPlugin,
    stylelint::StylelintPlugin, supabase::SupabasePlugin, sveltekit::SvelteKitPlugin,
    svgo::SvgoPlugin, svgr::SvgrPlugin, swc::SwcPlugin, syncpack::SyncpackPlugin,
    tailwind::TailwindPlugin, tanstack_router::TanstackRouterPlugin, tap::TapPlugin,
    tsd::TsdPlugin, tsdown::TsdownPlugin, tsup::TsupPlugin, turborepo::TurborepoPlugin,
    typedoc::TypedocPlugin, typeorm::TypeormPlugin, typescript::TypeScriptPlugin,
    unocss::UnoCssPlugin, varlock::VarlockPlugin, velite::VelitePlugin, vercel::VercelPlugin,
    vite::VitePlugin, vitepress::VitePressPlugin, vitest::VitestPlugin,
    webdriverio::WebdriverioPlugin, webpack::WebpackPlugin, wrangler::WranglerPlugin,
    wuchale::WuchalePlugin, wxt::WxtPlugin,
};

/// Create all built-in plugin instances, categorized by domain.
pub fn create_builtin_plugins() -> Vec<Box<dyn Plugin>> {
    vec![
        Box::new(NextJsPlugin),
        Box::new(NuxtPlugin),
        Box::new(PiniaPlugin),
        Box::new(RemixPlugin),
        Box::new(AstroPlugin),
        Box::new(BrowserExtensionPlugin),
        Box::new(WxtPlugin),
        Box::new(AngularPlugin),
        Box::new(ReactRouterPlugin),
        Box::new(RedwoodSdkPlugin),
        Box::new(TanstackRouterPlugin),
        Box::new(ReactNativePlugin),
        Box::new(ExpoPlugin),
        Box::new(ExpoRouterPlugin),
        Box::new(FirebasePlugin),
        Box::new(NestJsPlugin),
        Box::new(AdonisPlugin),
        Box::new(DocusaurusPlugin),
        Box::new(GatsbyPlugin),
        Box::new(SvelteKitPlugin),
        Box::new(NitroPlugin),
        Box::new(CapacitorPlugin),
        Box::new(IonicPlugin),
        Box::new(SanityPlugin),
        Box::new(SupabasePlugin),
        Box::new(VitePressPlugin),
        Box::new(RspressPlugin),
        Box::new(NextIntlPlugin),
        Box::new(RelayPlugin),
        Box::new(ElectronPlugin),
        Box::new(I18nextPlugin),
        Box::new(QwikPlugin),
        Box::new(ConvexPlugin),
        Box::new(LitPlugin),
        Box::new(LexicalPlugin),
        Box::new(ObsidianPlugin),
        Box::new(ContentCollectionsPlugin),
        Box::new(ContentlayerPlugin),
        Box::new(FumadocsPlugin),
        Box::new(MintlifyPlugin),
        Box::new(VelitePlugin),
        Box::new(EmberPlugin),
        Box::new(VitePlugin),
        Box::new(WebpackPlugin),
        Box::new(RollupPlugin),
        Box::new(RolldownPlugin),
        Box::new(RspackPlugin),
        Box::new(RsbuildPlugin),
        Box::new(TsupPlugin),
        Box::new(TsdownPlugin),
        Box::new(PkgUtilsPlugin),
        Box::new(ParcelPlugin),
        Box::new(VitestPlugin),
        Box::new(JestPlugin),
        Box::new(PlaywrightPlugin),
        Box::new(CypressPlugin),
        Box::new(MochaPlugin),
        Box::new(AvaPlugin),
        Box::new(TapPlugin),
        Box::new(TsdPlugin),
        Box::new(K6Plugin),
        Box::new(StorybookPlugin),
        Box::new(StrykerPlugin),
        Box::new(KarmaPlugin),
        Box::new(CucumberPlugin),
        Box::new(WebdriverioPlugin),
        Box::new(EslintPlugin),
        Box::new(BiomePlugin),
        Box::new(StylelintPlugin),
        Box::new(PrettierPlugin),
        Box::new(OxlintPlugin),
        Box::new(MarkdownlintPlugin),
        Box::new(CspellPlugin),
        Box::new(RemarkPlugin),
        Box::new(TypeScriptPlugin),
        Box::new(BabelPlugin),
        Box::new(SwcPlugin),
        Box::new(TailwindPlugin),
        Box::new(PostCssPlugin),
        Box::new(UnoCssPlugin),
        Box::new(PandaCssPlugin),
        Box::new(PrismaPlugin),
        Box::new(DrizzlePlugin),
        Box::new(KnexPlugin),
        Box::new(TypeormPlugin),
        Box::new(KyselyPlugin),
        Box::new(TurborepoPlugin),
        Box::new(NxPlugin),
        Box::new(ChangesetsPlugin),
        Box::new(SyncpackPlugin),
        Box::new(CommitlintPlugin),
        Box::new(CommitizenPlugin),
        Box::new(SemanticReleasePlugin),
        Box::new(DangerPlugin),
        Box::new(HardhatPlugin),
        Box::new(VercelPlugin),
        Box::new(WranglerPlugin),
        Box::new(OpenNextCloudflarePlugin),
        Box::new(SentryPlugin),
        Box::new(HuskyPlugin),
        Box::new(LintStagedPlugin),
        Box::new(LefthookPlugin),
        Box::new(SimpleGitHooksPlugin),
        Box::new(SvgoPlugin),
        Box::new(SvgrPlugin),
        Box::new(GraphqlCodegenPlugin),
        Box::new(TypedocPlugin),
        Box::new(OpenapiTsPlugin),
        Box::new(PlopPlugin),
        Box::new(C8Plugin),
        Box::new(NycPlugin),
        Box::new(MswPlugin),
        Box::new(OpenCodePlugin),
        Box::new(NodemonPlugin),
        Box::new(Pm2Plugin),
        Box::new(DependencyCruiserPlugin),
        Box::new(WuchalePlugin),
        Box::new(VarlockPlugin),
        Box::new(PnpmPlugin),
        Box::new(BunPlugin),
    ]
}
