Skip to main content

stackless_integrations/providers/
mod.rs

1pub mod agentmail;
2pub mod agentphone;
3pub mod amplitude;
4pub mod auth0;
5pub mod base44_projects;
6pub mod blaxel;
7pub mod browserbase;
8pub mod chatbase;
9pub mod clerk;
10pub mod clickhouse;
11pub mod cloudflare;
12pub mod composio;
13pub mod customerio;
14pub mod datadog;
15pub mod depot;
16pub mod e2b;
17pub mod elevenlabs;
18pub mod exa;
19pub mod firecrawl;
20pub mod flyio;
21pub mod gitlab;
22pub mod huggingface;
23pub mod inngest;
24pub mod kernel;
25pub mod laravel_cloud;
26pub mod metronome;
27pub mod mixpanel;
28pub mod neon;
29pub mod openrouter;
30pub mod parallel;
31pub mod planetscale;
32pub mod postalform;
33pub mod posthog;
34pub mod prisma;
35pub mod pydantic;
36pub mod railway;
37pub mod render_db;
38pub mod revenuecat;
39pub mod runloop;
40pub mod schematic;
41pub mod sentry;
42pub mod shopify;
43pub mod steel;
44pub mod supabase;
45pub mod supermemory;
46pub mod tabstack;
47pub mod turso;
48pub mod upstash;
49pub mod wix;
50pub mod wordpress_com;
51pub mod workos;
52
53#[cfg(test)]
54mod tests {
55    use stackless_provider_sdk::CatalogResource;
56    use stackless_provider_sdk::Hostable;
57
58    use crate::providers::{
59        agentmail, agentphone, amplitude, auth0, base44_projects, blaxel, browserbase, chatbase,
60        clickhouse, cloudflare, composio, customerio, datadog, depot, e2b, elevenlabs, exa,
61        firecrawl, flyio, gitlab, huggingface, inngest, kernel, laravel_cloud, metronome, mixpanel,
62        neon, openrouter, parallel, planetscale, postalform, posthog, prisma, pydantic, railway,
63        render_db, revenuecat, runloop, schematic, sentry, shopify, steel, supabase, supermemory,
64        tabstack, turso, upstash, wix, wordpress_com, workos,
65    };
66
67    fn assert_outputs_match<T: CatalogResource>() {
68        let fields: Vec<&str> = T::OUTPUT_FIELDS.iter().map(|(_, name, _)| *name).collect();
69        let outputs: Vec<&str> = <T as Hostable>::OUTPUTS.to_vec();
70        assert_eq!(
71            outputs,
72            fields,
73            "{}: Hostable::OUTPUTS drifted from CatalogResource::OUTPUT_FIELDS names",
74            T::PROVIDER
75        );
76    }
77
78    #[test]
79    fn catalog_outputs_match_output_fields() {
80        assert_outputs_match::<cloudflare::r2::CloudflareR2>();
81        assert_outputs_match::<cloudflare::kv::CloudflareKv>();
82        assert_outputs_match::<cloudflare::d1::CloudflareD1>();
83        assert_outputs_match::<cloudflare::queues::CloudflareQueues>();
84        assert_outputs_match::<cloudflare::hyperdrive::CloudflareHyperdrive>();
85        assert_outputs_match::<cloudflare::workers::CloudflareWorkers>();
86        assert_outputs_match::<cloudflare::workers_ai::CloudflareWorkersAi>();
87        assert_outputs_match::<cloudflare::browser_run::CloudflareBrowserRun>();
88        assert_outputs_match::<agentmail::api::AgentMailApi>();
89        assert_outputs_match::<agentphone::number::AgentPhoneNumber>();
90        assert_outputs_match::<amplitude::analytics::AmplitudeAnalytics>();
91        assert_outputs_match::<auth0::client::Auth0Client>();
92        assert_outputs_match::<base44_projects::app::Base44ProjectsApp>();
93        assert_outputs_match::<blaxel::sandbox::BlaxelSandbox>();
94        assert_outputs_match::<browserbase::project::BrowserbaseProject>();
95        assert_outputs_match::<chatbase::agent::ChatbaseAgent>();
96        assert_outputs_match::<clickhouse::cluster::ClickHouseClickhouse>();
97        assert_outputs_match::<clickhouse::postgres::ClickHousePostgres>();
98        assert_outputs_match::<composio::project::ComposioProject>();
99        assert_outputs_match::<customerio::workspace::CustomerioWorkspace>();
100        assert_outputs_match::<datadog::observability::DatadogObservability>();
101        assert_outputs_match::<depot::api::DepotApi>();
102        assert_outputs_match::<e2b::sandbox::E2BSandbox>();
103        assert_outputs_match::<elevenlabs::tts::ElevenLabsTts>();
104        assert_outputs_match::<exa::api::ExaApi>();
105        assert_outputs_match::<firecrawl::api::FirecrawlApi>();
106        assert_outputs_match::<flyio::mpg::FlyioMpg>();
107        assert_outputs_match::<flyio::sprite::FlyioSprite>();
108        assert_outputs_match::<gitlab::project::GitLabProject>();
109        assert_outputs_match::<huggingface::bucket::HuggingFaceBucket>();
110        assert_outputs_match::<huggingface::platform::HuggingFacePlatform>();
111        assert_outputs_match::<inngest::app::InngestApp>();
112        assert_outputs_match::<kernel::project::KERNELProject>();
113        assert_outputs_match::<laravel_cloud::application::LaravelCloudApplication>();
114        assert_outputs_match::<laravel_cloud::mysql::LaravelCloudMysql>();
115        assert_outputs_match::<laravel_cloud::valkey::LaravelCloudValkey>();
116        assert_outputs_match::<metronome::sandbox::MetronomeSandbox>();
117        assert_outputs_match::<mixpanel::analytics::MixpanelAnalytics>();
118        assert_outputs_match::<neon::postgres::NeonPostgres>();
119        assert_outputs_match::<openrouter::api::OpenRouterApi>();
120        assert_outputs_match::<parallel::api::ParallelApi>();
121        assert_outputs_match::<planetscale::mysql::PlanetScaleMysql>();
122        assert_outputs_match::<planetscale::postgresql::PlanetScalePostgresql>();
123        assert_outputs_match::<postalform::mail::PostalFormMail>();
124        assert_outputs_match::<posthog::analytics::PostHogAnalytics>();
125        assert_outputs_match::<prisma::database::PrismaDatabase>();
126        assert_outputs_match::<pydantic::logfire::PydanticLogfire>();
127        assert_outputs_match::<railway::bucket::RailwayBucket>();
128        assert_outputs_match::<railway::hosting::RailwayHosting>();
129        assert_outputs_match::<railway::mongo::RailwayMongo>();
130        assert_outputs_match::<railway::postgres::RailwayPostgres>();
131        assert_outputs_match::<railway::redis::RailwayRedis>();
132        assert_outputs_match::<render_db::postgres::RenderPostgres>();
133        assert_outputs_match::<revenuecat::app::RevenuecatApp>();
134        assert_outputs_match::<runloop::sandbox::RunloopSandbox>();
135        assert_outputs_match::<schematic::schematic_environment::SchematicEnvironment>();
136        assert_outputs_match::<sentry::project::SentryProject>();
137        assert_outputs_match::<sentry::seer::SentrySeer>();
138        assert_outputs_match::<shopify::store::ShopifyStore>();
139        assert_outputs_match::<steel::browser::SteelBrowser>();
140        assert_outputs_match::<supabase::project::SupabaseProject>();
141        assert_outputs_match::<supermemory::memory::SupermemoryMemory>();
142        assert_outputs_match::<tabstack::api::TabstackApi>();
143        assert_outputs_match::<turso::database::TursoDatabase>();
144        assert_outputs_match::<upstash::qstash::UpstashQstash>();
145        assert_outputs_match::<upstash::redis::UpstashRedis>();
146        assert_outputs_match::<upstash::search::UpstashSearch>();
147        assert_outputs_match::<upstash::vector::UpstashVector>();
148        assert_outputs_match::<wix::headless::WixHeadless>();
149        assert_outputs_match::<wordpress_com::site::WordPressComSite>();
150        assert_outputs_match::<workos::auth::WorkOSAuth>();
151    }
152}