type Feature = "user" | "payment" | "order";
type SuccessEvent<T extends string> = `${Uppercase<T>}_SUCCESS`;
type events = SuccessEvent<Feature>;
// "USER_SUCCESS" | "PAYMENT_SUCCESS" | "ORDER_SUCCESS"
type EventHandler<T extends string> = `on${Capitalize<T>}Success`;
type event_handler = EventHandler<Feature>;
// "onUserSuccess" | "onPaymentSuccess" | "onOrderSuccess"
@WebDev_Plus
