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, napi_rs::NapiRsPlugin,
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, vscode::VscodePlugin,
webdriverio::WebdriverioPlugin, webpack::WebpackPlugin, wrangler::WranglerPlugin,
wuchale::WuchalePlugin, wxt::WxtPlugin,
};
macro_rules! push_plugins {
($plugins:expr, $($plugin:expr),+ $(,)?) => {
$(
$plugins.push(Box::new($plugin));
)+
};
}
pub fn create_builtin_plugins() -> Vec<Box<dyn Plugin>> {
let mut plugins = Vec::new();
add_framework_plugins(&mut plugins);
add_content_and_platform_plugins(&mut plugins);
add_build_and_test_plugins(&mut plugins);
add_quality_and_language_plugins(&mut plugins);
add_tooling_and_infra_plugins(&mut plugins);
plugins
}
fn add_framework_plugins(plugins: &mut Vec<Box<dyn Plugin>>) {
push_plugins!(
plugins,
NextJsPlugin,
NuxtPlugin,
PiniaPlugin,
RemixPlugin,
AstroPlugin,
BrowserExtensionPlugin,
WxtPlugin,
AngularPlugin,
ReactRouterPlugin,
RedwoodSdkPlugin,
TanstackRouterPlugin,
ReactNativePlugin,
ExpoPlugin,
ExpoRouterPlugin,
FirebasePlugin,
NestJsPlugin,
AdonisPlugin,
DocusaurusPlugin,
GatsbyPlugin,
SvelteKitPlugin,
NitroPlugin,
CapacitorPlugin,
IonicPlugin,
);
}
fn add_content_and_platform_plugins(plugins: &mut Vec<Box<dyn Plugin>>) {
push_plugins!(
plugins,
SanityPlugin,
SupabasePlugin,
VitePressPlugin,
RspressPlugin,
NextIntlPlugin,
RelayPlugin,
ElectronPlugin,
I18nextPlugin,
QwikPlugin,
ConvexPlugin,
LitPlugin,
LexicalPlugin,
ObsidianPlugin,
ContentCollectionsPlugin,
ContentlayerPlugin,
FumadocsPlugin,
MintlifyPlugin,
VelitePlugin,
EmberPlugin,
);
}
fn add_build_and_test_plugins(plugins: &mut Vec<Box<dyn Plugin>>) {
push_plugins!(
plugins,
VitePlugin,
VscodePlugin,
WebpackPlugin,
RollupPlugin,
RolldownPlugin,
RspackPlugin,
RsbuildPlugin,
TsupPlugin,
TsdownPlugin,
PkgUtilsPlugin,
ParcelPlugin,
VitestPlugin,
JestPlugin,
PlaywrightPlugin,
CypressPlugin,
MochaPlugin,
AvaPlugin,
TapPlugin,
TsdPlugin,
K6Plugin,
StorybookPlugin,
StrykerPlugin,
KarmaPlugin,
CucumberPlugin,
WebdriverioPlugin,
);
}
fn add_quality_and_language_plugins(plugins: &mut Vec<Box<dyn Plugin>>) {
push_plugins!(
plugins,
EslintPlugin,
BiomePlugin,
StylelintPlugin,
PrettierPlugin,
OxlintPlugin,
MarkdownlintPlugin,
CspellPlugin,
RemarkPlugin,
TypeScriptPlugin,
BabelPlugin,
SwcPlugin,
TailwindPlugin,
PostCssPlugin,
UnoCssPlugin,
PandaCssPlugin,
PrismaPlugin,
DrizzlePlugin,
KnexPlugin,
TypeormPlugin,
KyselyPlugin,
);
}
fn add_tooling_and_infra_plugins(plugins: &mut Vec<Box<dyn Plugin>>) {
push_plugins!(
plugins,
TurborepoPlugin,
NxPlugin,
ChangesetsPlugin,
SyncpackPlugin,
CommitlintPlugin,
CommitizenPlugin,
SemanticReleasePlugin,
DangerPlugin,
HardhatPlugin,
VercelPlugin,
WranglerPlugin,
OpenNextCloudflarePlugin,
SentryPlugin,
HuskyPlugin,
LintStagedPlugin,
LefthookPlugin,
SimpleGitHooksPlugin,
SvgoPlugin,
SvgrPlugin,
GraphqlCodegenPlugin,
TypedocPlugin,
OpenapiTsPlugin,
PlopPlugin,
C8Plugin,
NycPlugin,
MswPlugin,
NapiRsPlugin,
OpenCodePlugin,
NodemonPlugin,
Pm2Plugin,
DependencyCruiserPlugin,
WuchalePlugin,
VarlockPlugin,
PnpmPlugin,
BunPlugin,
);
}