Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-hub / packages/newsletter/src/index.ts |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-hub |
| Revision | e0f4bf978d4df168369c7601d9c5f5ea89e84377 |
| Branch | main |
| Path or archive member | packages/newsletter/src/index.ts |
| Original SHA-256 | 6982175c022355505ff50e7f83ad62c58b3209e78bf2f8a66ffad14dc0a706e6 |
| Git blob SHA | e25eb6ef4fff3d9fa12b7f887c0785c5de9a1697 |
| Reading-copy SHA-256 | 6982175c022355505ff50e7f83ad62c58b3209e78bf2f8a66ffad14dc0a706e6 |
Recovered source transcript
Download complete source text ↓67 lines · 1.9 KB
// Main exports
export { createNewsletterProvider } from './factory'
export { KitProvider } from './providers/kit'
// Provider classes (if someone wants to use them directly)
export { MailerLiteProvider } from './providers/mailerlite'
export { SubstackProvider } from './providers/substack'
// Types
export type {
BaseProviderConfig,
KitConfig,
MailerLiteConfig,
NewsletterProvider,
NewsletterProviderInterface,
NewsletterSubscriber,
ProviderConfig,
SubscribeRequest,
SubscribeResponse,
SubstackConfig
} from './types'
// Re-export schema for validation
export { subscribeSchema } from './types'
// Import types for helper functions
import type { NewsletterProviderInterface, ProviderConfig } from './types'
// Helper to check if provider is iframe-only
export function isIframeProvider(provider: NewsletterProviderInterface): boolean {
return provider.isIframeOnly?.() ?? false
}
// Helper to get provider from environment variables
export function getProviderFromEnv(): ProviderConfig | null {
// Check for MailerLite
if (process.env.MAILERLITE_API_KEY) {
return {
provider: 'mailerlite',
apiKey: process.env.MAILERLITE_API_KEY,
defaultGroupIds: process.env.MAILERLITE_GROUP_IDS?.split(',').map(id => id.trim())
}
}
// Check for Kit (ConvertKit)
if (process.env.CONVERTKIT_API_KEY && process.env.CONVERTKIT_FORM_ID) {
return {
provider: 'kit',
apiKey: process.env.CONVERTKIT_API_KEY,
formId: process.env.CONVERTKIT_FORM_ID,
defaultTagIds: process.env.CONVERTKIT_TAG_IDS?.split(',')
.map(id => Number(id.trim()))
.filter(id => !Number.isNaN(id))
}
}
// Check for Substack
if (process.env.SUBSTACK_PUBLICATION_URL) {
return {
provider: 'substack',
publicationUrl: process.env.SUBSTACK_PUBLICATION_URL,
embedUrl: process.env.SUBSTACK_EMBED_URL
}
}
return null
}