ThatAIguyA world of ideas

THE CONSCIOUSNESS ATLAS
Read. Experiment. Follow the evidence.

ConsciousnessLearn · Explore · Joseph Anady

Janady13/llms-txt-hub / packages/newsletter/src/types.ts

Source identity, revision, and recovered contents.

GitHub sourceSource text recovered

Source identity

FieldRecorded value
Source typeGitHub source
Original recordJanady13/llms-txt-hub / packages/newsletter/src/types.ts
DateNot specified in source
RepositoryJanady13/llms-txt-hub
Revisione0f4bf978d4df168369c7601d9c5f5ea89e84377
Branchmain
Path or archive memberpackages/newsletter/src/types.ts
Original SHA-2566c84a810f6606adbbdd3b429aab398ae20d9a6294610cc4d11f90bf2c7896339
Git blob SHAa15be3c2189653b76f78c6f11689a03769913d0d
Reading-copy SHA-256f15a320a71668cb1d5a811205b6de3abfdfe7e7e161b0ee07ddc2c20e0e91ef5

Original source ↗

Recovered source transcript

Credential-bearing and unrelated personal details were removed from this reading copy. The source identity and original checksum remain recorded.

import { z } from 'zod' // Common validation schemas - matching exactly what's in apps/web export const subscribeSchema = z.object({ email: z.string().email('Invalid email address'), groups: z.array(z.string()).optional() }) export type SubscribeRequest = z.infer<typeof subscribeSchema> // Common response format export interface NewsletterSubscriber { id: string | number email: string status: string createdAt: string updatedAt?: string groups?: string[] } export interface SubscribeResponse { success: boolean message: string subscriber?: NewsletterSubscriber error?: string } // Provider configuration export type NewsletterProvider = 'mailerlite' | 'kit' | 'substack' export interface BaseProviderConfig { provider: NewsletterProvider apiKey?: string logger?: { debug: (message: string, options?: any) => void warn: (message: string, options?: any) => void error: (message: string, options?: any) => void } } export interface MailerLiteConfig extends BaseProviderConfig { provider: 'mailerlite' apiKey: [credential removed] // Optional: fallback groups if none provided in request defaultGroupIds?: string[] } export interface KitConfig extends BaseProviderConfig { provider: 'kit' apiKey: [credential removed] formId: string // Optional: fallback tags if none provided in request defaultTagIds?: number[] } export interface SubstackConfig extends BaseProviderConfig { provider: 'substack' publicationUrl: string embedUrl?: string } export type ProviderConfig = MailerLiteConfig | KitConfig | SubstackConfig // Provider interface export interface NewsletterProviderInterface { subscribe(data: SubscribeRequest): Promise<SubscribeResponse> unsubscribe?(email: string): Promise<{ success: boolean; message: string }> getSubscriber?(email: string): Promise<NewsletterSubscriber | null> // For iframe-based providers like Substack getEmbedUrl?(): string isIframeOnly?(): boolean }

Search equations, builds, manuscript text, and recovered sources.