* Refactor core to use a flexible registry pattern
- Introduce a new registry mechanism for mailer providers
- Extract mailer provider enum to a separate file
- Implement dynamic mailer loading using a registry
- Update package dependencies and exports
- Improve modularity and extensibility of mailer implementation
* Refactor monitoring and billing services to use a flexible registry pattern
- Introduce a shared registry mechanism for dynamic service loading
- Replace static switch-based implementations with a registry-based approach
- Update instrumentation, CMS, and monitoring services to use the new registry
- Improve modularity and extensibility of service implementations
- Add Zod-based type-safe provider validation
* Simplify async registration in monitoring and billing services
- Remove unnecessary async wrappers for no-op registrations
- Update type definitions to support both async and sync registration functions
- Standardize registration approach for Paddle and Sentry providers
* Remove Tailwind package from packages where it is not being needed
* Remove Tailwind config references from pnpm-lock.yaml
* Update instrumentation registry to support dynamic monitoring providers
- Modify type definition to use NonNullable MonitoringProvider
- Import MonitoringProvider type from get-monitoring-provider
- Enhance type safety for instrumentation registration
The MonitoringProvider component has been simplified. The “config” prop, including 'provider' and 'providerToken', has been removed as they are no longer needed. The implementation now directly uses the getMonitoringProvider function and removed the check for 'props.config'. Conditionally rendering the BaselimeProvider component has also been simplified.
Separated and isolated the responsibilities of monitoring tools. Reorganized the code by introducing a core package that contains common code related to monitoring and moved all the service operations like error capturing and identification of users into their respective packages. This ensures each tool is independent and easy to maintain.