alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
134 lines (130 loc) • 4.25 kB
text/typescript
import { $module } from "alepha";
import { AdminSubscriptionController } from "./controllers/AdminSubscriptionController.ts";
import { SubscriptionController } from "./controllers/SubscriptionController.ts";
import { SubscriptionJobs } from "./jobs/SubscriptionJobs.ts";
import { SubscriptionNotifications } from "./notifications/SubscriptionNotifications.ts";
import { BillingService } from "./services/BillingService.ts";
import { SubscriptionConfig } from "./services/SubscriptionConfig.ts";
import { SubscriptionService } from "./services/SubscriptionService.ts";
import { UsageService } from "./services/UsageService.ts";
// Controllers
export * from "./controllers/AdminSubscriptionController.ts";
export * from "./controllers/SubscriptionController.ts";
// Entities
export * from "./entities/subscriptionEvents.ts";
export * from "./entities/subscriptions.ts";
// Jobs
export * from "./jobs/SubscriptionJobs.ts";
// Middleware
export * from "./middleware/$requireLimit.ts";
export * from "./middleware/$requirePlan.ts";
// Notifications
export * from "./notifications/SubscriptionNotifications.ts";
// Schemas
export * from "./schemas/cancelSubscriptionSchema.ts";
export * from "./schemas/changePlanSchema.ts";
export * from "./schemas/createSubscriptionSchema.ts";
export * from "./schemas/entitlementsSchema.ts";
export * from "./schemas/mrrSchema.ts";
export * from "./schemas/planDefinitionSchema.ts";
export * from "./schemas/planResourceSchema.ts";
export * from "./schemas/subscriptionEventResourceSchema.ts";
export * from "./schemas/subscriptionQuerySchema.ts";
export * from "./schemas/subscriptionResourceSchema.ts";
export * from "./schemas/subscriptionSettingsSchema.ts";
export * from "./schemas/subscriptionStatsSchema.ts";
// Services
export * from "./services/BillingService.ts";
export * from "./services/SubscriptionConfig.ts";
export * from "./services/SubscriptionService.ts";
export * from "./services/UsageService.ts";
declare module "alepha" {
interface Hooks {
"subscription:created": {
subscriptionId: string;
organizationId: string;
planId: string;
trial: boolean;
};
"subscription:activated": {
subscriptionId: string;
organizationId: string;
planId: string;
};
"subscription:renewed": {
subscriptionId: string;
organizationId: string;
planId: string;
amount: number;
currency: string;
};
"subscription:cancelled": {
subscriptionId: string;
organizationId: string;
planId: string;
reason?: string;
immediate: boolean;
};
"subscription:expired": {
subscriptionId: string;
organizationId: string;
planId: string;
};
"subscription:resumed": {
subscriptionId: string;
organizationId: string;
planId: string;
};
"subscription:plan_changed": {
subscriptionId: string;
organizationId: string;
oldPlanId: string;
newPlanId: string;
immediate: boolean;
};
"subscription:payment_failed": {
subscriptionId: string;
organizationId: string;
planId: string;
attempt: number;
};
"subscription:suspended": {
subscriptionId: string;
organizationId: string;
planId: string;
};
"subscription:reactivated": {
subscriptionId: string;
organizationId: string;
planId: string;
};
"subscription:trial_ending": {
subscriptionId: string;
organizationId: string;
planId: string;
endsAt: string;
};
}
}
/**
* Subscription management module — plan-based access control, billing integration,
* usage limits, and lifecycle events (trial, renewal, cancellation, suspension).
*
* Depends on `AlephaPayments` for payment processing — register it in your app
* alongside this module. Use `SubscriptionConfig` to declare your plans and limits.
*
* @module alepha.api.subscriptions
*/
export const AlephaApiSubscriptions = $module({
name: "alepha.api.subscriptions",
services: [
SubscriptionConfig,
SubscriptionService,
BillingService,
UsageService,
SubscriptionJobs,
SubscriptionNotifications,
SubscriptionController,
AdminSubscriptionController,
],
});