Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/arlyon_keyleash.json
T

1 line
29 KiB
JSON

{"repo": "arlyon/keyleash", "files": {"crates/keyleash-patterns/src/providers.rs": {"3331930ce426644bcc9c3de78dac1b60c2018935": {"t": 1785747468.4080324, "n": 12002, "h": "8874f82d6798bd3b", "c": "use crate::KeyProvider;\nuse regex::bytes::Regex;\n\nmacro_rules! define_providers {\n ($($struct_name:ident => {\n id: $id:expr,\n name: $name:expr,\n pattern: $pat:expr,\n conf: $conf:expr,\n prefixes: [$($prefix:expr),* $(,)?]\n });* $(;)?) => {\n $(\n pub struct $struct_name(Regex);\n impl $struct_name {\n pub fn new() -> Self {\n Self(Regex::new($pat).expect(concat!(\"Invalid regex for \", $id)))\n }\n }\n impl KeyProvider for $struct_name {\n fn id(&self) -> &'static str { $id }\n fn name(&self) -> &'static str { $name }\n fn regex_pattern(&self) -> &'static str { $pat }\n fn confidence(&self) -> &'static str { $conf }\n fn regex(&self) -> &Regex { &self.0 }\n }\n )*\n\n pub fn build_provider_list() -> Vec<Box<dyn KeyProvider>> {\n vec![ $( Box::new($struct_name::new()) ),* ]\n }\n };\n}\n\ndefine_providers! {\n // ═══════════════════════════════════════════════════════════════════\n // AI / LLM PROVIDERS\n // ═══════════════════════════════════════════════════════════════════\n AnthropicProvider => {\n id: \"anthropic\", name: \"Anthropic\",\n pattern: r\"sk-ant-api03-[A-Za-z0-9_-]{93}\",\n conf: \"high\",\n prefixes: [b\"sk-ant-api03-\"]\n };\n OpenAIProvider => {\n id: \"openai\", name: \"OpenAI\",\n pattern: r\"sk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}|sk-proj-[A-Za-z0-9_-]{48,180}|sk-[a-zA-Z0-9]{48}\",\n conf: \"high\",\n prefixes: [b\"sk-proj-\", b\"T3BlbkFJ\"]\n };\n GoogleAIProvider => {\n id: \"google\", name: \"Google AI\",\n pattern: r\"AIza[0-9A-Za-z_-]{35}\",\n conf: \"high\",\n prefixes: [b\"AIza\"]\n };\n GrokProvider => {\n id: \"grok\", name: \"xAI Grok\",\n pattern: r\"xai-[A-Za-z0-9]{48,}\",\n conf: \"high\",\n prefixes: [b\"xai-\"]\n };\n HuggingFaceProvider => {\n id: \"huggingface\", name: \"HuggingFace\",\n pattern: r\"hf_[A-Za-z0-9]{34,}\",\n conf: \"high\",\n prefixes: [b\"hf_\"]\n };\n ReplicateProvider => {\n id: \"replicate\", name: \"Replicate\",\n pattern: r\"r8_[A-Za-z0-9]{38,}\",\n conf: \"high\",\n prefixes: [b\"r8_\"]\n };\n PerplexityProvider => {\n id: \"perplexity\", name: \"Perplexity\",\n pattern: r\"pplx-[A-Za-z0-9]{48,}\",\n conf: \"high\",\n prefixes: [b\"pplx-\"]\n };\n GroqProvider => {\n id: \"groq\", name: \"Groq\",\n pattern: r\"gsk_[A-Za-z0-9]{52,}\",\n conf: \"high\",\n prefixes: [b\"gsk_\"]\n };\n FireworksProvider => {\n id: \"fireworks\", name: \"Fireworks AI\",\n pattern: r\"fw_[A-Za-z0-9]{32,}\",\n conf: \"high\",\n prefixes: [b\"fw_\"]\n };\n // Low-confidence, no distinctive prefix → fallback DFA\n // CohereProvider => {\n // id: \"cohere\", name: \"Cohere\",\n // pattern: r\"[a-zA-Z0-9]{40}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // MistralProvider => {\n // id: \"mistral\", name: \"Mistral AI\",\n // pattern: r\"[A-Za-z0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // TogetherAIProvider => {\n // id: \"together\", name: \"Together AI\",\n // pattern: r\"[a-f0-9]{64}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // DeepSeekProvider => {\n // id: \"deepseek\", name: \"DeepSeek\",\n // pattern: r\"sk-[a-f0-9]{32}\",\n // conf: \"medium\",\n // prefixes: []\n // };\n\n // ═══════════════════════════════════════════════════════════════════\n // CLOUD & INFRASTRUCTURE\n // ═══════════════════════════════════════════════════════════════════\n AWSAccessProvider => {\n id: \"aws\", name: \"AWS Access Key\",\n pattern: r\"AKIA[0-9A-Z]{16}\",\n conf: \"high\",\n prefixes: [b\"AKIA\"]\n };\n FirebaseProvider => {\n id: \"firebase\", name: \"Firebase\",\n pattern: r\"AAAA[A-Za-z0-9_-]{7}:[A-Za-z0-9_-]{140,}\",\n conf: \"high\",\n prefixes: [b\"AAAA\"]\n };\n SupabaseProvider => {\n id: \"supabase\", name: \"Supabase\",\n pattern: r\"eyJ[A-Za-z0-9_-]{50,}\\.eyJ[A-Za-z0-9_-]{50,}\\.[A-Za-z0-9_-]{50,}\",\n conf: \"medium\",\n prefixes: [b\"eyJ\"]\n };\n // No distinctive key prefix → fallback\n // AWSSecretProvider => {\n // id: \"aws_secret\", name: \"AWS Secret Key\",\n // pattern: r\"[A-Za-z0-9/+=]{40}\",\n // conf: \"medium\",\n // prefixes: []\n // };\n // AzureProvider => {\n // id: \"azure\", name: \"Azure\",\n // pattern: r\"[a-zA-Z0-9+/]{86}==\",\n // conf: \"medium\",\n // prefixes: []\n // };\n // VercelProvider => {\n // id: \"vercel\", name: \"Vercel\",\n // pattern: r\"[A-Za-z0-9]{24}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // NetlifyProvider => {\n // id: \"netlify\", name: \"Netlify\",\n // pattern: r\"[A-Za-z0-9_-]{40,}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // HerokuProvider => {\n // id: \"heroku\", name: \"Heroku\",\n // pattern: r\"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\",\n // conf: \"medium\",\n // prefixes: []\n // };\n\n // ═══════════════════════════════════════════════════════════════════\n // COMMUNICATION & SOCIAL\n // ═══════════════════════════════════════════════════════════════════\n SlackBotProvider => {\n id: \"slack_bot\", name: \"Slack Bot\",\n pattern: r\"xoxb-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24}\",\n conf: \"high\",\n prefixes: [b\"xoxb-\"]\n };\n SlackUserProvider => {\n id: \"slack_user\", name: \"Slack User\",\n pattern: r\"xoxp-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24,32}\",\n conf: \"high\",\n prefixes: [b\"xoxp-\"]\n };\n SlackWebhookProvider => {\n id: \"slack_webhook\", name: \"Slack Webhook\",\n pattern: r\"https://hooks\\.slack\\.com/services/T[A-Z0-9]{8,}/B[A-Z0-9]{8,}/[a-zA-Z0-9]{24}\",\n conf: \"high\",\n prefixes: [b\"hooks.slack.com\"]\n };\n SendGridProvider => {\n id: \"sendgrid\", name: \"SendGrid\",\n pattern: r\"SG\\.[A-Za-z0-9_-]{22}\\.[A-Za-z0-9_-]{43}\",\n conf: \"high\",\n prefixes: [b\"SG.\"]\n };\n MailgunProvider => {\n id: \"mailgun\", name: \"Mailgun\",\n pattern: r\"key-[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: [b\"key-\"]\n };\n TwilioProvider => {\n id: \"twilio\", name: \"Twilio\",\n pattern: r\"SK[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: []\n };\n // No reliable prefix\n MailchimpProvider => {\n id: \"mailchimp\", name: \"Mailchimp\",\n pattern: r\"[a-f0-9]{32}-us[0-9]{1,2}\",\n conf: \"high\",\n prefixes: []\n };\n DiscordBotProvider => {\n id: \"discord\", name: \"Discord\",\n pattern: r\"[MN][A-Za-z\\d]{23,}\\.[\\w-]{6}\\.[\\w-]{27,}\",\n conf: \"high\",\n prefixes: []\n };\n DiscordWebhookProvider => {\n id: \"discord_webhook\", name: \"Discord Webhook\",\n pattern: r\"https://discord(?:app)?\\.com/api/webhooks/[0-9]{17,20}/[A-Za-z0-9_-]{60,68}\",\n conf: \"high\",\n prefixes: [b\"discord.com/api/webhooks\", b\"discordapp.com/api/webhooks\"]\n };\n // TelegramProvider => {\n // id: \"telegram\", name: \"Telegram\",\n // pattern: r\"[0-9]{8,10}:[A-Za-z0-9_-]{35}\",\n // conf: \"high\",\n // prefixes: []\n // };\n\n // ═══════════════════════════════════════════════════════════════════\n // PAYMENTS\n // ═══════════════════════════════════════════════════════════════════\n StripeLiveProvider => {\n id: \"stripe_live\", name: \"Stripe Live\",\n pattern: r\"sk_live_[0-9a-zA-Z]{24,99}\",\n conf: \"high\",\n prefixes: [b\"sk_live_\"]\n };\n StripeRestrictedProvider => {\n id: \"stripe_restricted\", name: \"Stripe Restricted\",\n pattern: r\"rk_live_[0-9a-zA-Z]{24,99}\",\n conf: \"high\",\n prefixes: [b\"rk_live_\"]\n };\n PayPalProvider => {\n id: \"paypal\", name: \"PayPal\",\n pattern: r\"access_token\\$production\\$[a-z0-9]{16}\\$[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: [b\"access_token$production$\"]\n };\n SquareProvider => {\n id: \"square\", name: \"Square\",\n pattern: r\"sq0[a-z]{3}-[0-9A-Za-z_-]{22,50}\",\n conf: \"high\",\n prefixes: [b\"sq0\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // DEVELOPER & VERSION CONTROL\n // ═══════════════════════════════════════════════════════════════════\n GitHubProvider => {\n id: \"github_token\", name: \"GitHub\",\n pattern: r\"ghp_[A-Za-z0-9]{36}|gho_[A-Za-z0-9]{36}|ghu_[A-Za-z0-9]{36}|ghs_[A-Za-z0-9]{36}|ghr_[A-Za-z0-9]{36}|github_pat_[A-Za-z0-9_]{22,}\",\n conf: \"high\",\n prefixes: [b\"ghp_\", b\"gho_\", b\"ghu_\", b\"ghs_\", b\"ghr_\", b\"github_pat_\"]\n };\n GitLabProvider => {\n id: \"gitlab\", name: \"GitLab\",\n pattern: r\"glpat-[A-Za-z0-9_-]{20,}\",\n conf: \"high\",\n prefixes: [b\"glpat-\"]\n };\n NPMProvider => {\n id: \"npm\", name: \"NPM\",\n pattern: r\"npm_[A-Za-z0-9]{36}\",\n conf: \"high\",\n prefixes: [b\"npm_\"]\n };\n PyPIProvider => {\n id: \"pypi\", name: \"PyPI\",\n pattern: r\"pypi-[A-Za-z0-9_-]{50,}\",\n conf: \"high\",\n prefixes: [b\"pypi-\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // DATABASES\n // ═══════════════════════════════════════════════════════════════════\n MongoDBProvider => {\n id: \"mongodb\", name: \"MongoDB\",\n pattern: r\"mongodb\\+srv://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"mongodb+srv://\"]\n };\n PostgresProvider => {\n id: \"postgres\", name: \"PostgreSQL\",\n pattern: r\"postgres://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"postgres://\"]\n };\n MySQLProvider => {\n id: \"mysql\", name: \"MySQL\",\n pattern: r\"mysql://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"mysql://\"]\n };\n RedisProvider => {\n id: \"redis\", name: \"Redis\",\n pattern: r\"redis://[^:]*:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"redis://\"]\n };\n PlanetScaleProvider => {\n id: \"planetscale\", name: \"PlanetScale\",\n pattern: r\"pscale_tkn_[A-Za-z0-9_]{32,}\",\n conf: \"high\",\n prefixes: [b\"pscale_tkn_\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // OTHER SERVICES & KEYS\n // ═══════════════════════════════════════════════════════════════════\n MapboxProvider => {\n id: \"mapbox\", name: \"Mapbox\",\n pattern: r\"pk\\.eyJ[a-zA-Z0-9]{60,}|sk\\.eyJ[a-zA-Z0-9]{60,}\",\n conf: \"high\",\n prefixes: [b\"pk.eyJ\", b\"sk.eyJ\"]\n };\n SentryProvider => {\n id: \"sentry\", name: \"Sentry\",\n pattern: r\"https://[a-f0-9]{32}@[a-z0-9]+\\.ingest\\.sentry\\.io/[0-9]+\",\n conf: \"high\",\n prefixes: [b\".ingest.sentry.io\"]\n };\n NewRelicProvider => {\n id: \"newrelic\", name: \"New Relic\",\n pattern: r\"NRAK-[A-Z0-9]{27}\",\n conf: \"high\",\n prefixes: [b\"NRAK-\"]\n };\n DopplerProvider => {\n id: \"doppler\", name: \"Doppler\",\n pattern: r\"dp\\.pt\\.[A-Za-z0-9]{40,}\",\n conf: \"high\",\n prefixes: [b\"dp.pt.\"]\n };\n PrivateKeyProvider => {\n id: \"private_key\", name: \"Private Key\",\n pattern: r\"-----BEGIN (RSA |EC |OPENSSH |DSA )?PRIVATE KEY-----\",\n conf: \"high\",\n prefixes: [b\"-----BEGIN \", b\"-----BEGIN PRIVATE KEY\"]\n };\n // Generic low-signal keys → fallback\n // AlgoliaProvider => {\n // id: \"algolia\", name: \"Algolia\",\n // pattern: r\"[a-f0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // DatadogProvider => {\n // id: \"datadog\", name: \"Datadog\",\n // pattern: r\"[a-f0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // }\n}\n"}, "234d4773c42d5e9bfac20b69d189b7e3e5f92e72": {"t": 1785773485.4134636, "n": 11966, "h": "1080b7f8de4a827e", "c": "use crate::KeyProvider;\nuse regex::bytes::Regex;\n\nmacro_rules! define_providers {\n ($($struct_name:ident => {\n id: $id:expr,\n name: $name:expr,\n pattern: $pat:expr,\n conf: $conf:expr,\n prefixes: [$($prefix:expr),* $(,)?]\n });* $(;)?) => {\n $(\n pub struct $struct_name(Regex);\n impl $struct_name {\n pub fn new() -> Self {\n Self(Regex::new($pat).expect(concat!(\"Invalid regex for \", $id)))\n }\n }\n impl KeyProvider for $struct_name {\n fn id(&self) -> &'static str { $id }\n fn name(&self) -> &'static str { $name }\n fn regex_pattern(&self) -> &'static str { $pat }\n fn confidence(&self) -> &'static str { $conf }\n fn regex(&self) -> &Regex { &self.0 }\n }\n )*\n\n pub fn build_provider_list() -> Vec<Box<dyn KeyProvider>> {\n vec![ $( Box::new($struct_name::new()) ),* ]\n }\n };\n}\n\ndefine_providers! {\n // ═══════════════════════════════════════════════════════════════════\n // AI / LLM PROVIDERS\n // ═══════════════════════════════════════════════════════════════════\n AnthropicProvider => {\n id: \"anthropic\", name: \"Anthropic\",\n pattern: r\"sk-ant-api03-[A-Za-z0-9_-]{93}\",\n conf: \"high\",\n prefixes: [b\"sk-ant-api03-\"]\n };\n OpenAIProvider => {\n id: \"openai\", name: \"OpenAI\",\n pattern: r\"sk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}|sk-proj-[A-Za-z0-9_-]{48,180}|sk-[a-zA-Z0-9]{48}\",\n conf: \"high\",\n prefixes: [b\"sk-proj-\", b\"T3BlbkFJ\"]\n };\n GoogleAIProvider => {\n id: \"google\", name: \"Google AI\",\n pattern: r\"AIza[0-9A-Za-z_-]{35}\",\n conf: \"high\",\n prefixes: [b\"AIza\"]\n };\n GrokProvider => {\n id: \"grok\", name: \"xAI Grok\",\n pattern: r\"xai-[A-Za-z0-9]{48,}\",\n conf: \"high\",\n prefixes: [b\"xai-\"]\n };\n HuggingFaceProvider => {\n id: \"huggingface\", name: \"HuggingFace\",\n pattern: r\"hf_[A-Za-z0-9]{34,}\",\n conf: \"high\",\n prefixes: [b\"hf_\"]\n };\n ReplicateProvider => {\n id: \"replicate\", name: \"Replicate\",\n pattern: r\"r8_[A-Za-z0-9]{38,}\",\n conf: \"high\",\n prefixes: [b\"r8_\"]\n };\n PerplexityProvider => {\n id: \"perplexity\", name: \"Perplexity\",\n pattern: r\"pplx-[A-Za-z0-9]{48,}\",\n conf: \"high\",\n prefixes: [b\"pplx-\"]\n };\n GroqProvider => {\n id: \"groq\", name: \"Groq\",\n pattern: r\"gsk_[A-Za-z0-9]{52,}\",\n conf: \"high\",\n prefixes: [b\"gsk_\"]\n };\n FireworksProvider => {\n id: \"fireworks\", name: \"Fireworks AI\",\n pattern: r\"fw_[A-Za-z0-9]{32,}\",\n conf: \"high\",\n prefixes: [b\"fw_\"]\n };\n // Low-confidence, no distinctive prefix → fallback DFA\n // CohereProvider => {\n // id: \"cohere\", name: \"Cohere\",\n // pattern: r\"[a-zA-Z0-9]{40}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // MistralProvider => {\n // id: \"mistral\", name: \"Mistral AI\",\n // pattern: r\"[A-Za-z0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // TogetherAIProvider => {\n // id: \"together\", name: \"Together AI\",\n // pattern: r\"[a-f0-9]{64}\",\n // conf: \"low\",\n // prefixes: []\n // };\n DeepSeekProvider => {\n id: \"deepseek\", name: \"DeepSeek\",\n pattern: r\"sk-[a-f0-9]{32}\",\n conf: \"medium\",\n prefixes: []\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // CLOUD & INFRASTRUCTURE\n // ═══════════════════════════════════════════════════════════════════\n AWSAccessProvider => {\n id: \"aws\", name: \"AWS Access Key\",\n pattern: r\"AKIA[0-9A-Z]{16}\",\n conf: \"high\",\n prefixes: [b\"AKIA\"]\n };\n FirebaseProvider => {\n id: \"firebase\", name: \"Firebase\",\n pattern: r\"AAAA[A-Za-z0-9_-]{7}:[A-Za-z0-9_-]{140,}\",\n conf: \"high\",\n prefixes: [b\"AAAA\"]\n };\n SupabaseProvider => {\n id: \"supabase\", name: \"Supabase\",\n pattern: r\"eyJ[A-Za-z0-9_-]{50,}\\.eyJ[A-Za-z0-9_-]{50,}\\.[A-Za-z0-9_-]{50,}\",\n conf: \"medium\",\n prefixes: [b\"eyJ\"]\n };\n // No distinctive key prefix → fallback\n // AWSSecretProvider => {\n // id: \"aws_secret\", name: \"AWS Secret Key\",\n // pattern: r\"[A-Za-z0-9/+=]{40}\",\n // conf: \"medium\",\n // prefixes: []\n // };\n // AzureProvider => {\n // id: \"azure\", name: \"Azure\",\n // pattern: r\"[a-zA-Z0-9+/]{86}==\",\n // conf: \"medium\",\n // prefixes: []\n // };\n // VercelProvider => {\n // id: \"vercel\", name: \"Vercel\",\n // pattern: r\"[A-Za-z0-9]{24}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // NetlifyProvider => {\n // id: \"netlify\", name: \"Netlify\",\n // pattern: r\"[A-Za-z0-9_-]{40,}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // HerokuProvider => {\n // id: \"heroku\", name: \"Heroku\",\n // pattern: r\"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\",\n // conf: \"medium\",\n // prefixes: []\n // };\n\n // ═══════════════════════════════════════════════════════════════════\n // COMMUNICATION & SOCIAL\n // ═══════════════════════════════════════════════════════════════════\n SlackBotProvider => {\n id: \"slack_bot\", name: \"Slack Bot\",\n pattern: r\"xoxb-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24}\",\n conf: \"high\",\n prefixes: [b\"xoxb-\"]\n };\n SlackUserProvider => {\n id: \"slack_user\", name: \"Slack User\",\n pattern: r\"xoxp-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24,32}\",\n conf: \"high\",\n prefixes: [b\"xoxp-\"]\n };\n SlackWebhookProvider => {\n id: \"slack_webhook\", name: \"Slack Webhook\",\n pattern: r\"https://hooks\\.slack\\.com/services/T[A-Z0-9]{8,}/B[A-Z0-9]{8,}/[a-zA-Z0-9]{24}\",\n conf: \"high\",\n prefixes: [b\"hooks.slack.com\"]\n };\n SendGridProvider => {\n id: \"sendgrid\", name: \"SendGrid\",\n pattern: r\"SG\\.[A-Za-z0-9_-]{22}\\.[A-Za-z0-9_-]{43}\",\n conf: \"high\",\n prefixes: [b\"SG.\"]\n };\n MailgunProvider => {\n id: \"mailgun\", name: \"Mailgun\",\n pattern: r\"key-[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: [b\"key-\"]\n };\n TwilioProvider => {\n id: \"twilio\", name: \"Twilio\",\n pattern: r\"SK[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: []\n };\n // No reliable prefix\n MailchimpProvider => {\n id: \"mailchimp\", name: \"Mailchimp\",\n pattern: r\"[a-f0-9]{32}-us[0-9]{1,2}\",\n conf: \"high\",\n prefixes: []\n };\n DiscordBotProvider => {\n id: \"discord\", name: \"Discord\",\n pattern: r\"[MN][A-Za-z\\d]{23,}\\.[\\w-]{6}\\.[\\w-]{27,}\",\n conf: \"high\",\n prefixes: []\n };\n DiscordWebhookProvider => {\n id: \"discord_webhook\", name: \"Discord Webhook\",\n pattern: r\"https://discord(?:app)?\\.com/api/webhooks/[0-9]{17,20}/[A-Za-z0-9_-]{60,68}\",\n conf: \"high\",\n prefixes: [b\"discord.com/api/webhooks\", b\"discordapp.com/api/webhooks\"]\n };\n TelegramProvider => {\n id: \"telegram\", name: \"Telegram\",\n pattern: r\"[0-9]{8,10}:[A-Za-z0-9_-]{35}\",\n conf: \"high\",\n prefixes: []\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // PAYMENTS\n // ═══════════════════════════════════════════════════════════════════\n StripeLiveProvider => {\n id: \"stripe_live\", name: \"Stripe Live\",\n pattern: r\"sk_live_[0-9a-zA-Z]{24,99}\",\n conf: \"high\",\n prefixes: [b\"sk_live_\"]\n };\n StripeRestrictedProvider => {\n id: \"stripe_restricted\", name: \"Stripe Restricted\",\n pattern: r\"rk_live_[0-9a-zA-Z]{24,99}\",\n conf: \"high\",\n prefixes: [b\"rk_live_\"]\n };\n PayPalProvider => {\n id: \"paypal\", name: \"PayPal\",\n pattern: r\"access_token\\$production\\$[a-z0-9]{16}\\$[a-f0-9]{32}\",\n conf: \"high\",\n prefixes: [b\"access_token$production$\"]\n };\n SquareProvider => {\n id: \"square\", name: \"Square\",\n pattern: r\"sq0[a-z]{3}-[0-9A-Za-z_-]{22,50}\",\n conf: \"high\",\n prefixes: [b\"sq0\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // DEVELOPER & VERSION CONTROL\n // ═══════════════════════════════════════════════════════════════════\n GitHubProvider => {\n id: \"github_token\", name: \"GitHub\",\n pattern: r\"ghp_[A-Za-z0-9]{36}|gho_[A-Za-z0-9]{36}|ghu_[A-Za-z0-9]{36}|ghs_[A-Za-z0-9]{36}|ghr_[A-Za-z0-9]{36}|github_pat_[A-Za-z0-9_]{22,}\",\n conf: \"high\",\n prefixes: [b\"ghp_\", b\"gho_\", b\"ghu_\", b\"ghs_\", b\"ghr_\", b\"github_pat_\"]\n };\n GitLabProvider => {\n id: \"gitlab\", name: \"GitLab\",\n pattern: r\"glpat-[A-Za-z0-9_-]{20,}\",\n conf: \"high\",\n prefixes: [b\"glpat-\"]\n };\n NPMProvider => {\n id: \"npm\", name: \"NPM\",\n pattern: r\"npm_[A-Za-z0-9]{36}\",\n conf: \"high\",\n prefixes: [b\"npm_\"]\n };\n PyPIProvider => {\n id: \"pypi\", name: \"PyPI\",\n pattern: r\"pypi-[A-Za-z0-9_-]{50,}\",\n conf: \"high\",\n prefixes: [b\"pypi-\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // DATABASES\n // ═══════════════════════════════════════════════════════════════════\n MongoDBProvider => {\n id: \"mongodb\", name: \"MongoDB\",\n pattern: r\"mongodb\\+srv://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"mongodb+srv://\"]\n };\n PostgresProvider => {\n id: \"postgres\", name: \"PostgreSQL\",\n pattern: r\"postgres://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"postgres://\"]\n };\n MySQLProvider => {\n id: \"mysql\", name: \"MySQL\",\n pattern: r\"mysql://[^:]+:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"mysql://\"]\n };\n RedisProvider => {\n id: \"redis\", name: \"Redis\",\n pattern: r\"redis://[^:]*:[^@]+@[^\\s]+\",\n conf: \"high\",\n prefixes: [b\"redis://\"]\n };\n PlanetScaleProvider => {\n id: \"planetscale\", name: \"PlanetScale\",\n pattern: r\"pscale_tkn_[A-Za-z0-9_]{32,}\",\n conf: \"high\",\n prefixes: [b\"pscale_tkn_\"]\n };\n\n // ═══════════════════════════════════════════════════════════════════\n // OTHER SERVICES & KEYS\n // ═══════════════════════════════════════════════════════════════════\n MapboxProvider => {\n id: \"mapbox\", name: \"Mapbox\",\n pattern: r\"pk\\.eyJ[a-zA-Z0-9]{60,}|sk\\.eyJ[a-zA-Z0-9]{60,}\",\n conf: \"high\",\n prefixes: [b\"pk.eyJ\", b\"sk.eyJ\"]\n };\n SentryProvider => {\n id: \"sentry\", name: \"Sentry\",\n pattern: r\"https://[a-f0-9]{32}@[a-z0-9]+\\.ingest\\.sentry\\.io/[0-9]+\",\n conf: \"high\",\n prefixes: [b\".ingest.sentry.io\"]\n };\n NewRelicProvider => {\n id: \"newrelic\", name: \"New Relic\",\n pattern: r\"NRAK-[A-Z0-9]{27}\",\n conf: \"high\",\n prefixes: [b\"NRAK-\"]\n };\n DopplerProvider => {\n id: \"doppler\", name: \"Doppler\",\n pattern: r\"dp\\.pt\\.[A-Za-z0-9]{40,}\",\n conf: \"high\",\n prefixes: [b\"dp.pt.\"]\n };\n PrivateKeyProvider => {\n id: \"private_key\", name: \"Private Key\",\n pattern: r\"-----BEGIN (RSA |EC |OPENSSH |DSA )?PRIVATE KEY-----\",\n conf: \"high\",\n prefixes: [b\"-----BEGIN \", b\"-----BEGIN PRIVATE KEY\"]\n };\n // Generic low-signal keys → fallback\n // AlgoliaProvider => {\n // id: \"algolia\", name: \"Algolia\",\n // pattern: r\"[a-f0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // };\n // DatadogProvider => {\n // id: \"datadog\", name: \"Datadog\",\n // pattern: r\"[a-f0-9]{32}\",\n // conf: \"low\",\n // prefixes: []\n // }\n}\n"}}}}