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